ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

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

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

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

Сообщение puf » 07 июл 2017, 11:48

Приветствую вас, коллеги.
Помогите разобраться в синтаксисе правильном.
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

Мож кто сможет подсказать где ошибка ? Спасибо.
puf
 
Сообщений: 83
Зарегистрирован: 03 апр 2013, 11:05

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

Сообщение Repz » 07 июл 2017, 13:31

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', 'Влад');
Repz
 
Сообщений: 169
Зарегистрирован: 04 мар 2015, 12:35

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

Сообщение virus_net » 07 июл 2017, 17:21

Ну прямо чудеса чудесные :) А чудес, как известно, не бывает.
Что если запрос:
Код: выделить все
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 - звони бесплатно и напрямую.
virus_net
 
Сообщений: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

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

Сообщение puf » 10 июл 2017, 11:10

Спасибо за объяснение.
решилось так
Код: выделить все
exten => _[3-7-8-9]X,n(avaya),Set(CALLERID(name)=${ODBC_RUSNAME(${CALLERID(num)})})
puf
 
Сообщений: 83
Зарегистрирован: 03 апр 2013, 11:05


Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH