Коротко об 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 <команда>» выдает справку по синтаксису конкретной команды.

Остались вопросы?
Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.