Слайд 2Цели
Что такое AMI и что он делает
Узнать как использовать AMI для CTI
![Цели Что такое AMI и что он делает Узнать как использовать AMI](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180516/slide-1.jpg)
(Computer Telephony Integration)
Изучить примеры использования AMI
Обсудить безопасность и вопросы конфигурации AMI
Слайд 3Computer Telephony Integration
Ценность в интеграции компьютеров и телефонов
Различные CTI стандарты с ~1980
Доступен
![Computer Telephony Integration Ценность в интеграции компьютеров и телефонов Различные CTI стандарты](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180516/slide-2.jpg)
различный функционал
Прослушивание
контроль звонка третьей стороной
проигрывание DTMF сигналов
Слайд 4Asterisk Manager Interface
Введение: AMI "Ответ Астериска на CTI“
Позволяет:
Контролировать вызов
Мониторинг активности/событий
Удаленная конфигурация в
![Asterisk Manager Interface Введение: AMI "Ответ Астериска на CTI“ Позволяет: Контролировать вызов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180516/slide-3.jpg)
режиме реального времени и псевдо CLI доступ
Удаленная манипуляция конфигурационными файлами (AJAM)
Простой, текстовый протокол (не забывайте про безопасность!)
Слайд 5Asterisk Manager Interface
Конфигурируется в manager.conf
Слушает на порту TCP 5038 или HTTP на
![Asterisk Manager Interface Конфигурируется в manager.conf Слушает на порту TCP 5038 или](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180516/slide-4.jpg)
порту 8088 (используя mini http сервер встроенный в Астериск)
Можно передавать команды вручную или автоматически
Слайд 6AMI: Ключевые команды
Originate: создать звонок (как с call-файлами)
MixMonitor: начать запись разговора
Redirect: перенаправить
![AMI: Ключевые команды Originate: создать звонок (как с call-файлами) MixMonitor: начать запись](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180516/slide-5.jpg)
вызов
Hangup: завершить вызов
Command: вызвать определенную команду CLI
DBPut/DBGet: удаленный доступ к AstDB
GetConfig/UpdateConfig: редактирование конфигурационных файлов
ЗАПИСЫВАЕТ ФАЙЛы, не изменяет активную в данный момент конфигурацию
Events: unsolicited status updates
Слайд 7Manager.conf
"enable=yes" иначе AMI не будет активирован
Set "webenable=yes" для работы HTTP/AJAM
Типичный синтаксис
![Manager.conf "enable=yes" иначе AMI не будет активирован Set "webenable=yes" для работы HTTP/AJAM](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180516/slide-6.jpg)
вроде [user]
"read" указывает, какие классы событий/ответов будут посланы юзеру
"write" указывает, какие действия юзер имеет право выполнять
Классы включают в себя "all", "system", "call", "command" (for CLI), и т.д.
Более дюжины классов, подробности в дефолтном manager.conf
Слайд 8AMI: Синтаксис команды
Использует тэги в формате “Header: value", по одному в строчке
Окончание
![AMI: Синтаксис команды Использует тэги в формате “Header: value", по одному в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180516/slide-7.jpg)
вводом пустой строки
Первый тэг ДОЛЖЕН быть либо
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](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180516/slide-8.jpg)
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](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180516/slide-9.jpg)
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](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180516/slide-10.jpg)
Слайд 12Пример AMI приложений
Screen-pops
на входящем звонке срабатывает поиск по БД по номеру звонящего,
![Пример AMI приложений Screen-pops на входящем звонке срабатывает поиск по БД по](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180516/slide-11.jpg)
открывает в браузере сотрудника страницу с учетной записью клиента
Мониторинг работоспособности системы и уведомление о проблемах
Консоль оператора
Asterisk-GUI
Звонилки
Click-to-dial
Web calling
Автоматический обзвон по базе
Слайд 13Безопасность AMI и best practices
Установите "displayconnects=yes", "allowmultiplelogin=no“
Используйте TLS
Не открывайте доступ на публичном
![Безопасность AMI и best practices Установите "displayconnects=yes", "allowmultiplelogin=no“ Используйте TLS Не открывайте](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180516/slide-12.jpg)
IP (или используйте VPN)
Используйте нестандартный порт
Осторожно выставляйте read/write привилегии
не хотим давать избыточных привилегий и не хотим утонуть в неинтересующих событиях
Слайд 14Безопасность AMI и best practices
Мониторьте "Event: FullyBooted" что бы убедиться, что вы
![Безопасность AMI и best practices Мониторьте "Event: FullyBooted" что бы убедиться, что](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180516/slide-13.jpg)
не посылаете Action до того, как модуль загружен
Отладка AMI -
ngrep -d any port 5038 -W byline
CLI> manager set debug on