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

D-Link DVG-6004S & Caller ID

Вопросы по использованию и настройке IP телефонов, шлюзов и всего прочего

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

D-Link DVG-6004S & Caller ID

Сообщение shumiloff » 18 ноя 2010, 20:58

Приветствую вас, коллеги.

Столкнулся с проблемой, которую не смог разрешить, не смотря на чтение мануалов, форумов и т.п.. Опыта ещё мало, поэтому буду очень признателен за любую помощь.

Есть внешняя линия, подключенная к первому FXO порту шлюза. На каждый порт зарегистрирован сип аккаунт.

Caller ID:
Отмечено FXO Caller ID Detection
ETSI

В настройках телефонии горячий номер - прописано 1000
Отмечено Wait for Caller ID before FXO / Trunk pick up

В СИП на первый fxo прописан аккаунт с именем dvg1

SIP Caller ID Obtaining - From-Header User Name
Отмечен Put Caller ID In URI

Подключаюсь к DVG при помощи slmonitor, вижу, что шлюз корректно получает от оператора Caller ID, но в астериск его не отдаёт.

-- Executing [1000@incoming:1] Answer("SIP/dvg1-028d6028", "") in new stack
[Nov 18 19:45:30] WARNING[36491]: rtp.c:1481 ast_rtp_read: RTP Read too short
[Nov 18 19:45:30] WARNING[36491]: rtp.c:1481 ast_rtp_read: RTP Read too short
-- Executing [1000@incoming:3] BackGround("SIP/dvg1-028d6028", "hello-world") in new stack
-- <SIP/dvg1-028d6028> Playing 'hello-world.gsm' (language 'en')
[Nov 18 19:45:30] WARNING[36491]: translate.c:168 framein: no samples for alawtolin
-- Auto fallthrough, channel 'SIP/dvg1-028d6028' status is 'UNKNOWN'


В связи со всем вышеизложенным, возникло несколько вопросов:
1. Должен ли в Answer вторым параметром выводиться Caller ID?
2. Необходимо ли использование скриптов для работы с CallerID или я могу использовать $CALLERID(name) без них, для того чтобы например сформировать имя файла через set?
3. Нужно ли делать транк, если я не собираюсь звонить через DVG наружу, а мне только нужно принимать звонки? Нужен ли транк для корректного приёма Caller ID?
4. Нужно ли, чтобы существовал sip аккаунт с номером 1000, или вполне достаточно того, что я обрабатываю экстенжн с этим номером?
5. Что означает ast_rtp_read: RTP Read too short и связано ли оно каким-то образом с Caller ID?
shumiloff
 
Сообщений: 60
Зарегистрирован: 18 ноя 2010, 20:04

Re: D-Link DVG-6004S & Caller ID

Сообщение ded » 18 ноя 2010, 21:47

Поставьте в сценарии контекста incoming операнд NoOp вывести CallerID.
NoOp(CallerID=${CallerID(all)})
В текущем виде показывает соединения SIP каналов
Код: выделить все
-- Executing [1000@incoming:1] Answer("SIP/dvg1-028d6028", "") in new stack

3. Да. Нет.
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

Re: D-Link DVG-6004S & Caller ID

Сообщение shumiloff » 19 ноя 2010, 09:34

ded писал(а):Поставьте в сценарии контекста incoming операнд NoOp вывести CallerID.
NoOp(CallerID=${CallerID(all)})
В текущем виде показывает соединения SIP каналов
Код: выделить все
-- Executing [1000@incoming:1] Answer("SIP/dvg1-028d6028", "") in new stack



Благодарю за ответ!
На NoOp астериск выдал следующее:
Код: выделить все
[Nov 19 07:47:51] ERROR[36491]: pbx.c:2779 ast_func_read: Function CallerID not registered
    -- Executing [1000@incoming:2] NoOp("SIP/dvg1-028d6028", "CallerID=") in new stack


Теперь хоть понятно, в какую сторону копать. Посмотрел содержимое директории с модулями:
Код: выделить все
ats# pwd
/usr/local/lib/asterisk/modules
ats# ls -1 | grep callerid
app_setcallerid.so
func_callerid.so


Модуль имеется. Прописал в modules.conf:
Код: выделить все
load => func_callerid.so


Перезагрузил астериск - вывод тот же. ast_func_read: Function CallerID not registered

Хотя саму функцию я вижу:
Код: выделить все
ats*CLI> core show function CALLERID
ats*CLI>
  -= Info about function 'CALLERID' =-

[Syntax]
CALLERID(datatype[,<optional-CID>])

[Synopsis]
Gets or sets Caller*ID data on the channel.

[Description]
Gets or sets Caller*ID data on the channel.  The allowable datatypes
are "all", "name", "num", "ANI", "DNID", "RDNIS", "pres",
and "ton".
Uses channel callerid by default or optional callerid, if specified.


Делаю следующий диалплан, чтобы проверить:
Код: выделить все
[incoming]                                                                                                                                                               
                                                                                                                                                                         
exten => 1000,1,Answer()                                                                                                                                                 
exten => 1000,n,Set(fname=${CALLERID(all)})                                                                                                                               
exten => 1000,n,Answer()                                                                                                                                                 
;exten => 1000,n,NoOp(CallerID=${CallerID(all)})                                                                                                                         
exten => 1000,n,MixMonitor(/home/audio/${fname}.wav)                                                                                                             
exten => 1000,n,Background(hello-world)


В результате значение CallerID(all) оказывается пустым:

Код: выделить все
    -- Executing [1000@incoming:1] Answer("SIP/dvg1-02865028", "") in new stack
    -- Executing [1000@incoming:2] Answer("SIP/dvg1-02865028", "") in new stack
    -- Executing [1000@incoming:3] MixMonitor("SIP/dvg1-02865028", "/home/audio/.wav") in new stack
    -- Executing [1000@incoming:4] BackGround("SIP/dvg1-02865028", "hello-world") in new stack
  == Begin MixMonitor Recording SIP/dvg1-02865028
    -- <SIP/dvg1-02865028> Playing 'hello-world.gsm' (language 'en')
[Nov 19 08:28:50] WARNING[75412]: rtp.c:1481 ast_rtp_read: RTP Read too short
[Nov 19 08:28:50] WARNING[75412]: rtp.c:1481 ast_rtp_read: RTP Read too short
    -- Auto fallthrough, channel 'SIP/dvg1-02865028' status is 'UNKNOWN'
  == MixMonitor close filestream
  == End MixMonitor Recording SIP/dvg1-02865028



3. Да. Нет.


А чем описание транка идеологически отличается от описания обычного SIP юзера? Вот моё описание учёток для портов длинка:
Код: выделить все
[dsets](!)                                                                                                                                                               
type=friend                                                                                                                                                               
host=dynamic                                                                                                                                                             
secret=tutkakoitopasswd                                                                                                                                                             
nat=yes                                                                                                                                                                   
context=incoming                                                                                                                                                         
disallow=all                                                                                                                                                             
allow=alaw                                                                                                                                                               
allow=ulaw                                                                                                                                                               
allow=gsm                                                                                                                                                                 
usecallerid=yes                                                                                                                                                           
hidecallerid=no                                                                                                                                                                                                                                                                                                                                                 
[dvg0](dsets)                                                                                                                                                             
username=dvg0                                                                                                                                                           
                                                                                                                                                                         
[dvg1](dsets)                                                                                                                                                             
username=dvg1                                                                                                                                                             
                                                                                                                                                                         
[dvg2](dsets)                                                                                                                                                             
username=dvg2


Чем оно отличается от транка?
shumiloff
 
Сообщений: 60
Зарегистрирован: 18 ноя 2010, 20:04

Re: D-Link DVG-6004S & Caller ID

Сообщение shumiloff » 19 ноя 2010, 09:55

switch писал(а):плохо мануалы читаете, товарищ!
http://lynks.ru/blog/nastroika-voip-shl ... k-dvg-xxxx


За этот мануал спасибо Вам большое, я его читал несколько раз. Это было первое, что я нашёл по связке dvg и asterisk. Кое в чём помогло. Но как раз после чтения и возник вопрос - обязательно ли создавать транк и чем транк отличается от учётки рядового пользователя.
shumiloff
 
Сообщений: 60
Зарегистрирован: 18 ноя 2010, 20:04

Re: D-Link DVG-6004S & Caller ID

Сообщение shumiloff » 19 ноя 2010, 11:35

switch писал(а):Транк в общем случае мало отличается от пользовательской учетки, но если пользуетесь freepbx, то нужно делать как транк. Если не пользуетесь - то тут уже зависит от вас, как повернете, так и будет.


Нет, не пользуюсь.

Еще момент: шлюз может отдавать callerid в поле для имени звонящего, тогда как в номере будет номер транка.


Об этом я знаю, уже где-то читал. Поэтому на начальной стадии пытаюсь добыть CALLERID(all)


PS: функцию нужно писать как CALLERID()
http://voip.rus.net/tiki-index.php?page ... n+commands


Алилуйа!!! Спасибо огромное! В этом и была проблема. Теперь астериск корректно получает CallerID от шлюза.

Благодарю всех за потраченное на меня время. :)
shumiloff
 
Сообщений: 60
Зарегистрирован: 18 ноя 2010, 20:04

Re: D-Link DVG-6004S & Caller ID

Сообщение ded » 19 ноя 2010, 11:40

load => func_callerid.so - это не надо, там у вас autoload стоит, то есть грузить все модули, которые есть в директории.
Да ошибка в указании с регистром:
exten => 1000,n,NoOpt(CallerID=${CALLERID(all)})

А зачем два раза Answer?

exten => 1000,1,Answer()
exten => 1000,n,Set(fname=${CALLERID(all)}) - неверное присвоение. В результате этой операции в переменной fname будет текущее значение CallerID, типа "12233445" <1223445>
exten => 1000,n,Answer() ????
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

Re: D-Link DVG-6004S & Caller ID

Сообщение shumiloff » 19 ноя 2010, 12:18

ded писал(а):load => func_callerid.so - это не надо, там у вас autoload стоит, то есть грузить все модули, которые есть в директории.
Да ошибка в указании с регистром:
exten => 1000,n,NoOpt(CallerID=${CALLERID(all)})

А зачем два раза Answer?


Два раза - это моя ошибка. На скорую руку делал.

exten => 1000,n,Set(fname=${CALLERID(all)}) - неверное присвоение. В результате этой операции в переменной fname будет текущее значение CallerID, типа "12233445" <1223445>


Мне важен был сам факт получения CallerID. А обработкой его вида я как раз сейчас и займусь.
shumiloff
 
Сообщений: 60
Зарегистрирован: 18 ноя 2010, 20:04


Вернуться в VoIP оборудование

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

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

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