artem
22.04.2013
57388

Коротко об Asterisk Manager Interface

   Asterisk Manager Interface (AMI ) — интерфейс Asterisk, позволяет другим приложениям обмениваться с ним сообщениями. Работает следующим образом: приложение устанавливает TCP-соединение на порт 5038 ( по умолчанию) хоста Asterisk, после чего приложение может посылать и принимать сообщения Asterisk.
   С помощью интерфейса AMI удобно организовывать взаимодействие Asterisk и CRM-системы. После этого станет возможным, к примеру, автоматически открывать карточку клиента, когда оператор принимает вызов, инициировать вызовы из CRM-системы, совершать автообзвон клиентов.

1. Настройка на стороне Asterisk

2. Синтаксис сообщений AMI

3. Подключение к AMI

4. Примеры сообщений AMI

Настройка на стороне Asterisk


Настройки AMI находятся в файле /etc/asterisk/manager.conf, в нём же прописываются пользователи AMI, их пароли и права доступа.
   Пример:

[general]

enabled = yes         ;AMI включен
port = 5038         ;принимает соединения на порт 5038
bindaddr = 0.0.0.0      ;на все IP-адреса хоста
displayconnects=no      ;подключения к AMI не отображаются командной строке

[admin]            ;имя пользователя
secret = ami-secret         ;пароль
deny=0.0.0.0/0.0.0.0         ;подсеть, из которой запрещен доступ к AMI
permit=127.0.0.1/255.255.255.0   ;подсеть, из которой разрешен доступ к AMI

;привилегии на чтение (от них зависит, сообщения о каких событиях пользователь сможет получать через AMI)
read=system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate

;привилегии на запись (от них зависит, какие команды пользователь сможет выполнять через AMI)
write=system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate

Для применения настроек AMI, нужно выполнить команду «manager reload» в консоли Asterisk.

Синтаксис сообщений AMI


   Сообщения AMI состоят из тегов вида «ключевое_слово: значение». Каждая строка заканчивается символами возврата каретки и перевода на следующую строку (CR/LF). Пустая строка (состоящая только из CR/LF) означает конец сообщения.
   Первый тег в сообщении обязательно должен быть Action, Response или Event.
   Тег Action значит, что в сообщении клиент посылает команду сервера.
   Тег Response значит, что сообщение явдяется ответом сервера на команду клиента.
   Тег Event значит, что в сообщении сервер уведомляет клиент о наступлении события.
   Если в Action-сообщении указать тег ActionID с каким-либо значением, то ответныу сообщения будут содержать тег ActionID с таким же значением, это позволяет находить ответы на конкретное сообщение среди множества ответов на другие сообщения.

Подключение к AMI


   Для подключения к AMI, нужно установить TCP-соединение на порт, указанный в настройках AMI (по умолчанию 5038), для быстрого теста можно выполнить команду «telnet 127.0.0.1 5038» на хосте Asterisk. Далее, прежде чем можно будет выполнять команды и получать сообщения о событиях, нужно аутентифицироваться. Для этого нужно отправить команду с тегами Action: Login, Username: <имя_пользователя>, Secret: <пароль>. Пример:

Action: Login
Username: admin
Secret: ami-secret
Response: Success
Message: Authentication accepted

Event: FullyBooted
Privilege: system,all
Status: Fully Booted

Примеры сообщений AMI


   Вызов номера 101 и соединение его с номером 81112223333:

Action: Originate
ActionID: 12345
Channel: SIP/101
Context: outbound-allroutes
Exten: 81112223333
Priority: 1
Callerid: «auto-dial» <81112223333>

Response: Success
ActionID: 12345
Message: Originate successfully queued

   Событие регистрации номера 101 с хоста 192.168.1.25:

Event: PeerStatus
Privilege: system,all
ChannelType: SIP
Peer: SIP/101
PeerStatus: Registered
Address: 192.168.1.25:5060

   Лог вызова с номера 102 на номер 101, привилегия call:

; Создание канала SIP/101
Event: Newchannel
Privilege: call,all
Channel: SIP/101-00000793
ChannelState: 0
ChannelStateDesc: Down
CallerIDNum: 101
CallerIDName: device
AccountCode:
Exten: 102
Context: from-internal
Uniqueid: 1366383392.2837

; Номер 101 звонит
Event: Newstate
Privilege: call,all
Channel: SIP/101-00000793
ChannelState: 4
ChannelStateDesc: Ring
CallerIDNum: 101
CallerIDName: device
ConnectedLineNum:
ConnectedLineName:
Uniqueid: 1366383392.2837

Event: ExtensionStatus
Privilege: call,all
Exten: 101
Context: ext-local
Hint: SIP/101
Status: 1

; Вызову присвоен CallerID
Event: NewCallerid
Privilege: call,all
Channel: SIP/101-00000793
CallerIDNum: 101
CallerIDName: test
Uniqueid: 1366383392.2837
CID-CallingPres: 0 (Presentation Allowed, Not Screened)

; Создание канала SIP/102
Event: Newchannel
Privilege: call,all
Channel: SIP/102-00000794
ChannelState: 0
ChannelStateDesc: Down
CallerIDNum: 102
CallerIDName: device
AccountCode:
Exten:
Context: from-internal
Uniqueid: 1366383392.2838

Event: ExtensionStatus
Privilege: call,all
Exten: 102
Context: ext-local
Hint: SIP/102
Status: 8

; Вызов канала SIP/102 из канала SIP/101
Event: Dial
Privilege: call,all
SubEvent: Begin
Channel: SIP/101-00000793
Destination: SIP/102-00000794
CallerIDNum: 101
CallerIDName: Anton Oskin
ConnectedLineNum: 102
ConnectedLineName: Anton Oskin
UniqueID: 1366383392.2837
DestUniqueID: 1366383392.2838
Dialstring: 102

; Номер 102 звонит
Event: Newstate
Privilege: call,all
Channel: SIP/102-00000794
ChannelState: 5
ChannelStateDesc: Ringing
CallerIDNum: 102
CallerIDName: device
ConnectedLineNum: 101
ConnectedLineName: Anton Oskin
Uniqueid: 1366383392.2838

Event: ExtensionStatus
Privilege: call,all
Exten: 102
Context: ext-local
Hint: SIP/102
Status: 1

; Номер 102 принял вызов
Event: Newstate
Privilege: call,all
Channel: SIP/102-00000794
ChannelState: 6
ChannelStateDesc: Up
CallerIDNum: 102
CallerIDName: device
ConnectedLineNum: 101
ConnectedLineName: Anton Oskin
Uniqueid: 1366383392.2838

Event: Newstate
Privilege: call,all
Channel: SIP/101-00000793
ChannelState: 6
ChannelStateDesc: Up
CallerIDNum: 101
CallerIDName: Anton Oskin
ConnectedLineNum: 102
ConnectedLineName: Anton Oskin
Uniqueid: 1366383392.2837

Event: NewAccountCode
Privilege: call,all
Channel: SIP/102-00000794
Uniqueid: 1366383392.2838
AccountCode:
OldAccountCode:

; Каналы соединены
Event: Bridge
Privilege: call,all
Bridgestate: Link
Bridgetype: core
Channel1: SIP/101-00000793
Channel2: SIP/102-00000794
Uniqueid1: 1366383392.2837
Uniqueid2: 1366383392.2838
CallerID1: 101
CallerID2: 102

Event: Unlink
Privilege: call,all
Channel1: SIP/101-00000793
Channel2: SIP/102-00000794
Uniqueid1: 1366383392.2837
Uniqueid2: 1366383392.2838
CallerID1: 101
CallerID2: 102

; Номер 102 завершил вызов
Event: Hangup
Privilege: call,all
Channel: SIP/102-00000794
Uniqueid: 1366383392.2838
CallerIDNum: 102
CallerIDName: device
ConnectedLineNum: 101
ConnectedLineName: Anton Oskin
Cause: 16
Cause-txt: Normal Clearing

Event: Dial
Privilege: call,all
SubEvent: End
Channel: SIP/101-00000793
UniqueID: 1366383392.2837
DialStatus: ANSWER

Event: Hangup
Privilege: call,all
Channel: SIP/101-00000793
Uniqueid: 1366383392.2837
CallerIDNum: 101
CallerIDName: Anton Oskin
ConnectedLineNum: 102
ConnectedLineName: Anton Oskin
Cause: 16
Cause-txt: Normal Clearing

Event: ExtensionStatus
Privilege: call,all
Exten: 102
Context: ext-local
Hint: SIP/102
Status: 0

Event: ExtensionStatus
Privilege: call,all
Exten: 101
Context: ext-local
Hint: SIP/101
Status: 0

 Полный список команд, доступных через AMI, с краткими описаниями и списком привилегий, необходимых для их выполнения, можно получить, выполнив в консоли Asterisk команду «manager show commands». Команда «manager show command <команда>» выдает справку по синтаксису конкретной команды.

Книга 101 функция Asterisk
Познакомьтесь с возможностями Asterisk. Найдите инструменты, которые помогут вашей компании развиваться.
Скачать книгу
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование


ближайшие курсы

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.