====== Asterisk. Интеграция ====== ===== Программа курса ===== * [[http://www.specialist.ru/course/asterisk3|Asterisk. Уровень 2. Интеграция с внешними системами]] ===== Цель курса ===== Изучить интерфейсы и варианты интеграции Asterisk с внешними системами ===== Модуль 0. Подготовка стенда в классе ===== * Узнать свой номер стенда * Удалить виртуалки * Удалить профили putty * Отключить не используемые адаптеры * Записать логин пароль и IP (сообщить преподавателю) рабочей станции * Проверить наличие дистрибутивов и образов ===== Модуль 1. Развертывание компьютерной и телефонной сети предприятия ===== ==== Теория ==== * Базовая схема компьютерной сети предприятия * Базовая схема телефонии предприятия * Схема информационных систем предприятия ==== Лабораторные работы ==== ==== Упражнение 1.1. Настройка сервера Asterisk, sip каналов и базового диалплана ==== * Настройки VM RAM: 1Gb, Audio: AC97 (для festival !!! не забыть запустить инсталляцию заранее) * [[Настройка сети в Linux]] - [[Сервис Ansible]] * [[Сервис Asterisk#Установка]] Asterisk * [[Сервис Asterisk#Настройка базового функционала IP PBX]] - [[Сервис Ansible]] * Запустить [[Сервис MySQL#Установка]] MySQL * [[ZoIPer]] ===== Модуль 2. Интеграция Asterisk с базами данных ===== ==== Теория ==== * Основы реляционных баз данных ([[https://ruseller.com/lessons.php?id=1664|Реляционные базы данных для чайников]]) * Схемы данных для информации из Asterisk ([[http://www.voip-info.org/wiki/view/Asterisk+cdr+mysql|Asterisk cdr mysql]], [[https://www.voip-info.org/wiki/view/Asterisk+RealTime+Sip|Asterisk RealTime Sip]]) * [[https://voipnotes.ru/podkluchenie-asterisk-k-mysql-cherez-draiver-odbc/|Подключение Asterisk к MySQL через драйвер ODBC]] ==== Лабораторные работы ==== ==== Упражнение 2.1. Развертывание сервера СУБД MySQL ==== * [[Локализация системы#Локализация временной зоны]] * [[Сервис MySQL#Установка]] MySQL * [[Сервис MySQL#Настройка кодировки UTF-8]] ==== Упражнение 2.2. Подключение Asterisk к СУБД ==== * [[Сервис Asterisk#Использование СУБД для хранения CDR]] * [[Сервис ODBC]] * [[Сервис Asterisk#Asterisk ODBC]] ==== Упражнение 2.3. Хранение Asterisk CDR в БД ==== * [[Сервис Asterisk#Детализация разговоров]] * [[Сервис Asterisk#Asterisk ODBC CDR]] * [[Сервис ODBC#Проверка подключения]] * [[Сервис HTTP#Установка и запуск сервера Apache]] * [[Сервис HTTP#Модуль php]] * [[Язык программирования PHP#Модуль php mysql]] * [[Сервис Asterisk#Шаблон конфигурации для осуществления исходящих вызовов]] * [[Сервис Asterisk#Просмотра статистики CDR и прослушивание записей]] ==== Упражнение 2.4. Хранение конфигурации Asterisk в БД ==== Демонстрирует преподаватель * [[Сервис Asterisk#Asterisk realtime]] * [[Сервис MySQL#phpmyadmin]] или [[Сервис MySQL#adminer]] ==== Упражнение 2.5. Примеры работы с БД из диалплана ==== В классе, лучше, после создания и подключения каналов 403 и 404 в следующем модуле * [[Сервис Asterisk#Шаблон конфигурации для обработки входящих вызовов]] * Запустить установку [[Сервис Festival]] * [[Сервис Asterisk#Asterisk ODBC функции]] ===== Вопросы ===== * В чем преимущества хранения данных в RDBMS? * В чем преимущества использования интерфейса ODBC? * В какие внешние системы может передавать Asterisk данные CDR? ===== Модуль 3. Управление конфигурацией Asterisk из внешних приложений ===== ==== Теория ==== * [[FreePBX]] * [[https://habrahabr.ru/post/125359/|Скрипт на perl формирующий users.conf и extensions.conf]] * [[http://free.oxymium.net/Asterisk/|Asterisk LDAP Realtime driver]] * [[https://wiki.asterisk.org/wiki/display/AST/LDAP+Realtime+Driver|Asterisk Realtime Lightweight Directory Access Protocol (LDAP) Driver]] * [[http://blog.sepa.spb.ru/2012/04/asterisk-sync-with-active-directory.html|Asterisk sync with Active Directory]] * [[https://youtu.be/ofbIsW2Bqbc|Видео: Использование телефонии Asterisk на предприятии с инфраструктурой Microsoft Active Directory]] * Взаимодействие с Microsoft Windows [[linux_freebsd_взаимодействие_с_microsoft_windows#Модуль 5. Протокол LDAP]] ==== Лабораторные работы ==== ==== Упражнение 3.1. Развертывание инфраструктуры Microsoft AD на предприятии ==== * [[Развертывание Active Directory]] ==== Упражнение 3.2. Конфигурация Asterisk на основании информации в Microsoft AD ==== * Видео урок: [[Открытое решение IM и Presence в инфраструктуре Microsoft AD]] * [[Сервис Asterisk#Интеграция с Microsoft AD и LDAP]] ==== Упражнение 3.3. Подключение телефонных аппаратов ==== * [[Сервис Asterisk#Provisioning]] * SIP Phone Panasonic KX-HDVXXX [[SIP Phone Panasonic KX-HDVXXX#Перезагрузка]] * [[PhonerLite]] * Linksys SPA-3102 [[Linksys SPA-3102#Восстановление фабричных настроек]] (вероятно, тоже хватит перезагрузки) ===== Вопросы ===== * Почему нет смысла хранить в AD имена/секреты каналов абонентских телефонов? ===== Модуль 4. Использование модулей Asterisk для интеграции с внешними системами ===== ==== Теория ==== * [[https://ru.wikipedia.org/wiki/Синтез_речи|Синтез речи]] * [[http://ru.wikipedia.org/wiki/Унифицированные_коммуникации|Унифицированные коммуникации]] * Основы протоколов [[https://ru.wikipedia.org/wiki/SMTP|SMTP]] и [[https://ru.wikipedia.org/wiki/IMAP|IMAP]] * Варианты использования почтового сервера для голосовой почты * [[https://ru.wikipedia.org/wiki/XMPP|eXtensible Messaging and Presence Protocol]] * [[https://habrahabr.ru/post/137124/|Связываем Active Directory, Asterisk и OpenFire]] ==== Лабораторные работы ==== ==== Упражнение 4.1. Интеграция с системой синтеза речи Festival ==== * [[Сервис Festival]] * [[Сервис Asterisk#Синтез речи с использованием пакета Festival]] * [[Zabbix Вам позвонит и расскажет...]] ==== Упражнение 4.2. Интеграция с системами электронной почты ==== * [[Управление учетными записями в Linux]] * [[Сервис MTA#Установка и настройка MTA на обработку почты домена hostname]] * [[Сервис MTA#Настройка MTA на обработку почты домена corpX.un]] * [[Сервер dovecot]] * [[Web интерфейс к почте]] * [[Сервер dovecot]] (через [[Сервис Ansible]], добавить сертификат в репозиторий linux, см. комментарии voicemail.conf) # ansible-playbook conf/ansible/roles/mail.yml * Создать ящик для абонента 403 в формате imap подключиться к почтовому серверу для прослушивания голосовой почты можно с домашнего компьютера по адресу http://172.16.1.X/mail * Можно создать пользователя user3 (точно пригодится в 5-м модуле) # useradd -m user3 # passwd user3 ... password3 * [[Сервис Asterisk#Локализация сообщений Asterisk]] * [[Сервис Asterisk#Голосовая почта]] * Для прослушивания голосовой почты настроить звонок на номер своего телефона ==== Упражнение 4.3. Интеграция с системами IM и Presense ==== Сценарий: уведомляем пользователей о звонке (и кто звонит) на их телефон через xmpp клиент (удобно для пользователей телефонов без дисплеев), управляем вызовом согласно статусу присутствия абонента. * Добавляем в стенд client3 (в классе) * Сервис OpenFire [[Сервис OpenFire#Установка]] * Сервис OpenFire [[Сервис OpenFire#Подключение и предварительная настройка]] * Сервис OpenFire [[Сервис OpenFire#Управление учетными записями]] (достаточно user3/password3) * Cделать всех "buddy" для мониторинга статуса абонента (может потребоваться перезапуск сервиса asterisk) * Проверяем наличие MY-USER-ID для 403 канала ([[Сервис Asterisk#Настройка базового функционала IP PBX]]) * [[Сервис Asterisk#XMPP]] ===== Вопросы ===== * Как проверить наличие и добавить нужный модуль в Astеrisk * По какой причине предварительная запись звуковых сообщений предпочтительнее синтеза речи? * Какие виды хранилищ может использовать Asterisk для голосовой почты? ===== Модуль 5. Запуск внешних приложений из Asterisk ===== ==== Теория ==== * [[http://www.itp-redial.com/class/weekly-notes/week4-notes/system-and-shell|System and SHELL]] ==== Лабораторные работы ==== * [[Сервис Asterisk#Функция SHELL]] * Простой пример использования [[Сервис Asterisk#Приложение System]] * Новая версия вебинара "Голосовые сервисы помогут голосовой почте!" начиная с последнего пункта [[Голосовые сервисы помогут голосовой почте!#Шаг 3. Настраиваем asterisk]] и до конца ===== Вопросы ===== - Чем System отличается от SHELL ===== Модуль 6. Управление Asterisk-ом из приложений ===== ==== Теория ==== * Программные интерфейсы Asterisk * [[http://www.pbxware.ru/wiki/asterisk_managment_interface_ami/|Asterisk Managment Interface (AMI)]] * [[http://www.jcgonzalez.com/test-asterisk-ami-telnet|Log in, Log out from Asterisk AMI with Telnet]] * [[http://habrahabr.ru/company/centosadmin/blog/161521/|Asterisk: обратный вызов с использованием AMI и PHP]] * [[https://voxlink.ru/kb/asterisk-configuration/call-files-in-asterisk/|Использование Call-файлов в Asterisk]] * Интерфейс AGI * [[http://www.voip-info.org/wiki/view/Asterisk+AGI|Asterisk Gateway Interface (AGI)]] * [[http://www.it4ru.ru/index.php/ru/2-uncategorised/17-prostoj-primer-agi.html|Простой пример AGI на PHP]] * [[https://habrahabr.ru/post/133869/|Синтез и распознавание речи от Google для Asterisk]] * Варианты интеграции систем CRM и Asterisk * [[https://bx24asterisk.ru/instruction/]] * [[https://ru.wikipedia.org/wiki/REST|REST wikipedia]] * [[https://ru.wikipedia.org/wiki/JSON|JSON — Википедия]] * [[http://subnets.ru/blog/?p=5416|В Asterisk появился REST Interface (ARI)]] ==== Лабораторные работы ==== ==== Упражнение 6.1. Интерфейсы для программистов на примере задачи "обратный звонок" для посетителей сайта ==== * !!! Запустить установку необходимых пакетов для CRM * [[Сервис Asterisk#Организация обратных вызовов]] (ключ -x) * HTML [[Сервис HTTP#Форма]] * [[Сервис HTTP#Модуль php]] * [[Пакет sudo]] * [[Язык программирования PHP#Обработка полей формы и вызов внешних программ]] * [[Сервис Asterisk#Организация обратных вызовов]] (call файлы) * [[Сервис Asterisk#Asterisk AMI]] * [[Программирование диалогов expect]] ==== Упражнение 6.2. Динамическая генерация плана нумерации ==== * [[Сервис Asterisk#Asterisk AGI]] ==== Упражнение 6.3. Пример интеграция с системой CRM ==== * [[Сервис SalesPlatform Vtiger CRM Russian]] * [[Сервис SalesPlatform Vtiger CRM Russian#Интеграция с Asterisk]] ==== Упражнение 6.4. Asterisk REST интерфейс ==== Включение и тестирование ARI * [[https://wiki.asterisk.org/wiki/display/AST/Getting+Started+with+ARI|Getting Started with ARI]] * [[Сервис Asterisk#Asterisk ARI]] * [[http://ari.asterisk.org/|Asterisk REST API Browser]] (заработал из Firefox) Организация обратных вызовов через ARI * [[Сервис Asterisk#Организация обратных вызовов]] - Пример с использованием Asterisk ARI Мониторинг Asterisk через ARI * [[Сервис Asterisk#Мониторинг Asterisk через ARI]] Динамическая генерация далплана через ARI * [[Сервис Asterisk#ARI Stasis]] Пример работающего приложения * Сервис HTTP [[Сервис HTTP#Управление кодировкой]] * [[http://server.corpX.un/asterisk/addrbook.txt]] * [[https://chrome.google.com/webstore/detail/asterisk-click2call/hlnmjkbpmnbgeondjeceaomhafdacmlj?hl=ru|Asterisk Click2Call]] (в URL не ставить / в конце) 403 http://server.corpX.un:8088 default asterisk asterisk Convert phone numbers ===== Вопросы ===== * Почему приходится использовать sudo для интеграции приложений Web и Asterisk? * Что общего у интерфейсов Asterisk AGI и Web CGI? * Как интерфейс ARI позволяет заменить интерфейсы AGI и AMI?