AsteriskTM: The Future of Telephony Second Edition Jim Van Meggelen, Leif Madsen, and Jared Smith AsteriskTM: будущее телефонии Второе издание Джим Ван Меггелен, Лейф Мадсен и Джаред Смит Санкт-Петербург – Москва 2009 Джим Ван Меггелен, Лейф Мадсен, Джаред Смит Asteriskтм: будущее телефонии, 2-е издание Перевод Н. Шатохиной Главный редактор А. Галунов Зав. редакцией Н. Макарова Выпускающий редактор Л. Пискунова Научный редактор А. Бирюков Редактор Е. Тульсанова Корректор Е. Бекназарова Верстка Н. Пискунова Меггелен Дж., Мадсен Л., Смит Дж. Asteriskтм: будущее телефонии, 2-е издание. – Пер. с англ. – СПб: Символ-Плюс, 2009. – 656 с., ил. ISBN13: 978-5-93286-128-8 ISBN10: 5-93286-128-2 Asterisk – система телефонии, обладающая такими фантастическими возмож- ностями, о которых обычная офисная коммутируемая АТС может только меч- тать. Голосовая почта, конференц-связь, очереди вызовов и агенты, музыка во время ожидания и парковка вызовов – это лишь часть функций, обеспечивае- мых Asterisk. Описать в одной книге всю функциональность этой необыкно- венно гибкой системы невозможно, но вы получите исчерпывающее представ- ление о базовых функциях Asterisk. А проявив свои творческие способности, вы сможете создать офисную АТС, настроенную целиком под ваши нужды с учетом абсолютно всех требований пользователей. ISBN13: 978-5-93286-128-8 ISBN10: 5-93286-128-2 ISBN 0-596-51048-0 (англ) © Издательство Символ-Плюс, 2009 Authorized translation of the English edition of AsteriskТМ: The Future of Telephony, Second Edition © 2007 O’Reilly Media Inc. This translation is published and sold by permission of O’Reilly Media Inc., the owner of all rights to publish and sell the same. Все права на данное издание защищены Законодательством РФ, включая право на полное или частич- ное воспроизведение в любой форме. Все товарные знаки или зарегистрированные товарные знаки, упоминаемые в настоящем издании, являются собственностью соответствующих фирм. Издательство «Символ-Плюс». 199034, Санкт-Петербург, 16 линия, 7, тел. (812) 3245353, www.symbol.ru. Лицензия ЛП N 000054 от 25.12.98. Налоговая льгота – общероссийский классификатор продукции ОК 005 93, том 2; 953000 - книги и брошюры. Подписано в печать 29.09.2008. Формат 70х100 1/ . Печать офсетная. Объем 41 печ. л. Тираж 2000 экз. За1к6аз N Отпечатано с готовых диапозитивов в ГУП «Типография «Наука» 199034, Санкт-Петербург, 9 линия, 12. Эта книга посвящается Ричу Адамсону (1947–2006). Спасибо вам за то, что открыли для нас значимость сообщества. Оглавление Предисловие ..........................................................................13 Введение ...............................................................................16 1. Революция в телефонии ...................................................28 VoIP: наведение мостов между традиционной и сетевой телефонией ............................................................29 Для широкомасштабных изменений необходима гибкая технология ..............................................31 Asterisk: офисная АТС, создаваемая хакерами .........................33 Asterisk: офисная АТС, создаваемая профессионалами ..............33 Сообщество разработчиков Asterisk ........................................34 Экономическое обоснование ..................................................37 Об этой книге ......................................................................37 2. Подготовка системы к установке Asterisk .........................39 Выбор серверного оборудования .............................................42 Окружение ..........................................................................52 Оборудование для телефонии .................................................57 Типы телефонов ...................................................................61 Некоторые вопросы Linux .....................................................67 Заключение ........................................................................67 3. Установка Asterisk ............................................................68 Какие нужны пакеты ...........................................................69 Получение исходного кода ....................................................71 8 Оглавление Окно выбора компонентов сборки ...........................................74 Компиляция Zaptel ..............................................................76 Компиляция libpri ...............................................................79 Компиляция Asterisk ...........................................................80 Установка дополнительных голосовых сообщений ....................83 Распространенные проблемы компиляции ..............................84 Быстрая загрузка Asterisk и Zaptel .........................................88 Загрузка модулей Zaptel без использования сценариев ..............88 Загрузка libpri без использования сценария ............................90 Запуск Asterisk без использования сценариев ..........................90 Папки, используемые Asterisk ...............................................92 AsteriskNOWTM ....................................................................96 Заключение ......................................................................101 4. Исходная конфигурация Asterisk ...................................102 Что мне на самом деле нужно ...............................................103 Работа с конфигурационными файлами интерфейсов ..............104 Настройка диалплана для выполнения тестовых вызовов ........107 Каналы FXO и FXS .............................................................107 Конфигурация канала FXO для соединения с PSTN ................109 Конфигурация канала FXS для аналогового телефона .............114 Конфигурация SIP-телефонов ..............................................116 Подключение к поставщику сервисов SIP ..............................135 Соединение двух серверов Asterisk по протоколу SIP...............139 Конфигурация программного телефона IAX ..........................144 Подключение к поставщику сервисов IAX .............................148 Соединение двух серверов Asterisk по протоколу IAX ..............149 Использование шаблонов в конфигурационных файлах ...........154 Отладка ............................................................................155 Заключение ......................................................................157 5. Основы диаллана ...........................................................158 Синтаксис диалплана .........................................................158 Простой диалплан .............................................................164 Оглавление 9 Создание интерактивного диалплана ....................................167 Заключение ......................................................................186 6. Дополнительные концепции диалплана ........................187 Выражения и работа с переменными .....................................187 Функции диалплана ..........................................................190 Выполнение переходов по условию .......................................191 Голосовая почта .................................................................196 Макрос .............................................................................200 Использование базы данных Asterisk (AstDB) ........................203 Полезные функции Asterisk ................................................206 Заключение ......................................................................209 7. Что такое телефония ......................................................210 Аналоговая телефония ........................................................210 Цифровая телефония ..........................................................214 Цифровая коммутируемая телефонная сеть ...........................224 Сети с коммутацией пакетов ................................................229 Заключение ......................................................................229 8. Протоколы для VoIP ........................................................230 Зачем нужны протоколы VoIP .............................................231 Протоколы VoIP ................................................................232 Кодеки .............................................................................240 Качество и класс предоставляемых услуг передачи данных ......244 Эхо ..................................................................................247 Asterisk и VoIP ..................................................................249 Безопасность VoIP ..............................................................252 Заключение ......................................................................255 9. Шлюзовой интерфейс Asterisk (AGI) ...............................256 Основы обмена информацией с AGI.......................................257 Написание сценариев AGI на Perl .........................................259 Создание сценариев AGI на PHP ...........................................264 Написание сценариев AGI на Python .....................................270 10 Оглавление Отладка в AGI ...................................................................274 Заключение ......................................................................275 10. Интерфейс Asterisk Manager (AMI) и Adhearsion ............276 Интерфейс Manager ............................................................276 Flash Operator Panel ...........................................................280 Разработка в Asterisk с использованием Adhearsion ................281 11. Инфраструктура Asterisk GUI ..........................................294 Зачем нужен GUI для Asterisk .............................................294 Что такое GUI ....................................................................296 Архитектура Asterisk GUI ...................................................298 Установка Asterisk GUI ......................................................299 Формирование Asterisk GUI ................................................301 12. Интеграция с реляционной базой данных .....................313 Введение ...........................................................................313 Установка СУБД PostgreSQL ...............................................314 Установка и конфигурация ODBC .........................................315 Использование архитектуры реального времени .....................318 Хранение записей параметров вызовов ..................................323 Ощутим могущество func_odbc: система «горячих столов» ......325 Реализация голосовой почты с использованием ODBC .............338 Заключение ......................................................................344 13. Управление системой Asterisk ........................................345 Запись параметров вызовов .................................................345 Работа с журналами регистрации .........................................347 Выполнение Asterisk под учетной записью пользователя, не обладающего правами администратора .............................348 Настройка голосовых сообщений системы .............................351 Музыка во время ожидания .................................................353 Заключение ......................................................................357 14. Попурри ..........................................................................358 Festival .............................................................................358 Файлы вызовов ..................................................................361 Оглавление 11 DUNDi..............................................................................362 Альтернативные методы хранения голосовой почты ...............369 Asterisk и Jabber (XMPP) ....................................................372 Заключение ......................................................................373 15. Asterisk – будущее телефонии ........................................374 Проблемы традиционной системы телефонной связи ...............374 Смена взглядов и понятий ...................................................378 Перспектива телефонии с открытым исходным кодом .............378 Будущее Asterisk ...............................................................385 A. Каналы VoIP ....................................................................396 B. Справочник по приложениям .........................................431 C. Справочник по AGI .........................................................522 D. Конфигурационные файлы ............................................533 E. Функции диалплана Asterisk ..........................................570 F. Команды интерфейса Asterisk Manager .........................593 G. Пример func_odbc ...........................................................633 Алфавитный указатель........................................................638