====== 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
&extension=301&context=default&timeout=30&api_key=asterisk:asterisk">
&extension=401&context=default&timeout=30&api_key=asterisk:asterisk">
&extension=402&context=default&timeout=30&api_key=asterisk:asterisk">
&extension=402&context=default&timeout=30&api_key=asterisk:asterisk">
* [[Сервис Asterisk#Мониторинг Asterisk через ARI]] ==== Упражнение 10.3. Варианты приложения Stasis ==== * [[Сервис Asterisk#ARI Stasis]] ===== Вопросы ===== * Как интерфейс ARI позволяет заменить интерфейсы AGI и AMI?