AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Asterisk manager interface

Asterisk-Dev 7 сообщений -
#1

Здравствуйте. Подскажите пожалуйста как с помощью ami можно получить номер, который звонящий абонент выбрал в avr? Спасибо
#2

Возможно вы имели в виду ivr?
Думаю что можно, не могу сказать точно какое событие генерится при этом, но можно подключится к AMI и посмотреть, какие будут "собыния" при нажатии в ivr.

_________________
http://www.myipats.ru
#3

Нет. Входящий звонок поступает на ivr. Если Звонящий выбирает кнопку 2, то вызов идет на 115, если 1, то на 101, если на кнопку 1, то ami должен проверить наличие номера в базе и адресовать его менеджеру клиента. Не получается отловить момент когда звонящий выбирает кнопку 1. Никакого события не регистрируется.

Added after 3 minutes:

т.е. не регистрируется события нажатия кнопки. Agi использовать не вариант, потому что используется MyPbx U100, все конфиги там затираются и agi не поддерживается, приходится реализовывать средствами AMI
#4

какую то чушь пишите.
чтобы принимать от клиента DTMF нужно со стороны астериска запустить приложение.
Read или WaitExten или что-то типа этого.

Вот через интерфейс приложения и взаимодействуйте.
Просто так ничего само по себе никуда не читается и ничего не исполняется.
Хотите знать что ввёл ну так явно ввод пишите куда надо или отправляте в manager как пользовательское событие

same => n(read),Read(DIGITS,select01.msg,1,n,1,7)
same => n,System(echo "'${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)}': call from '${CDR(src)}' to '${CDR(dst)}' - '${DIGITS}' entered" >> ${GLOBAL(LOGDIR)}/NUM.log)

_________________
Свежак chan_dongle тут https://github.com/bg111/asterisk-chan-dongle/
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
#5

kadet635 @ Вс Ноя 29, 2015 22:50 писал(а):
т.е. не регистрируется события нажатия кнопки. Agi использовать не вариант, потому что используется MyPbx U100, все конфиги там затираются и agi не поддерживается, приходится реализовывать средствами AMI

Вот поэтому я и не люблю все эти "готовые решения"... Чих влево, чих вправо и приходится городить костыли...
Не знаю, какая версия * доступна на MyPBX U100, но вот вам ссылки на события AMI для 11 и 13 версии:
https://wiki.asterisk.org/wiki/display/AST/Asterisk+11+AMI+Events
https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+AMI+Events
Лучше, конечно, подключиться и посмотреть что там бегает в AMI при нажатии цифры.

Вообще, если эта шайтан-машина позволит сделать виртуальный exten со своим кастомным контекстом, то можете это использовать в настройках IVR и повесить этот exten на событие нажатия кнопки. Но беглый взгляд на мануал не обнадеживает Sad http://www.storevoip.ru/assets/files/voi ... ide_en.pdf
#6

Давно пора смотреть и в custom и в создание/генерацию UserEvent
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#7

Цитата:
Подскажите пожалуйста как с помощью ami можно получить номер, который звонящий абонент выбрал в avr? Спасибо


Код:

Здесь как пример, прилетаем на добавочный номер 11 - вводим циферки и слушаем что ввели
;exten => 11,1,Answer
exten => 11,1,Set(CHANNEL(language)=ru)

; Читает вводимые цифры 12 знаков и сохраняет в переменной WHAT_NUMBER, три раза повторяет, с паузой пять сек
exten => 11,n,Read(WHAT_NUMBER,/var/lib/asterisk/agents/введите_номер,12,,3,5)
; Затем диктует и повторяет в цикле три раза введенные цифры.
exten => 11,n,Set(COUNT=1)
exten => 11,n,While($[ ${COUNT} < 3 ])
exten => 11,n,SayAlpha(${WHAT_NUMBER})
exten => 11,n,Set(COUNT=$[${COUNT} + 1])
exten => 11,n,EndWhile()


Далее, как вариант например, проверяем если ли введенное значение в БД

Код:

exten => 11,n,GotoIf($["${WHAT_NUMBER}" = ""]?nonumber:nextc)
; Меняем введенную 8-ку юзером, на положенное +7 для БД
exten => 11,n(nextc),SET(IN_DBAGENT=+7${WHAT_NUMBER:1})
; Делаем запрос к БД, на наличие введенного номера в таблице blagents
exten => 11,n,MYSQL(Connect connid localhost root taxer asterisk)
exten => 11,n,MYSQL(Query resultid ${connid} SELECT agents FROM tblagents WHERE agents ='${IN_DBAGENT}')
exten => 11,n,MYSQL(FETCH fetchid ${resultid} NUMBER_REGAGENT)
; Очищаем результат, он нам больше не нужен
exten => 11,n,MYSQL(Clear ${resultid})
; Если номер есть, на удаление, если нет - на регистрацию
exten => 11,n,NoOP(NumberReg - ${NUMBER_REGAGENT})
exten => 11,n,MYSQL(Disconnect ${connid})
exten => 11,n,GotoIf($["${NUMBER_REGAGENT}" = ""]?nodbagent:yesdbagentdel)
...
exten => 11,n(nonumber),Hangup


Вот здесь - готовые мои решения в extensions.conf, можете надергать себе контекстов или из контекстов. Там все хорошо закоментированно...
http://forum.cxem.net/index.php?s=038b25 ... try2248309