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

Originate из внешнего приложения

Asterisk IP PBX 8 сообщений 26.09.2010 12:55 - 25.10.2010 14:42
#1 26.09.2010 12:55

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ску, а мне надо отследить статус в самом астериске, чтобы увеличить количество попыток дозвона..

есть у кого идеи ?
#2 26.09.2010 16:58

Используй Channel Local.
#3 26.09.2010 21:58

в каком месте ?
в originate (xxx,yyy,LOCAL/) ?

попробую..... надо тока вспомнить где локал описывается....
#4 27.09.2010 05:26

я тут подумал, ну использую я локальный канал, а толку, в каком месте мне ловить статус оригинации ?
#5 27.09.2010 06:54

Local позволит "отследить статус в самом *".
#6 25.10.2010 07:05

Пожалуй, в этой теме спрошу: а что с 1.8 теперь делать? Там AMI команда Originate исчезла, зато появился application диалплана. Что-то с утра никак не соображу как этим воспользоваться через manager интерфейс. Dash
#7 25.10.2010 09:19

latv, кто Вам сказал что AMI команда Originate пропала? На момент используемого мной 1.8-rc2 она есть. Беглый проход по исходникам релиза 1.8 тоже подтверждает что команда осталась и в релизе. Мало того, в Changelog-ах ни слова о дропе команды, а наоборот фиксов пара штук.
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
#8 25.10.2010 14:42

Quote:
Originate now requires the Originate privilege

спасибо , мил человек Smile
теперь все работает

ps была же у меня светлая мысль по changelog пошариться, но быстро улетучилась ) еще раз спасибо