Поскольку логику обработки вызовов проще организовать на ip-pbx, файл dialplan.xml является необязательным, но может внести некоторые полезные дополнительные функции, такие как автоматический набор и вторичный тоновый сигнал.
Файл dialplan.xml имеет следующую стркутуру:
<DIALTEMPLATE> <TEMPLATE MATCH="pattern" Timeout="sec" User="type" Rewrite="xxx" Route="route" Tone="tone" /> <TEMPLATE MATCH="pattern" Timeout="sec" User="type" Rewrite="xxx" Route="route" Tone="tone" /> ... </DIALTEMPLATE>
где:
pattern может содержать: . (точка) для замены любого символа, * (звездочка) для замены одного или более символов, , (запятая) для генерации вторичного сигнала.
sec – время в секундах, после которого начинается набор.
type – может быть IP или Phone. Тэг, добавляемый к номеру, регистронезависим.
xxx – номер, который будет набираться вместо введенного пользователем при совпадении с pattern.
route – адрес прокси-сервера SIP, на который перенаправляется звонок, значение может быть default, emergency или имя прокси-сервера.
tone – если не задан, используется вторичный гудок по умолчанию, если стоит запятая и затем имя гудка, то проигрывает этот звук; без запятой гудок игнорируется.
Также можно указать решетку (#) и звездочку (*) как набираемые символы. По умолчанию # означает «набрать сейчас», не дожидаясь совпадения с шаблоном из номерного плана. * по умолчанию означает * или . в шаблоне (wildcard-символ).
В качестве вторичного гудка можно использовать следующие значения (после запятой): Bellcore-Alerting, Bellcore-dr5, Bellcore-Reorder, Bellcore-Busy, Bellcore-dr6, Bellcore-Stutter, Bellcore-BusyVerify, Bellcore-Hold, CallWaiting-2, Bellcore-CallWaiting, Bellcore-Inside, CallWaiting-3, Bellcore-Confirmation, Bellcore-None, CallWaiting-4, Bellcore-dr1, Bellcore-Outside (default), Cisco-BeepBonk, Bellcore-dr2, Bellcore-Permanent, Cisco-Zip, Bellcore-dr3, Bellcore-Reminder, Cisco-ZipZip, Bellcore-dr4.
К каждому правилу можно добавить <!— комментарий —> в конце каждой строки.
<DIALTEMPLATE> <TEMPLATE MATCH="1.." TIMEOUT="0" /> <TEMPLATE MATCH="......." TIMEOUT="0" /> <TEMPLATE MATCH="0........." TIMEOUT="0" /> <TEMPLATE MATCH="380........." TIMEOUT="0" /> <TEMPLATE MATCH="*" TIMEOUT="5" /> <TEMPLATE MATCH="9,00*" TIMEOUT="10" /> </DIALTEMPLATE>
TIMEOUT=»0″ при совпадении паттерна, указывает сразу же отправить вызов на обработку — так реализуется вышеупомянутый автоматический набор.
<TEMPLATE MATCH=»1..» TIMEOUT=»0″ /> <!— Local Extensions —>
Например, набираем номер 110, подпадаем под первое правило и сразу идет вызов без дополнительных действий с нашей стороны, не нужно нажимать Dial или #.
Для звонков в другие страны будем использовать правило с паттерном 9,00* — пользователь поднимает трубку, слышит длинный гудок, набирает 9 — слышыт другой длинный гудок (вторичный тоновый сигнал, это нам дает запятая в паттерне), затем номер, начинающийся с двух нулей (в Украине это код выхода на международную линию). Таймаут здесь уже не ставим 0, поскольку не указано точное колличество цифер, которые будут набраны.
<TEMPLATE MATCH=»9,00*» TIMEOUT=»10″ />
Номер в канал передается польностью — вместе в первой цифрой 9 — учитывайте это в диалплане на ip-pbx.