Originate из внешнего приложения
работаею с астериском из 1ски, есть библиотека для этого.
код 1ски:
| Code: |
| Попытка // набираем клиента считая что при начале работы системы мы успешно подключились к астериску. // передаем астериску номер клиена , указывваем через какой транк набирать номер, передаем шаблон //ексеншена, номер машины и номер заявки по которой мы звоним Астериск.Оригинация(Номерклиента+"@GSMTRUNK", "0001"+Номермашины+НомерЗаявки, "SIP/", "autodial"); Исключение // пытаемся повторно подключиться к астериску и снова набрать номер Попытка СерверАстериск= Константы.ТелефонияИмяСервера.Получить(); ЛогинАстериск= Константы.ТелефонияЛогин.Получить(); ПарольАстериск= Константы.ТелефонияПароль.Получить(); ЗагрузитьВнешнююКомпоненту("asterisk.dll"); Астериск = Новый ("AddIn.asterisk"); Астериск.Открыть(СерверАстериск,5038,ЛогинАстериск,ПарольАстериск); Астериск.Оригинация(Номерклиента+"@GSMTRUNK", "0001"+Номермашины+НомерЗаявки, "SIP/", "autodial"); Исключение Сообщить ("Модуль телефонии не подключен!", СтатусСообщения.Внимание); КонецПопытки; КонецПопытки; |
=====
Диалплан: астериска
| Code: |
| [autodial] exten => _0001XXX.,1,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds exten => _0001XXX.,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds exten => _0001XXX.,n,Answer exten => _0001XXX.,n,Wait(1) exten => _0001XXX.,n,Background(../ru/out/go ; "К вам подъехал Автомобиль номер:" ;выдергиваем из екстена номер машины exten => _0001XXX.,n,Background(../ru/out/${EXTEN:4:1} ; "первая цифра номера машины" exten => _0001XXX.,n,Background(../ru/out/${EXTEN:5:1} ; "вторая цифра номера машины" exten => _0001XXX.,n,Background(../ru/out/${EXTEN:6:1} ; "третья цифра номера машины" "возвращаем в 1ску номер заявки после успешного прозвона exten => _0001XXX.,n,MYSQL(Connect connid mysqlserver mysqlpassword "" ams) ; exten => _0001XXX.,n,MYSQL(Query resultid ${connid} insert into client ( zayavka_number ) VALUES ("${EXTEN:9}")) exten => _0001XXX.,n,Hangup() |
=========
если система дозвонилась до клиента, то она его соединяет с вышеуказанным ексеншеном и дальше все Ок., НО
если абонент не снял трубку или у него занято, то звонок не состоялся и он не попадает в вышеуказанный конекст
вопрос: как мне астериском отследить этот момент, а точнее в каком месте его отслеживать, команда оригинация приходит из 1ски, по логике и переменная ${ORIGINATE_STATUS} должна вернутся в 1ску, а мне надо отследить статус в самом астериске, чтобы увеличить количество попыток дозвона..
есть у кого идеи ?
в originate (xxx,yyy,LOCAL/) ?
попробую..... надо тока вспомнить где локал описывается....
| Quote: |
| * Originate now requires the Originate privilege and, if you want to call out to a subshell, it requires the System privilege, as well. This was done to enhance manager security. * Originate now accepts codec settings with "Codecs: alaw, ulaw, h264" |
_________________
Slackware 13.1 - Asterisk 1.8
| Quote: |
| Originate now requires the Originate privilege |
спасибо , мил человек
теперь все работает
ps была же у меня светлая мысль по changelog пошариться, но быстро улетучилась ) еще раз спасибо