Диалплан

Материал из Xgu.ru

Перейти к: навигация, поиск


Номерной план (диалплан, dialplan) — формальное описание схемы маршрутизации и обработки телефонных звонков.

Номерной план подробно описывает, что система должна делать со входящими и исходящими звонками: передавать их дальше, сохранять, отвечать на них самостоятельно и так далее.

Описание плана набора Asteriskа находится в конфигурационном файле extensions.conf.

Пример фрагмента описания плана набора:

[incoming]
exten => s,1,Answer()
exten => s,n,Playback(hello-world)
exten => s,n,Hangup() 

Другой такой же простой пример:

exten => 5212,1,Answer
exten => 5212,n,Playback(demo-echotest)
exten => 5212,n,Echo
exten => 5212,n,Playback(demo-echodone)

При звонке на номер 5212 проигрывается приветственное сообщение, затем запускается приложение Echo, которое повторяет вам обратно всё, что вы говорите. Это позволяет оценить качество и задержку распространения сигнала. Завершить тест можно, нажав клавишу #. В этом случае вы прослушаете завершающее диалог сообщение demo-echodone.

Некоторые приложения диалплана:

  • Dial()[1] — позвонить дальше
  • MeetMe()[2] — переключиться на комнату-конференцию
  • System()[3] — выполнить системную команду (обрабатывается через sh -c)

В диалплане могут использоваться переменные[4] и функции[5]; последовательности действий могут объединяться в макросы[6].

Содержание

[править] Вопросы и ответы

[править] Как включить один контекст в другой?

[context1]
;....

[context2]
;....

[context1_2]
include => context1
include => context2

[править] Как поменять Caller ID при звонке?

Использовать приложение Set(CALLERID(name))[7]:

exten => _1XX,1,Answer
exten => _1XX,n,Set(CALLERID(name)="${CALLERID(name)} (KHM)")
exten => _1XX,n,Dial(SIP/odessa/${EXTEN},30)
exten => _1XX,n,Playback(vm-isunavail)

К Caller ID будет дописываться KHM в конце.

[править] Как отсылать автоматически оповещения о входящих звонках в джаббер?

Описано здесь: «Оповещение в джаббер при звонке через астериск»

[править] Как добавить номер в чёрный список?

Использовать функцию BLACKLIST() диалплана:

exten=>_3XXX,n,GotoIf($[${BLACKLIST()}=1]?blacklist)
exten=>_3XXX,n,Dial(...)
exten=>_3XXX,n(blacklist),Hangup

Добавление в чёрный список. Добавим номер 4100 в чёрный список, а потом его удалим:

database add blacklist 4100 1
database del blacklist 4100

Подробнее:

[править] Дополнительная информация

[править] Примечания

  1. http://www.voip-info.org/wiki/index.php?page=Asterisk+cmd+Dial
  2. http://www.voip-info.org/wiki/view/Asterisk+cmd+MeetMe
  3. http://www.voip-info.org/wiki/view/Asterisk+cmd+System
  4. http://www.voip-info.org/wiki/view/Asterisk+Detailed+Variable+List
  5. http://www.voip-info.org/wiki/view/Asterisk+functions
  6. http://www.voip-info.org/wiki/index.php?page=Asterisk+cmd+Macro
  7. http://www.voip-info.org/wiki/view/Setting+Callerid
На других языках