Что такое freepbx и asterisk
Офисная телефония на Asterisk+FreePBX
Предыстроия
Закупки и подготовка
Для связи с городскими телефонными сетями была приобретена плата OpenVox DE130E. Телефоны были закуплены фирмы Grandstream.
Сборка
Asterisk я решил брать не из пакета, а собрать из исходников, так как не было уверенности, что из пакета она заработает с платой OpenVox.
Драйвер DAHDI для OpenVox
Инструкция по сборке и настройке DAHDI драйвера выложена на сайте openvox (PDF). Никаких засад встречено не было. Железяка сразу же увидела поток.
Asterisk
Для работы FreePBX необходимо, чтобы у Asterisk присутствовал manager interface. Этот модуль надо не забыть включить, и перед установкой FreePBX поставить вменяемый пароль и разрешения в файле /etc/asterisk/manager.conf.
Внимание! После этого при запуске вы получите абсолютно живой asterisk в конфигурации «для примера», которая не является образцом безопасности. Иными словами — перекройте файрвол.
FreePBX требует, чтобы Asterisk и Apache крутились от одного и того же пользователя, так что создаем юзера и группу asterisk, прописываем их в конфиг апачу. Пермишены на файлы FreePBX откорректирует самостоятельно.
FreePBX
На удивление, никаких граблей не появилось. Скачал, строго по инструкции создал базу, пользователя, прогнал скрипты, запустил. Можно идти на интерфейс настройки.
Настройка
Начальная настройка
На первом же экране интерфейса администрирования в области «FreePBX Notices» вывалилась куча сообщений о том, что в /etc/asterisk лежит множество конфигурационных файлов, которыми должен управлять сам FreePBX. Я удалил эти файлы (сохранил копии). При нажатии большой красной кнопки «Apply Config» FreePBX сгенерировал нужные файлы сам.
Выбор модулей FreePBX
Подготовка настроек телефонов
Групповые настройки телефонов очень удобно делаются при помощи End Point Manager.
В Connectivity — End Point Configuration надо выбрать производителя и модели телефонов, которые у нас используются. Только для начала стоит кликнуть «Check for Updates», так как проект довольно живой и постоянно выпускает новые модели.
Настройка DHCP
Чтобы телефоны правильно подхватывали свои конфиги, надо сообщить им об этом. Вот кусочек из файла /etc/dhcp/dhcpd.conf :
Обратите внимание на то, где есть кавычки, а где нет. 192.168.xxx.1 — адрес сервера, на котором крутится вся система.
Окончание настройки
Для настройки линий связи с внешним миром служит экран «Connectivity — Trunks». Там прописываются и ваши связи с SIP провайдерами, и, в моем случае, поток через плату OpenVox.
Чтобы расписать, как будут обрабатываться входящие звонки, настраивайте «Connectivity — Inbound Routes». У меня там для потока указано, на какие входящие номера куда отправлять звонок (в каком формате будет приходить DID номер уточняйте у оператора).
Чтобы расписать, как обрабатывать исходящие звонки, используйте «Connectivity — Outbound Routes». Здесь можно настроить, например, межгород через sipnet, или выбор оператора по набираемому префиксу.
Дополнительные вкусности
С первым блоком все понятно, из коробки просто нет настройки для русского языка часов. А вот второй блок может оказаться интересным. По умолчанию системный факс находится на номере 666 (да, авторы FreePBX явно считают факсы злом). При соединении с этим номером факс принимается и отправляется на e-mail, указанный в системе как «системный получатель факса» (у меня это общая папка в Exchange, но туда кроме спама обычно ничего не попадает). А что делать, если факс в ручном режиме хочет принять наш главбух Иван Иванович? И светить его в общей папке он, разумеется, не хочет. У меня в настройках телефона Ивана Ивановича стоит:
И теперь, если Иван Иванович переводит звонок на номер 667, то принятый факс будет отправлен на его личную почту. Не забудьте только поставить GhostScript, чтобы бедный Иван Иванович не мучился, пытаясь открыть tiff.
Выводы
Планы на будущее
Многие очевидные для меня подробности я в этой статье опустил, с удовольствием отвечу на вопросы.
FreePBX: первые шаги по граблям
Начиная знакомство с FreePBX, даже опытные системные администраторы зачастую допускают одни и те же ошибки, которые способны серьезно испортить настроение и отбить всякое желание продолжать освоение этой системы.
В первую очередь, безусловно, это ошибки, связанные с безопасностью станции. Помните, что подключаясь к оператору телефонии вы несете полную финансовую ответственность за звонки, даже если на самом деле вы их не совершали! Давайте посмотрим, что нужно сделать в первую очередь, а чего делать категорически нельзя.
Сразу же после установки системы необходимо отключить возможность приема гостевых и анонимных звонков, если, конечно, вы не собираетесь их использовать. В противном случае, вы фактически предоставляете возможность любому человеку осуществлять звонки через вашу станцию, что может привести к значительным финансовым потерям.
Настройки → Установки Asterisk для SIP → Общие настройки SIP
Настройки → Установки Asterisk для SIP → Установки канала SIP
Несмотря на то, что FreePBX постоянно обновляется, и разработчики прикладывают большие усилия к обеспечению безопасности системы, периодически обнаруживаются уязвимости в коде, используя которые злоумышленники могут получить, например, параметры доступа к вашим операторам связи. Несмотря на то, что в таком случае звонки будут поступать не с вашей станции, оператор, скорее всего, потребует оплаты именно с вас. Поэтому не следует забывать о защите веб-интерфейса: если сервер установлен в вашей локальной сети, не стоит пробрасывать 80 порт наружу — для удаленной настройки вы можете использовать vpn, ssh-тоннель или любой другой способ доступа. Если же FreePBX установлен на удаленном сервере или по какой-то другой причине имеет прямой доступ в сеть, можно ограничить возможность подключения по 80 порту на уровне iptables, а также использовать парольную защиту Basic Auth как дополнительное средство обеспечения безопасности.
В случае, если вы установили FreePBX с официального образа, вам нужно будет отредактировать файл
В самый конец, перед последней строкой нужно добавить следующее
и введите пароль для пользователя admin. Не забудьте перезагрузить apache:
И проверьте результат:
Также следует обратиться к вашему оператору связи и ограничить возможность подключения с вашими учетными данными по ip-адресу: в таком случае, даже если злоумышленники получат ваш логин и пароль, воспользоваться ими не получится.
Безусловно, нельзя забывать и о безопасности аккаунтов пользователей на вашей станции. Если возможно (например, все ваши пользователи находятся в локальной сети), обязательно ограничивайте возможность подключения по ip-адресам — даже если пароль определенного пользователя будет скомпрометирован, воспользоваться им извне злоумышленники не смогут.
Приложения → Внутренние номера → Внутренний номер → Расширенный
Бывают ситуации, когда ограничить пользователя по ip не представляется возможным — например, аккаунт используется с мобильного телефона, из разных 3g, 4g, и wifi-сетей. В таком случае, в первую очередь, проверьте надежность ваших паролей. Запомните, даже на “пустой” станции, даже для тестирования, никогда не нужно ставить пароли типа qwerty, ведь забыть впоследствии о таком аккаунте проще простого, как и подобрать такой пароль.
Приложения → Внутренние номера → Внутренний номер → Общие
Необходимо задуматься и о переборе паролей. Естественно, если ваш сервер обслуживает клиентов из одной сети и подключается к одному оператору связи, вы можете и даже должны ограничить возможность подключения к sip-порту (обычно, 5060) для всех, кроме известных адресов своих сетей и провайдеров, например, так, если вы устанавливали FreePBX вручную
Или воспользоваться встроенным модулем веб-интерфейса Firewall, если вы установили систему с официального образа. Вы можете задать доверенные и внешние сети вручную в меню
Подключения → Firewall → Zones → Network
И затем определить, к каким сервисам будет открыт доступ в закладке
Подключения → Firewall → Services
Но не всегда возможно оставить только несколько подсетей для sip-порта. В таком случае крайне рекомендуется поставить fail2ban и настроить его на использование с asterisk. Этот демон, основываясь на логах попыток авторизации, блокирует слишком настойчивых на определенное время после заданного числа попыток авторизации, что позволяет пресекать брутфорс. В последних версиях fail2ban правила для asterisk уже включены в поставку, но рекомендуется проверить его работоспособность — выполнить несколько попыток регистрации с заведомо неверным логином и паролем (только обязательно не с того же ip-адреса, с которого вы подключаетесь к серверу!) и проверить, заблокируется ли этот адрес командой
В официальной сборке FreePBX система защиты от перебора паролей уже установлена и настроена. Заблокированные адреса можно найти в закладке
Подключения → Firewall → Статус
Очень часто, особенно в небольших организациях, когда используется только один провайдер, системные администраторы не уделяют внимания грамотной настройке исходящих маршрутов, ограничиваясь шаблоном X., разрешая таким образом всем пользователям звонить на любой номер телефона. Даже если полностью исключить возможность совершения звонков злоумышленниками, нельзя забывать о том, что пользователь может просто ошибиться и позвонить куда-нибудь в Доминиканскую республику, так что ограничивать исходящие звонки нужно в обязательном порядке. Обычно достаточно добавить шаблоны вызова городских и мобильных номеров телефонов, для РФ маршрут может выглядеть так:
Подключения → Исходящая маршрутизация → Маршрут → Правила набора
Здесь мы задаем, что номер должен быть 11-значным, начинаться с 8, и вторая цифра должна быть 3,4,8 или 9, что полностью перекрывает все Российские номера, а также разрешаем звонить через этот маршрут только внутренним номерам 100-199. В случае, если кому-то из сотрудников нужно открыть международные звонки, следует добавить дополнительный маршрут для него перед основным, и обязательно в поле CID указать его номер или шаблон номеров, если таких сотрудников несколько.
А также стоит всегда указывать количество одновременных исходящих вызовов в настройках транков, особенно в том случае, если они не ограничены на стороне оператора (10 сотрудников никак не смогут сделать 100 исходящих вызовов), а вот в случае несанкционированных звонков взломщики пытаются звонить в максимальное количество потоков.
Подключения → Транки → Настройки Транка → Общие
Следующая частая ошибка — создание очереди звонков без ограничения по времени и без условия “покидать пустую очередь”. Особенно опасно такое действие, если вы используете номер 8-800 с оплатой за входящие — определенный отдел может остаться без связи (завис свитч, пропал свет, крысы съели витую пару), а входящие звонки для него будут продолжать поступать на очередь, и особо упорные звонящие могут ждать на линии часами.
Неприятности могут возникнуть и в том случае, если вы не используете 8-800, но оператор связи ограничивает количество одновременных входящих звонков, или используются медные линии или поток. В таком случае ресурс канала будет расходоваться просто на проигрывание музыки вызывающим абонентам, и в итоге может возникнуть ситуация, когда все ваши входящие каналы заняты ожидающими в пустой очереди. Именно поэтому нужно всегда ограничивать время ожидания в очереди и не допускать звонков в пустых очередях.
Приложения → Очереди → Настройки очереди → Параметры времени и операторов
Приложения → Очереди → Настройки очереди → Параметры емкости очереди
Голосовые приветствия и голосовые меню — безусловно, полезные и нужные функции, используемые почти каждой организацией, решившей перейти на FreePBX, но и при их настройке часто допускаются ошибки. Во-первых, модуль Приветствие, то есть просто воспроизведение голосового ролика, который нельзя пропустить (или можно пропустить по нажатию клавиши, о чем обычно забывают уведомить пользователя), стоит использовать только тогда, когда в этом есть насущная необходимость. Мне доводилось видеть как в Приветствие помещают ролик длительностью одна минута, и только после него следует IVR с предложением выбрать нужный отдел. Когда клиент звонит в первый раз, это воспринимается нормально, но когда он перезванивает пятый раз за час, и пятый раз подряд слушает о том, как компания рада его звонку, он начинает сомневаться в этом. Клиент уже точно знает, что ему нужно нажать кнопку 2 и переключиться на нужный отдел, но его раз от раза заставляют прослушать приветствие целиком. По максимуму сократите использование Приветствий, используйте IVR и разрешите прямые наборы — это позволит сократить время ожидания клиента и не раздражать его.
Еще при создании Интерактивного меню IVR часто забывают сменить настройки по умолчанию, касающиеся неверного набора — при нажатии клавиши, которая не описана в правилах, ролик повторяется несколько раз. Такое поведение уместно только в случае, если выбор должен быть сделан обязательно (крайне редкий случай), и совершенно неуместно в первом, приветственном голосовом меню. Отключайте повторы голосового меню и переводите звонок на назначение, используемое по умолчанию: на секретаря, в очередь менеджеров и так далее. То же касается и тайм-аута набора.
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
На просторах Интернет можно найти много инструкций по настройке Asterisk с использованием графического интерфейса FreePBX. И они помогают настраивать и управлять АТС в большинстве случаев. Но гораздо больше возможностей дает настройка «чистого» Asterisk.
Продвинутый курс по Asterisk
Концентрат редких знаний, для внедрения Asterisk в крупных предприятиях. Все это мы собрали в одном курсе для тебя.
В статье мы сделаем базовую настройку Asterisk через конфигурационные файлы. Предполагается, что у нас уже установлена и первоначально настроена ОС, скачены и установлены модули dahdi, libpri, iax2, необходимые голосовые файлы и кодеки и проинсталлирован Asterisk.
Если вы еще не ничего не установили, то посмотрите в нашей статье как установить Asterisk на CentOS 7
А еще вам понадобится установить sngrep для трассировки и отладки SIP-сообщений. Погнали?
Теория
Итак, приступаем к внедрению Asterisk. Структура используемых Астериском директорий следующая:
Основные конфигурационные файлы:
Напомним, что это только часть конфигурационных файлов. Необходимые файлы можно добавлять в любой момент по мере необходимости. Примеры и содержание таких файлов можно найти в архиве по кнопке ниже:
Сразу после установки asterisk, если не была выбрана установка базовой конфигурации, в ней нет ни одного файла.
Для подключения к asterisk в режиме командной строки необходимо ввести
Создаем и редактируем необходимые файлы
Начнем с файла asterisk.conf:
Приступаем к файлу cdr.conf. Комментарии к опциям в конфиге:
Закончили. Теперь файл features.conf:
Теперь конфигурируем RTP в файле rtp.conf
Музыка на ожидании в здании. Открываем файл musiconhold.conf
Следом открываем файл logger.conf:
Для удобства работы рекомендуется ограничивать уровень детализации сообщений, выводимых в консоль, но для вывода в файл выставить максимальный уровень детализации.
Либо указываем конкретные модули, которые необходимо прочитать и запрещаем чтение всех. В этом случае для удобства лучше поделить модули на секции. Ниже приведена часть такого варианта:
В данной статье мы используем первый вариант. На этом с настройкой основных файлов закончим. В дальнейшем по мере необходимости в них можно вносить изменения. Все последующие настройки мы будем вносить в файлы sip.conf и extensions.conf. Погнали к созданию и регистрации внутренних абонентов.
Создание и регистрация внутренних абонентов
В sip.conf указываем сначала общие параметры SIP для Asterisk:
Так же в этой секции можно указать поддерживается ли видео, время регистрации, перечислить локальные сети, указываем внешний IP-адрес в случае использования NAT и так далее.
В случае, когда у нас есть разные группы абонентов (например, есть несколько отделов, подразделений либо другие какие-то признаки группировки абонентов или абонентов большое количество), рекомендуется использовать шаблоны, в которые можно выносить обобщенные настройки.
Имя шаблона берется в скобки [ ] и следом указывается (!). В шаблоне можно указать контекст для этих абонентов, используемые кодеки, разрешенные/запрещенные сети для регистрации этих абонентов, использование NAT и так далее. Пример шаблона приведен ниже:
И таких шаблонов можно может быть несколько. Теперь для создания записи для регистрации абонентов нам достаточно указать только отличительные параметры, такие как внутренний номер, имя абонента, пароль для регистрации и так далее.
В результате, по команде sip show peers мы видим зарегистрированных пользователей
Абоненты зарегистрировались, но позвонить даже между собой они пока не могут. Для того, чтобы они могли совершать и принимать звонки необходимо настроить маршрутизацию (или диалплан). Делать это мы будем в файле extensions.conf, там тоже есть своя структура. И тут мы снова немного погружаемся в теорию:
Диалплан состоит из следующих основных элементов:
Контекст – часть (раздел) диалплана, описывающая алгоритм обработки вызова и изолированная от остального диалплана. Содержит дополнительные номера (extension). Дополнительные номера, определенные в одном контексте, полностью изолированы от добавочных номеров в другом контексте, если это не разрешено специально. Так же с помощью контекстов можно ограничивать доступ к различным функциям (например к междугородним или международным звонкам). Имя контекста заключается в квадратные скобки []. Рекомендуется создавать разные контексты для внутренних абонентов и для транков.
В начале диалплана находятся два специальных контекста, [general] и [globals]
Эти два контекста являются специальными. Контекст является одним из обязательных параметров как для абонента, так и для транка.
Asterisk определяет контекст для обработки по тому принципу откуда пришел вызов, а не куда он пришел, то есть если пришел вызов на мобильный номер от абонента, то применяться будет тот контекст, который прописан у конкретного абонента, а не указанный в транке.
Добавочные номера – это широкое понятие, которое определяет уникальные последовательности шагов (каждый шаг включает приложение), которые Asterisk будет применять к вызову по этой линии. В каждом контексте может быть задано столько добавочных номеров, сколько требуется. При вызове конкретного добавочного номера (входящим или внутренним звонком) Asterisk будет выполнять шаги, определенные для этого добавочного номера. Поэтому именно добавочные номера определяют, что происходит со звонками при их обработке соответственно диалплану.
Полный добавочный номер состоит из трех компонентов:
Эти три компонента разделяются запятыми:
Есть ещё зарезервированные добавочные номера:
Иногда можно встретить использование same вместо exten. Это применяют в основном с автоматическим выставлением приоритета, то есть same => n и означает «тоже самое, продолжение предыдущего»
Приоритеты – последовательность выполнения приложений. Каждый приоритет пронумерован последовательно, начиная с 1, и выполняет одно определенное приложение. В Asterisk есть еще приоритет n, что означает «следующий». Каждый раз, когда Asterisk встречает приоритет n, она берет номер предыдущего приоритета и добавляет 1. Это упрощает внесение изменений в диалплан, поскольку теперь не надо изменять номера всех шагов.
Приложения – выполняет определенное действие в конкретном дополнительном номере (например воспроизведение звука, прием тонального ввода, вызов канала, разрыв соединения и так далее).
Для выполнения некоторых приложений, таких как Answer() и Hangup(), не требуется никаких дополнительных инструкций. Некоторым приложениям необходима дополнительная информация. Эти данные, называемые аргументами, могут передаваться в приложения, чтобы оказывать влияние на то, как они выполняют свои действия. Чтобы передать аргументы в приложение их указывают через запятую в круглых скобках, следующих за именем приложения.
Таким образом можно как делать пометки для себя, так и делать невыполнимыми строки конфигурации (например, во время отладки)
Теперь давайте вернемся к нашим созданным абонентам. Создадим контекст, который указан у абонентов (context=from-internal)
В нем мы прописали что при наборе номера (ИМЯ), с приоритетом 1 выполнить приложение Dial c параметрами ПРОТОКОЛ/НОМЕР. Когда номеров немного, то можно конечно и так описывать. Но более правильно и красиво сделать тоже самое, но с использованием «маски»:
То есть при наборе любого номера из диапазона 10хх (шаблон показан нижним подчеркиванием) выполнить вызов с приоритетом 1 через приложение Dial с параметрами ПРОТОКОЛ/НАБРАННЫЙ_НОМЕР, время вызова 60 секунд и можно использовать перевод звонка (transfer).
Перечитываем диалплан в консоли Asterisk командой dialplan reload и видим выполнение вызова.
Таким образом мы можем придумать и реализовать практически любой диалплан. Например для запрета вызовов на международную связь достаточно прописать 3 строчки:
То есть при наборе 810 будет проиграно сообщение destination-closed (если оно было загружено в Asterisk) и будет отправлен сигнал отбоя.
Создание и регистрация транков
Ну, начнем с того, что IP-транки, используемые в Asterisk, бывают 2-х видов – SIP и IAX.
SIP-транки в основном используются для подключения провайдеров, а IAX-транки для подключения других Asterisk. Транки могут быть с регистрацией (то есть когда провайдер выдает логин, пароль и адрес или домен для регистрации у него) и без регистрации (то есть когда подключение идет по IP-адресу без логина и пароля). В случае с регистрацией в файле sip.conf необходимо сразу после секции [general] указать строку регистрации в формате:
Рассмотрим создание SIP-транка с регистрацией. Опять же если у нас несколько (до 3-5) таких транков, то можно их описать каждый отдельно. А если из больше или в дальнейшем планируется увеличить их количество, то можно использовать шаблон для подключения к оператору.
Дальше указываем строки для регистрации у данных операторов:
Перечитываем файл sip.conf и проверяем регистрации:
В случае подключения транка без регистрации можно использовать тот же шаблон, а в настройках транка указать изменяемые параметры
Перечитываем файл sip.conf и проверяем регистрации:
Теперь рассмотрим создание IAX-транка. Для настройки IAX-транков используется файл iax.conf, который содержит всю информацию, необходимую Asterisk для создания и управления каналами, работающими по протоколу IAX. Структура его примерно такая же, как и у sip.conf:
Сохраняем файл iax.conf, перечитываем и проверяем регистрацию командой iax2 show peers:
Если есть абоненты, работающие по протоколу IAX, то их регистрацию описываем тоже в этом же файле аналогично SIP-регистрации.
Итак, сейчас мы имеем зарегистрированных абонентов, которые могут звонить друг другу, и зарегистрированные транки. Внутренних абонентов мы можем группировать по отделам:
Можем настраивать различные функции, запускать различные команды (в том числе и для выполнения через ОС), настраивать запись и прослушивание разговоров и так далее:
Для совершения звонков через созданные и зарегистрированные транки SIP и IAX: Допустим через транк IAX у нас подключен другой Asterisk с внутренней нумерацией, начинающейся с 1, 2, 3. И для вызова этих абонентов мы будем использовать префикс (код выхода на маршрут) 2. Тогда строки настройки будут следующие:
То есть при наборе, начинающемся с 21-23, будет осуществлен вызов через транк msk-spb по протоколу IAX набранного номера, предварительно «отрезав» 1 (первую) набранную цифру. Если в течение 30 секунд не будет получен ответ, то вызов будет прекращен.
Для выхода в город мы используем транк с оператором-1 и префикс выхода будем использовать 9
Тут важно понимать, что все, что мы реализовываем для внутренних абонентов, должно быть описано в соответствующем контексте.
Теперь перейдем к транкам и входящим звонкам. Соответственно для того, чтобы принимать входящие вызовы, необходимо прописать маршрутизацию уже в контексте транка (context=from-trunk или context = from-iax)
Для возможности через транк осуществлять вызов нашего внутреннего абонента (например через транк со встречной АТС) необходимо в контекст транка вставить exten => _10XX,1,Dial(SIP/$
Давайте рассмотрим реализацию обработки входящего вызова от оператора (вызов на городской номер) через создание меню IVR и реализуем ещё определение рабочего и нерабочего времени. Схема обработки входящего вызова следующая:
Рабочее время у нас определено с 9:00 до 19:00 и с понедельника по пятницу. При поступлении звонка в нерабочее время после сообщения с приветствием (01-hello) проигрывается сообщение с указанием рабочего времени (07-working-hours). При поступлении звонка в рабочее время (проверка осуществляется в строке GoToIfTime(09:00-19:00,mon-fri)) после приветствия осуществляется переход в другой контекст ([working-time]), где предлагается выбрать необходимый пункт меню (0 – вызов секретаря, 1 – вызов на группу тех. поддержки, 2 – переход в другое меню выбора (GoTo(ivr-2,s,1)), в котором по такому же принципу осуществляется выбор. В каждом меню реализован донабор внутренних номеров (exten => _1xхx,1,NoOp), обработка неправильного набора номера (exten => i,1,NoOp), обработка в случае, что если ничего не выбрали (exten => t,1,NoOp), вызов переводится на секретаря.
Естественно необходимо загрузить все используемые голосовые файлы в /var/lib/asterisk/sound/ru в случае использования русского языка. Тут давайте немного по-подробнее.
Как мы уже указывали выше в системе мы определили какой основной язык у нас будет использоваться для голосовых файлов (в файле sip.conf параметр language = ru). Это значит, что Asterisk будет искать имена файлов, которые мы указываем, например, в меню ivr в папке /var/lib/asterisk/sound/ru (смотрим обозначения директорий при запуске asterisk в начале статьи). Если бы мы использовали в качестве основного языка английский, то папка была бы /var/lib/asterisk/sound/en. В каждой из этих папок находятся голосовые файлы выбранных языков и в выбранных форматах, указанных при компилировании asterisk. Если мы хотим записать свои сообщения (персональные приветствия, необходимые объявления, произносимые в создаваемых меню ivr и так далее), нам необходимо положить эти файлы в папку с соответствующим языком. Сами файлы при этом можно записать любой звукозаписывающей программой (хоть программой Звукозапись, входящей в стандартный дистрибутив любой версии Windows) и сохранить в формате wav (несжатый голос, 8кГц, 16 Бит, Моно)
Тут главное не перепутать имена файлов, находящихся в папке с голосовыми сообщениями, с именами, указанными в ivr меню. при этом в ivr меню имена указываются без расширения. Сам листинг приведен ниже.
После сохранения файла extensions.conf перечитываем диалплан в консоли (dialplan reload) и проверяем. На этом закончим с примерами.
Конфигурируя Asterisk через конфигурационные файлы, мы получаем возможность реализовать практически любую логику работы, проводить интеграции со сторонними сервисами, запускать и выполнять скрипты на уровне ОС и так далее.
Базовый курс по Asterisk
Мы собрали концентрат всех must have знаний в одном месте, которые позволят тебе сделать шаг вперед на пути к экспертному владению Asterisk