Страница 1 из 1

Переменные AGI

Добавлено: 23 ноя 2011, 17:20
chaky
Добрый день!
Имеется следующее приложение в features.conf:
sendfax => *9,peer/both,AGI,/etc/asterisk/agi/map_mail.pl

На исходящем звонке переменные, которые оно принимает от *, несколько не соответствуют действительности. А именно - номер 404 звонит на 2010000, звонок выходит на PRI. При включенном agi debug в консоли видно, что при срабатывании приложения, в скрипт в параметрах передаётся следующее:
AGI Tx >> agi_request: /etc/asterisk/agi/map_mail.pl
AGI Tx >> agi_channel: Zap/63-1
AGI Tx >> agi_language: en
AGI Tx >> agi_type: Zap
AGI Tx >> agi_uniqueid: 1322049810.4307
AGI Tx >> agi_callerid: 0442010000
AGI Tx >> agi_calleridname: unknown
AGI Tx >> agi_callingpres: 3
AGI Tx >> agi_callingani2: 0
AGI Tx >> agi_callington: 0
AGI Tx >> agi_callingtns: 0
AGI Tx >> agi_dnid: 481
AGI Tx >> agi_rdnis: unknown
AGI Tx >> agi_context: from_pstn
AGI Tx >> agi_extension:
AGI Tx >> agi_priority: 1
AGI Tx >> agi_enhanced: 0.0
AGI Tx >> agi_accountcode:

Судя по контексту и поменянные местами callerid и dnid, * трактует этот звонок как пришедший с PRI. Насколько я понимаю, это происходит потому что я запускаю приложение на peer. Но это не проблема. Главная проблема в том, что в dnid подставляется случайный (ну, может не совсем случайный) номер - но не тот, с которого идёт звонок. В конкретно данном случае - 481 вместо 404. В других тестовых забегах были и 408, и 401, и другие. Найти какую-либо зависимость (типа, последний набранный номер или ещё что) мне не удалось - каждый раз подставляется разный номер.
Если звонок действительно входящий с PSTN, то все переменные передаются корректно.

Поделитесь плз умными мыслями на этот счёт, поскольку моих собственных не хватает.

Re: Переменные AGI

Добавлено: 24 ноя 2011, 16:29
zzuz
Умные мысли в том , что *9 абонент может нажать , приняв вызов . В вашем случае так и происходит. Все переменные канала честно передаются аргументами конструктору AGI. Чтобы поменять поведение переменных - нужно поменять структуру диаплана. То есть идея в том , чтобы сформировать данные , которые Вам нужны до того , как вызов будет отвечен.
Пробуйте , экспериментируйте . Это не больно)