В изучение работы Asterisk часто придется сталкиваться с файлом extensions.conf в котором описывается схема обработки телефонных звонков, т. е. Как должна себя повести система при обработке входящих и исходящих звонков, перевести звонок, сохранить звонок да и вообще очень много всего что можно с ними сделать. Вот к примеру выше я указываю правила обработки звонков для номеров 101 и 102:
;контекст работы отпределенный для номеров (явно указанных) из файла sip.conf
[office]
;синтаксис: => имя(или номер),приоритет,приложение(команда), т. е.
;добавочный номер 101 в приоритет 1, а приложение через SIP аккаунт с номеров 101
exten => 101,1,Dial(SIP/101)
exten => 102,1,Dial(SIP/102)
Вот еще один набор:
;при звонке на номер 101 ответить
exten => 101,1,Answer()
;после выполнить что-то (Воспроизвести файл,осуществить переход,разъединить и т.д.)
exten => 101,n,выполнить что-то
exten => 101,n,выполнить что-то плюс еще
;Разъединить, всегда должно быть при завершении текущего вызова
exten => 101,n,Hangup()
На заметку: существующие приложения в плане набора
- Answer () – ответ на выполняемый звонок
- Playback () – воспроизведение записанного звукового файла, т. е. Playback(hello) — проиграет звуковой файл из каталога: /var/lib/asterisk/sounds & /usr/share/asterisk/sounds или указание пути месторасположения файла /home/ekzorchik/hello, название файла указывается без расширения.
- Background() – записанный звуковой файл в фоне, к примеру информирование о добавочных номерах, звонящий нажимает на кнопку из предложенного меню и звук оставливается, а план набора отрабатывает дальше
- WaitExten() – ожидание от звонящего набора телефонного номера (т. е. Добавочный)
- Hangup() – разъединить активный канал
- Goto() – перенаправление в другой контекст вызова:
exten => 123,n,Goto (контекст,добавочный номер,приоритет)
, где
- 123 —> вызываемый номер
- n → приоритет
- Dial() – звонить
exten => 123,1,Dial(IAX2/guest@host.com/s)
, где IAX2 (SIP,H323) — при наборе номера 123 осуществить звонок через протокол IAX2 гостевого сервера host.com
MusicOnHold() – проигрывание мелодии ожидания (Music On Hold)
GotoIF() – вычисляет выражение и отправляет абонента в соответствующее место назначения в зависимости от истинности или ложности выражения.
Ringing() – отправка в канал запроса для индикации вызывающему пользователю «гудков вызова».
На заметку: также в плане набора extensions.conf можно описывать поведение добавочных номеров.
Exten => i,1,Playback(pbx-invalid)
, где (вместо i могут быть следующие значения: s,i,t)
- i — когда абонент нажимает не ту кнопку (не существующий номер), вызов перенаправляется на добавочный номер i.
- s — добавочный номер
- t — если абонент слишком долго не нажимает кнопку после запуска приложения WaitExten(), вызовы направляются на добавочный номер t (время ожидания по дефолту — 10 секунд)
Вот еще один пример:
[out]
exten => _XXXX,1,Dial(SIP/${EXTEN},,m)
,т.е. звонок на четырехзначный (к примеру: 1234,4567) номер через протокол SIP; итого если набран номер 1234 то совершить звонок через SIP протокол номера 1234 (вроде как-то так), если набрать трехзначный номер то вызов не состоится, т. к. нужно использовать четырехзначный набираемый номер. На этом моя вторая часть завершена, до встречи с уважением автор блога — ekzorchik.