Поясню зачем это нужно - для проверки работоспособности городского номера,
на котором есть IVR меню.
Скрипт запускаем с некоторой периодичностью
и делает попытку дозвона на проверяемый номер.
Анализируем статус канала
Если дозвонились и попали в IVR, то сразу делаем отбой.
Если не дозвонились за некоторое время, то тоже делаем отбой
и оповещаем персонал.
Итак вот один из путей сделать изходящий звонок, подключившись серез интерфейс AMI.
Инициируем звонок так:
AMI запрос:
Код: Выделить всё
Action: Command
Command: console dial 4991234567@from-probe
AMI ответ:
Код: Выделить всё
Asterisk Call Manager/1.1
Response: Success
Message: Authentication accepted
Response: Follows
Privilege: Command
--END COMMAND--
Event: Newchannel
Privilege: call,all
SequenceNumber: 1608638
File: channel.c
Line: 972
Func: __ast_channel_alloc_ap
Channel: Console/dsp
ChannelState: 5
ChannelStateDesc: Ringing
CallerIDNum:
CallerIDName:
AccountCode:
Exten: 4991234567
Context: from-probe
Uniqueid: 1321540734.77643
Потом через некоторое время узнаём статус канала так:
AMI Запрос:
Код: Выделить всё
Action: Status
Channel: SIP/4991234567-0001278b
AMI Ответ:
Код: Выделить всё
Asterisk Call Manager/1.1
Response: Success
Message: Authentication accepted
Response: Success
Message: Channel status will follow
Event: Status
Privilege: Call
Channel: SIP/4991234567-0001278b
CallerIDNum: 4991234567
CallerIDName: <unknown>
Account:
State: Up
BridgedChannel: Console/dsp
BridgedUniqueid: 1321540859.77660
Uniqueid: 1321540859.77661
Event: StatusComplete
Items: 1
И когда узнали отбиваемся:
AMI Запрос:
Код: Выделить всё
Action: Hangup
Channel: SIP/4991234567-0001278b
AMI Ответ:
Код: Выделить всё
Asterisk Call Manager/1.1
Response: Success
Message: Authentication accepted
Response: Success
Message: Channel Hungup
Можно ли как-то сделать Dial, чтобы сразу узнать ИМЯ_КАНАЛА или руками задать его ?
Сейчас, когда я всё это проделываю, то подсматриваю его в консоли через
core show channels
Очень не хочется использовать ловлю событий (Events) на интерфейсе AMI.
Общеизвестно, что при большой нагрузке некоторые события просто теряются.