Содержание

Слайд 2

Цели

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

Цели Что такое AMI и что он делает Узнать как использовать AMI
(Computer Telephony Integration)
Изучить примеры использования AMI
Обсудить безопасность и вопросы конфигурации AMI

Слайд 3

Computer Telephony Integration

Ценность в интеграции компьютеров и телефонов
Различные CTI стандарты с ~1980
Доступен

Computer Telephony Integration Ценность в интеграции компьютеров и телефонов Различные CTI стандарты
различный функционал
Прослушивание
контроль звонка третьей стороной
проигрывание DTMF сигналов

Слайд 4

Asterisk Manager Interface

Введение: AMI "Ответ Астериска на CTI“
Позволяет:
Контролировать вызов
Мониторинг активности/событий
Удаленная конфигурация в

Asterisk Manager Interface Введение: AMI "Ответ Астериска на CTI“ Позволяет: Контролировать вызов
режиме реального времени и псевдо CLI доступ
Удаленная манипуляция конфигурационными файлами (AJAM)
Простой, текстовый протокол (не забывайте про безопасность!)

Слайд 5

Asterisk Manager Interface

Конфигурируется в manager.conf
Слушает на порту TCP 5038 или HTTP на

Asterisk Manager Interface Конфигурируется в manager.conf Слушает на порту TCP 5038 или
порту 8088 (используя mini http сервер встроенный в Астериск)
Можно передавать команды вручную или автоматически

Слайд 6

AMI: Ключевые команды

Originate: создать звонок (как с call-файлами)
MixMonitor: начать запись разговора
Redirect: перенаправить

AMI: Ключевые команды Originate: создать звонок (как с call-файлами) MixMonitor: начать запись
вызов
Hangup: завершить вызов
Command: вызвать определенную команду CLI
DBPut/DBGet: удаленный доступ к AstDB
GetConfig/UpdateConfig: редактирование конфигурационных файлов
ЗАПИСЫВАЕТ ФАЙЛы, не изменяет активную в данный момент конфигурацию
Events: unsolicited status updates

Слайд 7

Manager.conf

"enable=yes" иначе AMI не будет активирован
Set "webenable=yes" для работы HTTP/AJAM
Типичный синтаксис

Manager.conf "enable=yes" иначе AMI не будет активирован Set "webenable=yes" для работы HTTP/AJAM
вроде [user]
"read" указывает, какие классы событий/ответов будут посланы юзеру
"write" указывает, какие действия юзер имеет право выполнять
Классы включают в себя "all", "system", "call", "command" (for CLI), и т.д.
Более дюжины классов, подробности в дефолтном manager.conf

Слайд 8

AMI: Синтаксис команды

Использует тэги в формате “Header: value", по одному в строчке
Окончание

AMI: Синтаксис команды Использует тэги в формате “Header: value", по одному в
вводом пустой строки
Первый тэг ДОЛЖЕН быть либо
Action: клиент запрашивает Астериск сделать что-либо
клиент всегда посылает только Action, и никогда Response или Event
Response: Сообщение от Астериска к клиенту в ответ на Action
Event: Сообщение от Астериска к клиенту с уведомлением о событии

Слайд 9

Простой AMI пример: Remote Login + Originate
root@asterisk:~# telnet localhost 5038
Trying ::1... Trying

Простой AMI пример: Remote Login + Originate root@asterisk:~# telnet localhost 5038 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

Что выводится при подключении Action: Login Username: 123 Secret: 123 Response: Success Message: Authentication accepted
accepted

Слайд 11

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

Запускаем originate Action: Originate Channel: PJSIP/7001 Context: phones Exten: 7002 Priority: 1

Слайд 12

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

Пример AMI приложений Screen-pops на входящем звонке срабатывает поиск по БД по
открывает в браузере сотрудника страницу с учетной записью клиента
Мониторинг работоспособности системы и уведомление о проблемах
Консоль оператора
Asterisk-GUI
Звонилки
Click-to-dial
Web calling
Автоматический обзвон по базе

Слайд 13

Безопасность AMI и best practices

Установите "displayconnects=yes", "allowmultiplelogin=no“
Используйте TLS
Не открывайте доступ на публичном

Безопасность AMI и best practices Установите "displayconnects=yes", "allowmultiplelogin=no“ Используйте TLS Не открывайте
IP (или используйте VPN)
Используйте нестандартный порт
Осторожно выставляйте read/write привилегии
не хотим давать избыточных привилегий и не хотим утонуть в неинтересующих событиях

Слайд 14

Безопасность AMI и best practices

Мониторьте "Event: FullyBooted" что бы убедиться, что вы

Безопасность AMI и best practices Мониторьте "Event: FullyBooted" что бы убедиться, что
не посылаете Action до того, как модуль загружен
Отладка AMI -
ngrep -d any port 5038 -W byline
CLI> manager set debug on