Схема обработки телефонных звонков

Posted by

В изучение работы часто придется сталкиваться с файлом в котором описывается схема обработки телефонных звонков, т. е. Как должна себя повести система при обработке входящих и исходящих звонков, перевести звонок, сохранить звонок да и вообще очень много всего что можно с ними сделать. Вот к примеру выше я указываю правила обработки звонков для номеров 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.