====== Asterisk. Интеграция ======
===== Программа курса =====
* [[http://www.specialist.ru/course/asterisk3|Asterisk. Уровень 2. Интеграция с внешними системами]]
===== Цель курса =====
Изучить интерфейсы и варианты интеграции Asterisk с внешними системами
===== Модуль 0. Подготовка стенда в классе =====
* Узнать свой номер стенда
* Удалить виртуалки
* Удалить профили putty
* Отключить не используемые адаптеры
* Записать логин пароль и IP (сообщить преподавателю) рабочей станции
* Проверить наличие дистрибутивов и образов
===== Модуль 1. Развертывание компьютерной и телефонной сети предприятия =====
==== Теория ====
* Базовая схема компьютерной сети предприятия
* Базовая схема телефонии предприятия
* Схема информационных систем предприятия
==== Лабораторные работы ====
==== Упражнение 1.1. Настройка сервера Asterisk, sip каналов и базового диалплана ====
* Настройки VM RAM: 1Gb, Audio: AC97 (для festival)
* [[Сервис Asterisk#Установка]] Asterisk
* [[Сервис Asterisk#Настройка базового функционала IP PBX]]
===== Модуль 2. Интеграция с реляционными базами данных =====
==== Теория ====
* Основы реляционных баз данных ([[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 к СУБД и хранение CDR в БД ====
* [[Сервис Asterisk#Использование СУБД для хранения CDR]]
* [[Сервис ODBC]]
* [[Сервис Asterisk#Asterisk ODBC]]
* [[Сервис Asterisk#Asterisk ODBC CDR]]
==== Упражнение 2.3. Хранение конфигурации Asterisk в БД ====
* [[Сервис Asterisk#Asterisk realtime]]
* Проверить, подключив ZoIPer к 404-му каналу
[root@gate.isp.un:~]# cat exten_secret_proxy_mac_model_table.txt
* [[Сервис Asterisk#Provisioning]]
* SIP Phone Panasonic KX-HDVXXX [[SIP Phone Panasonic KX-HDVXXX#Сброс к заводским установкам]]
* Linksys SPA-3102 [[Linksys SPA-3102#Восстановление фабричных настроек]]
==== Упражнение 2.4. Использование WEB приложений для работы с базами данных Asterisk ====
* [[Сервис HTTP#Установка и запуск сервера Apache]]
* [[Сервис HTTP#Модуль php]]
* [[Язык программирования PHP#Модуль php mysql]]
* [[Сервис Asterisk#Просмотра статистики CDR и прослушивание записей]]
* [[Сервис MySQL#phpmyadmin]] или [[Сервис MySQL#adminer]]
* Заполняем поле fullname (не более 40 символов) для канала 403 - Ваше ФИО, для 404 - Василий Кошкин
==== Упражнение 2.5. Примеры работы с БД из диалплана ====
* [[Сервис Asterisk#Asterisk ODBC функции]]
===== Вопросы =====
* Какие имеются способы управления модулями/функциональностью астериск
* В чем преимущества использования интерфейса ODBC?
* В какие внешние системы может передавать Asterisk данные CDR?
===== Модуль 3. Интеграция с системой синтеза речи Festival =====
==== Теория ====
* [[https://ru.wikipedia.org/wiki/Синтез_речи|Синтез речи]]
==== Лабораторные работы ====
==== Упражнение 3.1. Развертывание сервиса Festival ====
* [[Сервис Festival]]
==== Упражнение 3.2. Варианты использования Festival в Asterisk ====
* [[Сервис Asterisk#Синтез речи с использованием пакета Festival]]
* [[Сервис Asterisk#Asterisk ODBC функции]]
===== Вопросы =====
* По какой причине предварительная запись звуковых сообщений предпочтительнее синтеза речи?
===== Модуль 4. Интеграция с системами электронной почты =====
==== Теория ====
* [[http://ru.wikipedia.org/wiki/Унифицированные_коммуникации|Унифицированные коммуникации]]
* Основы протоколов [[https://ru.wikipedia.org/wiki/SMTP|SMTP]] и [[https://ru.wikipedia.org/wiki/IMAP|IMAP]]
* Варианты использования почтового сервера для голосовой почты
==== Лабораторные работы ====
==== Упражнение 4.1. Развертывание почтового сервера предприятия ====
* [[Управление учетными записями в Linux]]
* [[Сервис MTA#Установка и настройка MTA на обработку почты домена hostname]]
* [[Сервис MTA#Настройка MTA на обработку почты домена corpX.un]]
* [[Сервер dovecot]]
* [[Web интерфейс к почте]]
==== Упражнение 4.2. Размещение голосовой почты на почтовом сервере ====
Создать ящик для пользователя 403 в формате imap
* [[Сервис Asterisk#Голосовая почта]]
* [[Сервис Asterisk#Локализация сообщений Asterisk]]
* Для прослушивания голосовой почты настроить звонок на номер своего телефона
===== Вопросы =====
* Какие виды хранилищ может использовать Asterisk для голосовой почты?
===== Вопросы =====
===== Модуль 5. Интеграция c web приложениями =====
==== Теория ====
* Варианты взаимодействия веб приложений и Asterisk
==== Лабораторные работы ====
==== Упражнение 5.1. Развертывание WEB сервера предприятия ====
* [[Сервис HTTP#Установка и запуск сервера Apache]]
==== Упражнение 5.2. Реализация функции "обратный звонок" для посетителей Вашего сайта ====
* [[Сервис Asterisk#Шаблон конфигурации для осуществления исходящих вызовов]]
* [[Сервис Asterisk#Шаблон конфигурации для обработки входящих вызовов]]
* [[Сервис Asterisk#Организация обратных вызовов]] (в том числе call файлы)
* HTML [[Сервис HTTP#Форма]]
* [[Сервис HTTP#Модуль php]]
* [[Пакет sudo]]
* [[Язык программирования PHP#Обработка полей формы и вызов внешних программ]]
==== Упражнение 5.3. Предоставляем операторам возможность звонить, указав номер абонента в форме на сайте ====
* [[Сервис HTTP#CGI интерфейс сервера]] (не обязательно)
* [[Сервис HTTP#Управление доступом к HTTP серверу на основе Basic аутентификации]]
/*
* [[Сервис HTTP#SSI интерфейс сервера]]
*/
* [[Сервис HTTP#Свойство ExecCGI каталогов]]
...
Options +ExecCGI
AddHandler cgi-script .cgi
...
# cp /usr/lib/cgi-bin/test-cgi /var/www/html/asterisk/test.cgi
* [[Язык программирования PHP#Обработка полей формы и вызов внешних программ]]
==== Упражнение 5.4. Размещение адресной книги предприятия в WEB портале с возможностью позвонить одним нажатием ====
См. модуль 10
==== Упражнение 5.5. Использование WebRTC ====
* [[Пакет OpenSSL#Создание самоподписанного сертификата]] для системы server.corpX.un
* [[Сервис Asterisk#WebRTC]]
===== Вопросы =====
* Почему приходится использовать sudo для интеграции приложений Web и Asterisk?
===== Модуль 6. Использование приложений System и SHELL =====
==== Теория ====
* Приложения [[http://www.itp-redial.com/class/weekly-notes/week4-notes/system-and-shell|System and SHELL]]
==== Лабораторные работы ====
==== Упражнение 6.1. Примеры вызова внешних приложений из Asterisk ====
* [[Пакет sudo]]
* [[Сервис Asterisk#Приложение System]]
* [[Сервис Asterisk#Приложение SHELL]]
==== Упражнение 6.2. Интеграция с биллинговыми системами ====
* Биллинговые системы - основные понятия
* Варианты интеграции биллинговых систем и Asterisk
* Коробочные решения ([[http://www.asterisk2billing.org/]])
* Постоплатная система расчетов с использованием файлов CDR ([[https://www.lanbilling.ru/content/lanbilling-agents-pabx|Агент PABX (УПАТС)]])
* Сервис RADIUS
* Постоплатная система расчетов с ([[http://asterisk.ru/knowledgebase/Asterisk+cdr+radius|протоколированием CDR на сервер RADIUS]]
* Предоплатная система расчетов с аутентификацией [[https://www.voip-info.org/wiki/view/PortaOne+Radius+auth|PortaOne Radius auth]]
=== Развертывание RADIUS сервера ===
* [[Сервис FreeRADIUS]] См. /*
при первой демонстрации radutmp не включать
*/ примечание
=== Упражнение 6.3. Предоплатная тарификация с использованием RADIUS ===
* [[Сервис Asterisk#Аутентификация и учет звонков в RADIUS]]
===== Вопросы =====
===== Модуль 7. Интеграция с системами IM и Presense =====
==== Теория ====
* [[https://ru.wikipedia.org/wiki/XMPP|eXtensible Messaging and Presence Protocol]]
==== Лабораторные работы ====
==== Упражнение 7.1. Поддержка протокола XMPP в Asterisk ====
Сценарий: уведомляем пользователей о звонке (и кто звонит) на их телефон через xmpp клиент (удобно для пользователей телефонов без дисплеев), управляем вызовом согласно статусу присутствия абонента.
* Добавляем в стенд client3
* [[Сервис OpenFire]]
* Заполняем MY-USER-ID для 403-го канала ([[Сервис Asterisk#Настройка базового функционала IP PBX]])
* [[Сервис Asterisk#XMPP]]
===== Вопросы =====
===== Модуль 8. Интеграция с Microsoft AD и LDAP =====
==== Теория ====
* Взаимодействие с Microsoft Windows [[linux_freebsd_взаимодействие_с_microsoft_windows#Модуль 5. Протокол LDAP]]
* Варианты использования LDAP каталога и Asterisk
==== Лабораторные работы ====
==== Упражнение 8.1. Развертывание инфраструктуры Microsoft AD на предприятии ====
* [[Развертывание Active Directory]]
==== Упражнение 8.2. Конфигурация Asterisk на основании информации в Microsoft AD ====
* [[Сервис Asterisk#Интеграция с Microsoft AD и LDAP]]
==== Упражнение 8.3. Управление Asterisk через интерфейс AMI ====
* [[Сервис Asterisk#Asterisk AMI]]
См. /*
Эту работу демонстрирует преподаватель на готовом стенде после темы AD (заодно с LDAP и SSO)
*/
примечание
* [[Сервис OpenFire#Установка c Asterisk-IM]]
* [[Сервис OpenFire#Подключение и предварительная настройка]]
* [[Сервис OpenFire#Использование LDAP каталога]]
===== Вопросы =====
* Почему нет смысла хранить в AD имена/секреты каналов абонентских телефонов?
===== Модуль 9. Интеграция с системами CRM =====
==== Теория ====
* Интерфейс AGI
* Основы систем управления взаимоотношениями с клиентами
* Варианты интеграции систем CRM и Asterisk
* [[https://bx24asterisk.ru/instruction/]]
==== Лабораторные работы ====
==== Упражнение 9.1. Примеры приложений с AGI интерфейсом ====
* [[Сервис Asterisk#Asterisk AGI]]
==== Упражнение 9.2. Развертывание CRM системы предприятия ====
* [[Сервис SalesPlatform Vtiger CRM Russian]]
==== Упражнение 9.3. Развертывание модуля интеграции системы CRM и Asterisk ====
* [[Сервис SalesPlatform Vtiger CRM Russian#Интеграция с Asterisk]]
===== Вопросы =====
* Что общего у интерфейсов Asterisk AGI и Web CGI?
===== Модуль 10. Asterisk REST интерфейс =====
==== Теория ====
* [[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)]]
==== Лабораторные работы ====
==== Упражнение 10.1. Включение и тестирование 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]]
==== Упражнение 10.2. Варианты использования ARI ====
Сценарий: Реализовать возможность вызова абонента "щелчком" из адресной книги на web сайте
* [[Сервис Asterisk#Организация обратных вызовов]] - Пример с использованием Asterisk ARI
* [[https://chrome.google.com/webstore/detail/asterisk-click2call/hlnmjkbpmnbgeondjeceaomhafdacmlj?hl=ru|Asterisk Click2Call]]
# cat /var/www/html/index.html
Тестовый звонок 301
Проверка гарнитуры 311
Петр Петрович Петров 402
* [[Сервис HTTP#SSI интерфейс сервера]]
* [[Сервис HTTP#Управление доступом к HTTP серверу на основе Basic аутентификации]]
# cat /var/www/html/asterisk/index.shtml
* [[Сервис Asterisk#Мониторинг Asterisk через ARI]]
==== Упражнение 10.3. Варианты приложения Stasis ====
* [[Сервис Asterisk#ARI Stasis]]
===== Вопросы =====
* Как интерфейс ARI позволяет заменить интерфейсы AGI и AMI?