Слайд 2Цели
Что такое AMI и что он делает
Узнать как использовать AMI для CTI

(Computer Telephony Integration)
Изучить примеры использования AMI
Обсудить безопасность и вопросы конфигурации AMI
Слайд 3Computer Telephony Integration
Ценность в интеграции компьютеров и телефонов
Различные CTI стандарты с ~1980
Доступен

различный функционал
Прослушивание
контроль звонка третьей стороной
проигрывание DTMF сигналов
Слайд 4Asterisk Manager Interface
Введение: AMI "Ответ Астериска на CTI“
Позволяет:
Контролировать вызов
Мониторинг активности/событий
Удаленная конфигурация в

режиме реального времени и псевдо CLI доступ
Удаленная манипуляция конфигурационными файлами (AJAM)
Простой, текстовый протокол (не забывайте про безопасность!)
Слайд 5Asterisk Manager Interface
Конфигурируется в manager.conf
Слушает на порту TCP 5038 или HTTP на

порту 8088 (используя mini http сервер встроенный в Астериск)
Можно передавать команды вручную или автоматически
Слайд 6AMI: Ключевые команды
Originate: создать звонок (как с call-файлами)
MixMonitor: начать запись разговора
Redirect: перенаправить

вызов
Hangup: завершить вызов
Command: вызвать определенную команду CLI
DBPut/DBGet: удаленный доступ к AstDB
GetConfig/UpdateConfig: редактирование конфигурационных файлов
ЗАПИСЫВАЕТ ФАЙЛы, не изменяет активную в данный момент конфигурацию
Events: unsolicited status updates
Слайд 7Manager.conf
"enable=yes" иначе AMI не будет активирован
Set "webenable=yes" для работы HTTP/AJAM
Типичный синтаксис

вроде [user]
"read" указывает, какие классы событий/ответов будут посланы юзеру
"write" указывает, какие действия юзер имеет право выполнять
Классы включают в себя "all", "system", "call", "command" (for CLI), и т.д.
Более дюжины классов, подробности в дефолтном manager.conf
Слайд 8AMI: Синтаксис команды
Использует тэги в формате “Header: value", по одному в строчке
Окончание

вводом пустой строки
Первый тэг ДОЛЖЕН быть либо
Action: клиент запрашивает Астериск сделать что-либо
клиент всегда посылает только Action, и никогда Response или Event
Response: Сообщение от Астериска к клиенту в ответ на Action
Event: Сообщение от Астериска к клиенту с уведомлением о событии
Слайд 9Простой AMI пример: Remote Login + Originate
root@asterisk:~# telnet localhost 5038
Trying ::1...
Trying

127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Asterisk Call Manager/2.8
Слайд 10Что выводится при подключении
Action: Login
Username: 123
Secret: 123
Response: Success
Message: Authentication

accepted
Слайд 11Запускаем originate
Action: Originate
Channel: PJSIP/7001
Context: phones
Exten: 7002
Priority: 1
Response: Success
Message: Originate successfully queued

Слайд 12Пример AMI приложений
Screen-pops
на входящем звонке срабатывает поиск по БД по номеру звонящего,

открывает в браузере сотрудника страницу с учетной записью клиента
Мониторинг работоспособности системы и уведомление о проблемах
Консоль оператора
Asterisk-GUI
Звонилки
Click-to-dial
Web calling
Автоматический обзвон по базе
Слайд 13Безопасность AMI и best practices
Установите "displayconnects=yes", "allowmultiplelogin=no“
Используйте TLS
Не открывайте доступ на публичном

IP (или используйте VPN)
Используйте нестандартный порт
Осторожно выставляйте read/write привилегии
не хотим давать избыточных привилегий и не хотим утонуть в неинтересующих событиях
Слайд 14Безопасность AMI и best practices
Мониторьте "Event: FullyBooted" что бы убедиться, что вы

не посылаете Action до того, как модуль загружен
Отладка AMI -
ngrep -d any port 5038 -W byline
CLI> manager set debug on