Asterisk. Полное руководство

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Design a complete Voice over IP (VoIP) or traditional PBX system with Asterisk, even if you have only basic telecommunications knowledge. This bestselling guide makes it easy with a detailed roadmap that shows you how to install and configure this open source software, whether you're upgrading your existing phone system or starting from scratch. Ideal for Linux administrators, developers, and power users, this updated fifth edition shows you how to set up VoIP-based private telephone switching systems within the enterprise. You'll get up to speed on the features in Asterisk 16, the latest long-term support release from Digium. This book also includes new chapters on WebRTC and the Asterisk Real-time Interface (ARI). Discover how WebRTC provides a new direction for Asterisk Gain the knowledge to build a simple but complete phone system Build an interactive dialplan, using best practices for Asterisk's advanced features Learn how ARI has emerged as the API of choice for interfacing web development languages with Asterisk

Author(s): Ван Меггелен Д., Брайант Р., Мэдсен Л.
Edition: 5
Publisher: O′Reilly
Year: 2019

Language: Russian
Pages: 309

Вступление
Джошуа Кольп (Старший разработчик программного обеспечения, Sangoma/Digium)
Дэн Дженкинс (Основатель компании Nimble Ape Ltd)
Джойс Уилмот (Старший веб-разработчик)
Мэтт Florell (Основатель VICIdial)
Мэтт Фредриксон (Директор Asterisk Engineering, Sangoma/Digium)
Предисловие
Аудитория
Программное обеспечение
Условные обозначения используемые в книге
Онлайн обучение O’Reilly
Как с нами связаться
Благодарности от Джима Ван Меггелена
Глава 1. Революция в телефонии
Asterisk и VoIP: преодоление разрыва между традиционной и сетевой телефонией
Проект телефонии Zapata
Массовые изменения требуют гибкости технологий
Asterisk: хакерская УАТС
Asterisk: профессиональная УАТС
Сообщество Asterisk
Дискусионный сайт сообщества Asterisk
Списки рассылки Asterisk
Сайт Asterisk Wiki
IRC-каналы
Вывод
Глава 2. Архитектура Asterisk
Модули
Приложения
Модули соединений
Модули записи деталей вызова (CDR)
Модули журналирования событий канала
Драйверы каналов
Трансляторы кодеков
Интерпретаторы формата
Функции диалплана
PBX Модули
Модули ресурсов
Бэкэнды конфигурации
Итеграция календаря
Другие модули ресурсов
Дополнительные модули
Тестовые модули
Файловая структура
Конфигурационные файлы
Модули
Библиотека ресурсов
Spool
Журналирование
Диалплан
Аппаратные средства
Версии Asterisk
Вывод
Глава 3. Установка Asterisk
Установка Linux
Выбор вашей платформы
Шаги для VirtualBox
Linux (OpenStack) Host
Зависимости
Установка Asterisk
Загрузка и необходимые компоненты
Компиляция и установка
Начальная конфигурация
Настройки SELinux
Настройки брандмауера
Финальные настройки
Проверка вашей новой системы Asterisk
Распространенные ошибки установки
Некоторые финальные заметки по конфигурации
Примеры файлов конфигурации для дальнейшего использования
Командная оболочка Asterisk
safe_asterisk
Вывод
Глава 4. Сертификаты для безопасности конечных точек
Неудобство безопасности
Безопасность SIP
Имена подписчиков
Безопасность SIP-сигнализации
Самозаверенные сертификаты
Сертификаты LetsEncrypt
Приобретение сертификатов в официальном центре сертификации
Защита медиапотока
Шифрование RTP
Вывод
Глава 5. Конфигурация пользовательских устройств
Концепции именования телефонов
Телефоны, софтфоны и телефонные адаптеры
Настройка Asterisk
Как конфигурация канала работает с диалпланом
chan_pjsip
Добавление конечной точки
Тестирование чтобы убедиться что ваши устройства зарегистрированы
Базовый диалплан для тестирования ваших устройств
Под капотом: Ваш первый звонок
Вывод
Глава 6. Основы диалплана
Синтаксис диалплана
Контексты
Extensions (расширения)
Приоритеты
Ненумерованные приоритеты
Оператор same =>
Метки приоритетов
Приложения
Приложения Answer(), Playback() и Hangup()
Базовый прототип диалплана
Простой диалплан
Hello World
Создание интерактивного диалплана
Приложения Goto(), Background() и WaitExten()
Обработка неверных значений и тайм-аутов
Использование приложения Dial()
Аргумент 1: назначение
Аргумент 2: таймаут
Аргумент 3: опции
Аргумент 4: URI
Обновление диалплана
Пустые аргументы
Использование переменных
Глобальные переменные
Канальные переменные
Переменные среды
Добавление переменных в ваш диалплан
Объединение переменных
Наследование переменных канала
Совпадения по шаблонам
Синтаксис сравнения по шаблонам
Североамериканский план нумерации - примеры совпадений шаблонов
Общие глобальные совпадения шаблонов
Использование канальной переменной ${EXTEN}
Включения (Includes)
Вывод
Глава 7. Внешние подключения
Основы транкинга
Фундаментальный диалплан для исходящих соединений
ТфОП
Традиционные транки ТфОП
Аналоговая телефония
Цифровая телефония
VoIP
Преобразование сетевых адресов (NAT)
Конечные точки за NAT
Asterisk за NAT
Терминация и инициирование ТфОП
Терминация ТфОП
Инициирование ТфОП
Настройка SIP-транков
Подключение системы Asterisk к SIP-провайдеру
Набор экстренных служб
Вывод
Глава 8. Голосовая почта
Файл конфигурации voicemail.conf
Исходный файл voicemail.conf
Секция [general]
Секция [zonemessages]
Почтовые ящики
Интеграция диалплана голосовой почты
Приложение диалплана VoiceMail()
Приложение диалплана VoiceMailMain()
Стандартные комбинации кнопок голосовой почты
Создание каталога набор-по-имени
Голосовая почта по электронной
Бэкэнды хранения голосовой почты
Файловая система Linux
IMAP
Хранение сообщений в базе данных
Заключение
Глава 9. Интернационализация
Внешние устройства по отношению к серверу Asterisk
Подключение ТфОП, DAHDI, карт Digium и аналоговых телефонов
Драйверы DAHDI
Интернационализация в Asterisk
Caller ID
Язык и/или акцент подсказок
Штампы времени/даты и произношение
Вывод - простая шпаргалка
Глава 10. Погружение в диалплан
Выражения и манипуляции с переменными
Базовые выражения
Операторы
Функции диалплана
Синтаксис
Примеры функций диалплана
Условное ветвление
Приложение GotoIf()
Условное ветвление по времени с GotoIfTime()
GoSub
Определение подпрограмм
Возврат из подпрограммы
Локальные (Local) каналы
Использование базы данных Asterisk
Хранение данных в AstDB
Получение данных из AstDB
Удаление данных из AstDB
Использование AstDB в диалплане
Полезные функции Asterisk
Концеренц-связь с ConfBridge()
Полезные функции диалплана
CALLERID()
CHANNEL()
CURL()
CUT()
IF() и STRFTIME()
LEN()
REGEX()
STRFTIME()
Вывод
Глава 11. Функции АТС, включая парковку, пейджинг и конференц-связь
features.conf
Раздел [general]
Раздел [featuremap]
Раздел [applicationmap]
Группировка сопоставлений приложений
Парковка и пейджинг
Парковка вызовов
Пейджинг (aka Публичное обращение)
Места для отправки Вашего пейджинга
Внешний пейджинг
Аппаратный пейджинг
Многоадресный пейджинг через канал MulticastRTP
SIP-адаптеры для пейджинга
Комбинации пейджинга
Соберем все это вместе
Зоны пейджинга
Продвинутая конферец-связь
Видео-конференцсвязь
Вывод
Глава 12. Очереди автоматического распределения вызовов
Создание простой очереди ACD
Участники очереди
Управление участниками очереди через CLI
Определение участников очереди в таблице queue_members
Управление участниками очереди с помощью логики диалплана
Автоматический вход и выход из нескольких очередей
Расширенные очереди
Очередь с приоритетом (Queue Weighting)
Приоритет участника очереди
Динамическое изменение пенальти (queuerules)
Управление объявлениями
Переполнение
Контроль времени ожидания
Управление временем присоединения и выхода из очереди
Использование локальных каналов
Статистика очереди: файл queue_log
Вывод
Глава 13. Состояния устройств
Состояния устройств
Проверка состояний устройств
Состояния номеров с использованием директивы hint
Хинты
Проверка состояний внутреннего номера
SIP-присутствие
Использование пользовательских состояний устройств
Вывод
Глава 14. Автосекретарь
АС - это не IVR
Проектирование вашего АС
Приветствие
Главное меню
Выбор 1
Выбор 2
Выбор #
Выбор 3
Выбор 9
Выбор 0
Тайм-аут
Invalid (Неверно)
Вызов добавочного номера
Создание вашего АС
Запись подсказок
Использование диалплана для создания записей
Диалплан
Доставка входящих звонков в АС
IVR
Вывод
Глава 15. Интеграция реляционной базы данных
Ваш выбор базы данных
Управление базами данных
Устранение неисправностей базы данных
SQL-инъекция
Мощь вашего диалплана с функцией func_odbc
Мягкое введение в func_odbc
Веселимся с func_odbc: горячий стол
Использование Realtime
Статический Realtime
Динамический Realtime
Хранение записей деталей вызовов (CDR)
Интеграция базы данных с очередями
Хранение параметров диалплана для очереди в базе данных
Запись queue_log в базу данных
Вывод
Глава 16. Введение в интерактивное голосовое меню
Компоненты IVR
Конструктивные соображения IVR
Модули Asterisk для создания IVR
CURL()
func_odbc
AGI
AMI
ARI
Простое IVR с использованием CURL()
Диалплан
Функция записи подсказок IVR
Распознавание речи и преобразование текста-в-речь
Преобразование текста-в-речь
Распознавание речи
Вывод
Глава 17. AMI и файлы вызовов
Файлы вызовов
Ваш первый файл вызова
Заметки о файлах вызова
Быстрый запуск AMI
AMI через TCP
AMI через HTTP
Конфигурация
manager.conf
http.conf
Обзор протокола
Кодировка сообщений
События
Действия
AMI через HTTP
Аутентификация и обработка сессии
Кодирование /rawman (/arawman)
Кодирование /manager (/amanager)
Кодирование /mxml (/amxml)
События диспетчера
Пример использования
Инициирование вызова
Перенаправление вызова
Фреймворки разработки
Вывод
Глава 18. AGI
Быстрый запуск
Варианты AGI
Process-Based AGI
EAGI
FastAGI - AGI через TCP
Async AGI - AMI-контролируемый AGI
Обзор коммуникаций AGI
Установка сеанса AGI
Process-based AGI/FastAGI
Async AGI
Команды и ответы
Process-based AGI/FastAGI
Async AGI
Завершение сеанса AGI
Process-based AGI/FastAGI
Async AGI
Пример: Доступ к базе данных учетной записи
Фреймворки разработки
Вывод
Глава 19. Asterisk REST Interface
Быстрый запуск ARI
Базовая конфигурация Asterisk
Тестирование вашей среды ARI
Работа со средой ARI с использованием Swagger
Строительные блоки ARI
REST
WebSocket
Stasis
Фреймворки
ari-py (и aioari) для Python
node-ari-client
AsterNET.ARI
ari4java
phpari
aricpp
asterisk-ari-client
Вывод
Глава 20. WebRTC
Браузер как телефон
Предварительное знание
Настройка Asterisk для WebRTC
Cyber Mega Phone
Подробнее об WebRTC
Вывод
Глава 21. Системный мониторинг и журналирование
logger.conf
Просмотр журналов Asterisk
Журналирование демоном Linux syslog
Проверка ведения журнала
Ротация лога
Call Detail Records - Записи деталей вызовов
Содержимое CDR
Приложения диалплана
cdr.conf
Бэкэнды
cdr_adaptive_odbc
cdr_csv
cdr_custom
cdr_manager
cdr_odbc
cdr_sqlite
cdr_sqlite3_custom
cdr_syslog
Пример записей деталей вызова
Односторонний вызов
Предостережения
Регистрация событий канала
Вывод
Глава 22. Безопасность
Сканирование действительных учетных записей
Уязвимости аутентификации
Fail2ban
Установка
Конфигурация
Шифрование медиапотока
Уязвимости диалплана
Безопасность сетевых API Asterisk
Другие меры по снижению риска
Ресурсы
Вывод—Лучший идиот
Глава 23. Asterisk: Будущее телефонии
Телефон мертв (за исключением тех случаев, когда это не так)
Перегрузка связи
Проблемы с разработкой открытого исходного кода
Будущее Asterisk
WebRTC
Будущее телефонии
Об авторах
Послесловие