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. Знаете, почему?
# 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
126
Не выполнять ветвления при запуске в безопасном режиме «safely» - Примеч. перев.
Фактически 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 можно менять голосовые сообщения системы. Это очень просто объяснить, но, как правило, сложно хорошо выполнить.
127
Если зайти в любую систему, выполняющую Asterisk с настройками безопасности по умолчанию, подключить к ней клавиатуру и монитор и нажать сочетание клавиш ALt+ F9, вы подключитесь к интерфейсу командной строки Asterisk. Нажмите клавиши ! и Return - и вы зашли в оболочку. Если Asterisk запущена от имени пользователя root, вы теперь владеете этой системой.
Основной дистрибутив включает 300 голосовых сообщений системы, плюс еще 600 в дополнении asterisk-sounds. Если вы задумали настроить их
Имея в распоряжении готовые записи, применить их легко - просто замените файлы в папке /var/lib/asterisk/sounds теми, которые вы создали.
Голос
Если вас интересует, кто является «голосом» Asterisk, то ее зовут Эллисон Смит (Allison Smith). Она может записать специальные сообщения и для вашей системы.
Это мощная концепция, потому что очень немногие офисные АТС предоставляют возможность использовать один и тот же голос и в собственных, и в системных сообщениях. Эллисон - «голос» сообщений системы как на английском, так и на испанском языках.
Также доступны сообщения на французском. «Голосом» французского Asterisk является Джун Уоллак (June Wallack) из Montreal's own (она также озвучивает сообщения на безупречном английском [128] , если вы захотите, чтобы сообщения на обоих языках были записаны одним голосом).
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. После завершения записи (о чем вы сообщите, нажав кнопку #) ваше сообщение будет воспроизведено и соединение завершится.