Оригинал: http://rad.kiev.ua/asterisk_manager_interface
Автор: Алексей Радецкий, Net.Style
Сегодня речь пойдет об одном из способов управления и мониторинга Open Source IP PBX Asterisk — Asterisk Manager Interface.
Для того, что бы разрешить работать с этим интерфейсом следует сначала его включить, для этого надо в каталог настройки Asterisk добавить файл manager.conf. Я подразумеваю, что читатель знает как загрузить недостающие части для Asterisk и не будет задавать лишних вопросов.
Конфигурационный файл должен выглядеть примерно так:
[general]
displaysystemname = yes
enabled = yes
webenabled = no
port = 5039
bindaddr = 10.0.0.1
displayconnects = yes
timestampevents = yes
[someuser]
secret=Password
deny=0.0.0.0/0.0.0.0
permit=10.0.0.0/255.255.255.0
read = system,call,log,verbose,command,agent,user,config
write = system,call,log,verbose,command,agent,user,config
Для нормального, опытного системного администратора содержание данного файла не вызовет лишних вопросов. И не в данной статье описывать надо что это такое. Если что-то непонятно, то прочтите книгу «Asterisk — the future of telephony» или обратитесь за платной консультацией в нашу компанию.
После того, как менеджер будет готов, к нему можно будет обратиться даже с помощью команды telnet. Её я и буду использовать для демонстрации интерфейса.
[rad@rad ~]$ telnet 10.0.0.1 5039
Trying 10.0.0.1...
Connected to 10.0.0.1.
Escape character is '^]'.
Asterisk Call Manager/1.0
Action: Login
username: someuser
secret: Password
Events: off
Response: Success
Message: Authentication accepted
Asterisk Manager — это обычный сервер, который слушает указанный порт и общается с клиентами по установленному соединению. Вышеуказанный кусок — это демонстрация как именно можно соединиться с менеджером.
Протокол Asterisk Manager Interface очень простой. Заспросы состоят из массива строк, которые в свою очередь состоят из пары «ключ — значение». Посмотрите на процесс соединения с сервером. Action, username, secret, events — и есть ключи.
Вот еще пример:
Action: status
Response: Success
Message: Channel status will follow
Event: StatusComplete
На запрос получения статуса, менеджер ответил «Success» и подтвердил событием «StatusComplete». Если бы хоть один канал был занят, то получение статуса выглядело бы примерно так:
Action: Status
Response: Success
Message: Channel status will follow
Event: Status
Privilege: Call
Channel: SIP/1102-00816f60
CallerID: 1102
CallerIDNum: 1102
CallerIDName: Dynamix Line 2
Account:
State: Up
Context: InCall
Extension: 1000
Priority: 3
Seconds: 3
Uniqueid: 1201728448.5<
Event: StatusComplete
Посмотрите внимательно, до события «StatusComplete» клиенту, в виде программы telnet приходит ключ «Event» со значением «Status» и последующие данные вплоть до пустой строки.
Если вы хотите разработать программу для мониторинга событий внутри Asterisk IP PBX, то при логине укажите пару Events: on и тогда менеджер по мере происходящего будет выдавать события в виде массивов строк, как это было показано выше, которые будут характеризовать что происходит внутри станции.
Есть вопросы по Asterisk — обращайтесь к специалистам