Джим Меггелен - Asterisk™: будущее телефонии Второе издание
--localstatedir=$HOME/asterisk-bin $ make menuselect $ make install
Выполняя сценарий ./configure с флагом --prefix, мы указываем системе установить двоичные компоненты в подпапку asterisk-bin папки $HOME[125]. Флаг --sysconfdir указывает системе, куда поместить конфигурационные файлы, а флаг --localstatedir - куда установить дополнительные файлы, например звуковые. Главное здесь то, что, поскольку загрузка, компиляция и установка выполняются от лица пользователя asterisk, все, что создается, будет закреплено за этим пользователем и будет иметь права, предоставленные этому пользователю. Теперь можно установить файлы примеров, тоже в папку $HOME/ asterisk-bin/asterisk:
$ make samples
Выполним тестовый запуск Asterisk с помощью следующей команды:
$ ./asterisk-bin/sbin/asterisk -cvvv Обычно Asterisk должна выполняться как сервис. Во время установки команда make config устанавливает сценарии инициализации. К сожалению, этого не произойдет, если вы зарегистрированы как пользователь asterisk, потому что только пользователь root имеет право изменять команды запуска системы. Кажется, что надо зарегистрироваться как root, перейти к папке /home/asterisk/asterisk-1.4.5 и снова выполнить команду make config (теперь с правами, которые позволят действительно ее выполнить). И проблема решена, не так ли? Да, но не совсем. Если вы выполните команду service asterisk start, система сообщит, что не может найти asterisk. Знаете, почему? Потому, что сценарий инициализации считает, что исполняемый файл asterisk должен быть установлен в /usr/sbin, где он должен был бы находиться, если бы мы установили asterisk под учетной записью root. Итак, мы должны сообщить сценарию инициализации, где искать asterisk и сценарий safe_asterisk:
# ln -s /home/asterisk/asterisk-bin/sbin/asterisk /usr/sbin/asterisk
# ln -s /home/asterisk/asterisk-bin/sbin/safe_asterisk /usr/sbin/safe_asterisk
Поскольку наш сценарий инициализации использует сценарий safe_ asterisk и по умолчанию пытается запустить Asterisk под учетной записью администратора, необходимо изменить сценарий safe_asterisk, указав ему запускать Asterisk под учетной записью пользователя, не обладающего правами администратора. Итак, откроем сценарий safe_ asterisk в своем любимом текстовом редакторе и найдем переменную
ASTARGS (это примерно 78-я строка). Вставим в кавычки -U asterisk:
#
# Don't fork when running "safely"[126]
#
ASTARGS="-U asterisk" Пойдем дальше и запустим Asterisk, выполнив команду service asterisk start. С помощью команды ps убедимся, что Asterisk запущена под учетной записью пользователя asterisk:
# service asterisk start
# ps aux | grep asterisk
503 30659 0.0 1.8 26036 8692 pts/2 Sl 15:07 0:00 /home/asterisk/asterisk-bin/sbin/asterisk -U asterisk -vvvg -c
Фактически 503 - это наш пользователь asterisk; проверяем это, заглянув в файл /etc/passwd: # cat /etc/passwd
asterisk:x:503:503:Asterisk PBX:/home/asterisk:/bin/bash Выполним перезагрузку системы, чтобы убедиться, что все идет, как надо. Помните, что многие операции, осуществляемые с Asterisk, могут предполагать ее выполнение под учетной записью администратора, поэтому необходимо следить за возможными ошибками, касающимися ограниченных прав доступа. Ваш процесс Asterisk может считать себя суперпользователем, но мы немножко подрезали ему крылышки.
Зачем создавать проблемы? Суть в том, что если какое-либо слабое место системы безопасности Asterisk[127] обеспечит кому-либо доступ к серверу через учетную запись asterisk, его возможности в системе будут ограничены правами данной учетной записи. Если Asterisk выполняется под учетной записью root, нарушение правил безопасности обеспечивает злоумышленнику полный контроль над вашей системой.
Настройка голосовых сообщений системы
Благодаря своей практически безграничной гибкости Asterisk можно менять голосовые сообщения системы. Это очень просто объяснить, но, как правило, сложно хорошо выполнить.
Основной дистрибутив включает 300 голосовых сообщений системы, плюс еще 600 в дополнении asterisk-sounds. Если вы задумали настроить их все, необходимо иметь или кучу денег, или массу времени. Звукотехнику рекомендуется обеспечить нормализацию всех записей до -3 дБ и их корректное начало и завершение (с соответствующей паузой в начале и конце сообщения).
Имея в распоряжении готовые записи, применить их легко - просто замените файлы в папке /var/lib/asterisk/sounds теми, которые вы создали.
Голос
Если вас интересует, кто является «голосом» Asterisk, то ее зовут Эллисон Смит (Allison Smith). Она может записать специальные сообщения и для вашей системы.
Это мощная концепция, потому что очень немногие офисные АТС предоставляют возможность использовать один и тот же голос и в собственных, и в системных сообщениях. Эллисон - «голос» сообщений системы как на английском, так и на испанском языках.
Также доступны сообщения на французском. «Голосом» французского Asterisk является Джун Уоллак (June Wallack) из Montreal's own (она также озвучивает сообщения на безупречном английском[128], если вы захотите, чтобы сообщения на обоих языках были записаны одним голосом).
Чтобы узнать, как получить собственные голосовые сообщения, посетите веб-сайт Digium по адресу http://www.digium.com/products/ voice.
В качестве альтернативы можно записать сообщения самостоятельно и поместить их любую папку по своему выбору. В приложениях Playback() или Background() можно указывать полный путь к звуковым файлам или любую подпапку /var/lib/asterisk/sounds/.
Обратите внимание, что стандартные звуки Asterisk записаны в формате GSM. Хранить их в этом формате целесообразно, только если система будет взаимодействовать со множеством каналов, использующих кодек GSM). Конечно, файлы в формате GSM занимают меньше места на жестком диске, но, на наш взгляд, дополнительная нагрузка на ЦП для их преобразования (не говоря уже о более низком качестве звука в целом) делает нежелательным применение GSM. При использовании файлов без сжатия (таких, как .wav, .ulaw или .alaw) ЦП не придется так напряженно работать. И как дополнительный приз - лучшее качество звучания сообщений.
Запись звука из диалплана
Удивительно, но один из самых простых способов получить записи приличного качества - не с помощью ПК с невообразимым ПО для редактирования, а через телефонный аппарат. На это есть масса причин, но самое важное то, что телефон, как правило, обеспечивает запись без фонового шума (такого, как белый шум, создаваемый оборудованием отопления, вентиляции и кондиционирования воздуха) и с постоянным уровнем громкости. Это небольшое дополнение в диалплан позволит без труда создавать записи, которые будут помещаться в папку /tmp/ вашей системы (где их можно переименовать, а затем перенести в любое другое место):
exten => _66XX,1,Wait(2)
exten => _66XX,n,Record(/tmp/prompt${EXTEN:2}:wav) exten => _66XX,n,Wait(1)
exten => _66XX,n,Playback(/tmp/prompt${EXTEN:2}) exten => _66XX,n,Wait(2) exten => _66XX,n,Hangup()
Данный фрагмент кода обеспечит возможность звонить на номера от 6600 до 6699 и записывать сообщения в папку /tmp/ под именами от prompt00.wav до prompt99.wav. После завершения записи (о чем вы сообщите, нажав кнопку #) ваше сообщение будет воспроизведено и соединение завершится.
Не забудьте перенести свои сообщения из папки /tmp/ в папку для звуковых файлов Asterisk. Чтобы диалплан оставался понятным, присвойте файлам prompt<XX> более осмысленные имена. Например:
mv /tmp/prompt00.wav /var/lib/asterisk/sounds/custom/welcome-message.wav
Музыка во время ожидания
Любая широко распространенная система АТС предлагает возможность воспроизведения музыки во время ожидания ответа. В этом вопросе Asterisk предоставляет широкое поле для творчества. Сегодня все хорошо знакомы с музыкальным форматом MP3 и использование MP3-файлов в качестве источника музыки во время ожидания представляет большой интерес. Конечно, это кажется хорошей идеей, но есть некоторые вопросы, над которыми, по нашему мнению, следует задуматься:
• MP3-файлы чрезвычайно сложны, и их декодирование налагает серьезную нагрузку на ЦП. Если имеется много каналов, извлекающих музыку из системы (например, иногда люди любят слушать
музыку по телефону или сразу несколько абонентов ожидают ответа информационно-справочной службы), требования к ЦП сильно возрастают, что связанно с необходимостью воспроизведения хранящихся МР3-файлов. Компьютер, который в других условиях обеспечивал бы нужды системы, может оказаться непригодным.
• Современные жесткие диски могут хранить большие объемы данных, поэтому, вероятно, нет никакой причины беспокоиться о сокращении пространства, занимаемого звуковыми файлами. Сжатие звука имеет смысл с точки зрения передачи по сетям (МР3-файл намного меньше и удобнее для скачивания, чем эквивалентный ему файл в формате .wav), но в рамках системы на самом деле неважно, сколько места занимают эти файлы.
• При использовании МР3-файлов обычно возникают проблемы с лицензированием. ;-)
Учитывая все это, рекомендуем преобразовать используемые музыкальные файлы в собственный формат различных кодеков, которые поддерживает ваша система. Например, если для внутренних телефонов поддерживается plaw и G.729 в VoIP-сетях, музыку лучше хранить в обоих форматах, чтобы Asterisk не приходилось выполнять перекодировки для воспроизведения музыки в этих каналах. Мы часто используем в своих системах общедоступную музыку (или музыку, лицензированную Creative Commons). Музыка Creative Commons