Мы тестируем сервер Asterisk Now, чтобы заменить нашу стареющую систему PBX. Одной из приятных функций была бы возможность приостановить или уменьшить громкость офисного музыкального автомата при обнаружении входящего вызова.
В настоящее время мы запускаем музыкальный автомат linux, который воспроизводит музыку из динамиков с помощью mpd и может управляться клиентом mpc. Для этого мы можем вручную ввести следующую команду:
объем mpc 20
Кто-нибудь знает, как заставить звездочку выполнить эту команду или какое-то действие, которое мы могли бы выполнить, когда телефонный звонок поступает на определенные внутренние номера?
Какая оригинальная идея! Я этого не делал, но думаю, что смогу направить вас на правильный путь. Если ваша система похожа на мою, вы найдете следующие файлы, которые будут служить примерами:
Для цифровой отправки факсов:
/etc/asterisk/extensions.conf
/var/lib/asterisk/bin/fax-process.pl
Для писем с вложениями звуковых сообщений:
/etc/asterisk/extensions_additional.conf
/var/lib/asterisk/bin/audio-email.pl
Мы сосредоточимся на втором действии, посмотрев на часть файла extensions_additional.conf, которая имеет дело с аудио вложениями:
[app-dictate-send]
include => app-dictate-send-custom
exten => *35,1,Answer
exten => *35,n,Macro(user-callerid,)
exten => *35,n,Noop(CallerID is ${AMPUSER})
exten => *35,n,Set(DICTENABLED=${DB(AMPUSER/${AMPUSER}/dictate/enabled)})
exten => *35,n,GotoIf($[$["x${DICTENABLED}"="x"]|$["x${DICTENABLED}"="xdisabled"]]?nodict:dictok)
exten => *35,n(nodict),Playback(feature-not-avail-line)
exten => *35,n,Hangup
exten => *35,n(dictok),Read(DICTFILE,enter-filename-short,,,,)
exten => *35,n,Set(DICTEMAIL=${DB(AMPUSER/${AMPUSER}/dictate/email)})
exten => *35,n,Set(DICTFMT=${DB(AMPUSER/${AMPUSER}/dictate/format)})
exten => *35,n,Set(NAME=${DB(AMPUSER/${AMPUSER}/cidname)})
exten => *35,n,Playback(dictation-being-processed)
exten => *35,n,System(/var/lib/asterisk/bin/audio-email.pl --file /var/lib/asterisk/sounds/dictate/${AMPUSER}/${DICTFILE}.raw --attachment dict-${DICTFILE} --format ${DICTFMT} --to ${DICTEMAIL} --subject "Dictation from ${NAME} Attached")
exten => *35,n,Playback(dictation-sent)
exten => *35,n,Macro(hangupcall,)
; end of [app-dictate-send]
Вы увидите, что есть ссылка на /var/lib/asterisk/bin/audio-email.pl. Функция работает построчно, поэтому, если кто-то зависает (например, строка 8), файл .pl никогда не запускается. Но для того, чтобы эта функция заработала, ее необходимо включить следующим образом:
include => app-dictate-send
Я не собираюсь распечатывать здесь файл .pl. Если вы можете написать файл pl, который будет уменьшать громкость вашего офисного музыкального автомата, когда вы запускаете его вручную, вы определенно можете настроить Asterisk на отключение pl при входящем звонке.
Взгляните на /var/lib/asterisk/bin/fax-process.pl, чтобы увидеть, как звездочка запускает электронные письма.
Теперь вы, вероятно, захотите изменить первый файл, на который я ссылался выше: /etc/asterisk/extensions.conf. Этот файл сообщает Asterisk, что делать при первом поступлении вызовов. Посмотрите в верхней части файла:
[from-did-direct]
include => ext-findmefollow
include => ext-local
Вы можете создать что-то вроде Turn_down_music.pl и включить его в функцию вроде [app-lower-music]. Затем вы должны включить его в:
[from-did-direct]
include => app-lower-music
include => ext-findmefollow
include => ext-local
Обратите внимание, что файл [ext-local] определен в файле extensions_additional.conf, но на него есть ссылка в файле extensions.conf. Вы можете создать свой собственный файл расширений и указать его в файле extensions.conf следующим образом:
#include extensions_custom.conf
#include extensions_music.conf
Также обратите внимание, что # не комментирует строки. Вместо этого; комментарии выравниваются.
Я многому научился из этих двух книг:
Удачи!
Если этот AsteriskNow похож на Elastix, вам следует определить новый раздел в extension_custom.conf, например:
[from-pstn-custom]
exten = 0123456,n,System(/var/lib/asterisk/bin/whatever-command.pl)
Первое число - это ваш входящий DID, «n» - это порядок выполнения команд (обычно он идет в начало списка, потому что from-pstn-custom включен вверху). Эту проблему также можно решить с помощью скриптов AGI, но это может оказаться для вас излишним.