Позволяет соединять все возможные типы каналов[145]. Dial() - самое важное приложение в Asterisk; наверняка вы периодически будете возвращаться к этому разделу.
Для приложения Dial() приемлем любой действительный тип каналов (такие, как SIP, IAX2, H.323, MGCP, Local или Zap), но то, какие параметры необходимо будет передать для канала, зависит от информации, которая требуется каналу данного типа для работы. Например, SIP-ка- налу для соединения понадобится сетевой адрес и пользователь, тогда как Zap-канал потребует телефонный номер.
Когда задается сетевой тип канала, в качестве опций Dial() могут передаваться хост назначения (имя или IP-адрес), имя пользователя, пароль и удаленный добавочный номер или можно указать имя записи канала в соответствующем файле .conf; тогда вся необходимая информация должна поступать из этого файла. Имя пользователя и пароль можно заменить именем, указанным в квадратных скобках ([]) в конфигурационном файле канала. Имя хоста является необязательным.
Вот действительное выражение Dial:
exten => s,1,Dial(SIP/sake:[email protected])
Такая запись аналогична предыдущей:
exten => s,1,Dial(SIP/some_SIP_friend) но будет работать, только если в sip.conf есть канал [some_SIP_friend], описание которого включает fromuser=sake, password=arigato и host= thathostoverthere.tld.
Часто добавочный номер указывается после адреса:
exten => s,1,Dial(IAX2/user:[email protected]/500) Таким образом мы указываем дальнему концу соединения направить вызов на добавочный номер 500 в том же контексте, в который поступил вызов. Необязательно указывать добавочный номер в Dial(), поскольку может использоваться информация конфигурационного файла канала удаленного конца соединения или удаленный сервер передаст вызов на добавочный номер s в контексте, в котором поступил вызов. В конечном счете, дальний конец соединения управляет тем, что происходит с вызовом; вы можете только запрашивать определенную обработку. Если не задан параметр
exten => s,1,Dial(IAX2/user:[email protected]/500,60,
Если время ожидания не задано и вы желаете задать флаги, необходимо обозначить место, где можно указать время ожидания. Делается это введением дополнительной запятой на месте времени ожидания, как здесь:
exten => s,1,Dial(IAX2/user:[email protected]/500,,
Для приложения Dial() могут использоваться следующие флаги:
A(
Воспроизводится приветствие для вызываемой стороны;
C
Выполняется сброс записи Call Detail Record для звонка. Поскольку в CDR выставляется время ответа (Answer()) на звонок, вероятно, вы захотите сбросить запись CDR, чтобы пользователю не приходилось оплачивать время, прошедшее до вызова приложения Dial().
d
Пользователь может набирать одноразрядный добавочный номер в процессе ожидания ответа на звонок. Тогда звонок перейдет на
этот добавочный номер (или в текущем контексте, или, если производится выход, в контексте, заданном переменной EXITCONTEXT).
D([
DTMF-коды передаются после ответа на звонок, но до того, как выполнено соединение. Параметр
f
Caller ID (ID звонящего) вызывающей стороны принудительно устанавливается как добавочный номер, связанный с каналом, с помощью подсказки диалплана. Часто это используется, когда провайдер разрешает задавать в качестве Caller ID только выделенные для вас номера. Например, при наличии PRI флаг f использовался бы для переопределения любого заданного локально Caller ID для SIP- телефона.
g
Выполнение диалплана продолжается в текущем контексте, если вызываемый абонент вешает трубку.
G(
Когда ответ на звонок получен, вызывающая сторона переводится в заданный приоритет, а вызываемая сторона - в заданный приоритет + 1. В сочетании с этой опцией не могут использоваться никакие дополнительные опции, определяющие операции после ответа.
h
Позволяет вызванному абоненту разорвать соединение нажатием кнопки *.
H
Позволяет вызывающему абоненту разорвать соединение нажатием кнопки *.
i
Asterisk будет игнорировать все попытки перенаправить вызов для данной попытки вызова.
Asterisk будет переходить в приоритет n + 101 в случае занятости запрашиваемых каналов (где n - текущий приоритет).
L( x [: у ][: z ])
Продолжительность звонка ограничивается
LIMIT_PLAYAUDIO_CALLER=yes|no
Определяет, воспроизводится ли звуковой файл для вызывающего абонента. По умолчанию - yes.
LIMIT_PLAYAUDIO_CALLEE=yes|no
Определяет, воспроизводится ли звуковой файл для вызываемого абонента.
LIMIT_TIMEOUT_FILE=
Определяет, какой файл воспроизводится, когда время истекло. LIMIT_CONNECT_FILE=
Определяет, какой файл воспроизводится в начале вызова. LIMIT_WARNING_FILE=
Определяет, какой файл воспроизводится, если определен аргумент
m[
Музыка для вызывающей стороны проигрывается до тех пор, пока не будет получен ответ на звонок. Можно также указать (необязательно) класс музыки во время ожидания, заданный в файле