VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

callerid на телефоне отображается собственное имя

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Ответить
puf
Сообщения: 83
Зарегистрирован: 03 апр 2013, 11:05

callerid на телефоне отображается собственное имя

Сообщение puf »

Всем хорошего настроения!
Помогите разобраться в синтаксисе правильном.
asterisk 12.7 +mariadb + odbc.
При звонке что бы подставлялись в Caller ID русские буквы из бд mariadb + odbc.
БД называется asterbook
В ней таблица addressbook с параматрами

Код: Выделить всё

CREATE TABLE addressbook (
    phone_number VARCHAR(40),
    name VARCHAR(40),
    PRIMARY KEY(phone_number)
)  ENGINE=InnoDB DEFAULT CHARSET=utf8;
Заношу данные в таблицу

Код: Выделить всё

INSERT INTO addressbook VALUES ('86', 'Федор');
INSERT INTO addressbook VALUES ('85', 'Гриша');
INSERT INTO addressbook VALUES ('2099', 'Влад');
в func_odbc.conf

Код: Выделить всё

[RUSNAME]
dsn=asterbook
readsql=SELECT name FROM addressbook WHERE phone_number='${ARG1}'
в extensions.conf
если подставлять имена из mysql напрямую, то все гуд

Код: Выделить всё

exten => _[3-7-8-9]X,1,NoOp()
exten => _[3-7-8-9]X,n,Noop(Now Caller ID is ${CALLERID(all)} that mean CID name = ${CALLERID(name)} and CID num = ${CALLERID(num)})
exten => _[3-7-8-9]X,n,GotoIf($[${CALLERID(num)}>999 & ${CALLERID(num)}<4234]?avaya:noavaya)
exten => _[3-7-8-9]X,n(avaya),MYSQL(Connect connid localhost root *** asterbook)
exten => _[3-7-8-9]X,n(avaya),MYSQL(Query resultid ${connid} SELECT name FROM addressbook WHERE phone_number=${CALLERID(num)})
exten => _[3-7-8-9]X,n(avaya),MYSQL(Fetch fetchid ${resultid} name)
exten => _[3-7-8-9]X,n(avaya),Set(CALLERID(name)=${name})
exten => _[3-7-8-9]X,n(avaya),MYSQL(Clear ${resultid})
exten => _[3-7-8-9]X,n(avaya),MYSQL(Disconnect ${connid})
exten => _[3-7-8-9]X,n(avaya),Dial(SIP/${EXTEN},20)
exten => _[3-7-8-9]X,n(avaya),Hangup()
в консоле при звонке с номера 2099 на номер 85

Код: Выделить всё

   -- Executing [85@vnutri:1] NoOp("H323/ip$192.168.0.96:39075/24", "") in new stack
    -- Executing [85@vnutri:2] NoOp("H323/ip$192.168.0.96:39075/24", "Now Caller ID is "????>85" <2099> that mean CID name = ????>85 and CID num = 2099") in new stack
    -- Executing [85@vnutri:3] GotoIf("H323/ip$192.168.0.96:39075/24", "1?avaya:noavaya") in new stack
    -- Goto (vnutricmtu,85,4)
    -- Executing [85@vnutri:4] MYSQL("H323/ip$192.168.0.96:39075/24", "Connect connid localhost root *** asterbook") in new stack
    -- Executing [85@vnutri:5] MYSQL("H323/ip$192.168.0.96:39075/24", "Query resultid 1 SELECT name FROM addressbook WHERE phone_number=2099") in new stack
    -- Executing [85@vnutri:6] MYSQL("H323/ip$192.168.0.96:39075/24", "Fetch fetchid 2 name") in new stack
    -- Executing [85@vnutri:7] Set("H323/ip$192.168.0.96:39075/24", "CALLERID(name)=Влад") in new stack
    -- Executing [85@vnutri:8] MYSQL("H323/ip$192.168.0.96:39075/24", "Clear 2") in new stack
    -- Executing [85@vnutri:9] MYSQL("H323/ip$192.168.0.96:39075/24", "Disconnect 1") in new stack
    -- Executing [85@vnutri:10] Dial("H323/ip$192.168.0.96:39075/24", "SIP/85,20") in new stack
  == Using SIP RTP CoS mark 5
    -- Called SIP/85
    -- SIP/85-00000058 is ringing
Если пытаюсь сделать связку с odbc, то у кого звонит телефон высвечивается его же имя.Т.е при звонке с 2099 на 85, на телефоне с номером 85 на дисплее имя Гриша
extensions.conf

Код: Выделить всё

exten => _[3-7-8-9]X,1,NoOp()
exten => _[3-7-8-9]X,n,Noop(Now Caller ID is ${CALLERID(all)} that mean CID name = ${CALLERID(name)} and CID num = ${CALLERID(num)})
exten => _[3-7-8-9]X,n,GotoIf($[${CALLERID(num)}>999 & ${CALLERID(num)}<4234]?avaya:noavaya)
exten => _[3-7-8-9]X,n(avaya),Set(CALLERID(name)=${ODBC_RUSNAME(${EXTEN})})
exten => _[3-7-8-9]X,n(avaya),Dial(SIP/${EXTEN},20)
exten => _[3-7-8-9]X,n(avaya),Hangup()
в консоле

Код: Выделить всё

    -- Executing [85@vnutricmtu:1] NoOp("H323/ip$192.168.0.96:39761/29", "") in new stack
    -- Executing [85@vnutri:2] NoOp("H323/ip$192.168.0.96:39761/29", "Now Caller ID is "????>85" <2099> that mean CID name = ????>85 and CID num = 2099") in new stack
    -- Executing [85@vnutri:3] GotoIf("H323/ip$192.168.0.96:39761/29", "1?avaya:noavaya") in new stack
    -- Goto (vnutri,85,4)
    -- Executing [85@vnutri:4] Set("H323/ip$192.168.0.96:39761/29", "CALLERID(name)=Гриша") in new stack
    -- Executing [85@vnutri:5] Dial("H323/ip$192.168.0.96:39761/29", "SIP/85,20") in new stack
  == Using SIP RTP CoS mark 5
    -- Called SIP/85
    -- SIP/85-0000005d is ringing
Мож кто сможет подсказать где ошибка ? Спасибо.
Repz
Сообщения: 169
Зарегистрирован: 04 мар 2015, 11:35

Re: callerid на телефоне отображается собственное имя

Сообщение Repz »

puf писал(а):xten => _[3-7-8-9]X,n(avaya),Set(CALLERID(name)=${ODBC_RUSNAME(${EXTEN})})
в переводе на русский ${ODBC_RUSNAME(${EXTEN}) будет ${ODBC_RUSNAME(85), который addressbook VALUES ('85', 'Гриша');
как только сделаете ${ODBC_RUSNAME(2099) получится VALUES ('2099', 'Влад');
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: callerid на телефоне отображается собственное имя

Сообщение virus_net »

Ну прямо чудеса чудесные :) А чудес, как известно, не бывает.
Что если запрос:

Код: Выделить всё

SELECT `name` FROM `asterbook`.`addressbook` WHERE `phone_number`='2099';
Выполнить руками ? В phpmyadmin или в CLI mysql. Что возвращается ?

P.S. К запросу я бы ещё добавил ORDER BY `phone_number` LIMIT 0,1, ещё лучше добавил бы колонку id (autoincrement) и ордерил бы по ней.
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
puf
Сообщения: 83
Зарегистрирован: 03 апр 2013, 11:05

Re: callerid на телефоне отображается собственное имя

Сообщение puf »

Спасибо за объяснение.
решилось так

Код: Выделить всё

exten => _[3-7-8-9]X,n(avaya),Set(CALLERID(name)=${ODBC_RUSNAME(${CALLERID(num)})})
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH