Asterisk™: будущее телефонии Второе издание
Шрифт:
Это приложение было написано специально для «мертвых» каналов, поскольку обычный AGI-интерфейс не работает корректно, если канал разъединен.
Чтобы получить список всех доступных команд AGI, используйте команду интерфейса командной строки show agi.
exten => h,1,DeadAGI(agi-test)
Смотрите также
AGI, FastAGI
Dial
Пытается соединить каналы
Dlal(технология/имяпольгзователя:пароль(Фимяхоста/добавочныйномер[&технология2/peer2. . . ] [,времяожидания-ответа[, флаги[, URi]]])
Позволяет соединять все возможные типы каналов [145] . Dial -
Для приложения Dial приемлем любой действительный тип каналов (такие, как SIP, IAX2, H.323, MGCP, Local или Zap), но то, какие параметры необходимо будет передать для канала, зависит от информации, которая требуется каналу данного типа для работы. Например, SIP-ка- налу для соединения понадобится сетевой адрес и пользователь, тогда как Zap-канал потребует телефонный номер.
145
Тот факт, что Asterisk может успешно соединять IAX, SIP, H.323, Skinny, PRI, FX(O/S) и все что угодно, поразителен, но, вероятно, самое удивительное - это локальный (Local) канал. Благодаря тому что одной командой Dial можно соединять множество локальных каналов, событие Dial может запускать множество совершенно независимых и уникальных действий в других частях диалплана. Данная концепция поистине революционная, и ее надо испытать, чтобы поверить в это.
Когда задается сетевой тип канала, в качестве опций Dial могут передаваться хост назначения (имя или IP-адрес), имя пользователя, пароль и удаленный добавочный номер или можно указать имя записи канала в соответствующем файле .conf; тогда вся необходимая информация должна поступать из этого файла. Имя пользователя и пароль можно заменить именем, указанным в квадратных скобках ([]) в конфигурационном файле канала. Имя хоста является необязательным.
Вот действительное выражение Dial:
exten => s,1,Dial(SIP/sake:arigato@thathostoverthere.tld)
Такая запись аналогична предыдущей:
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:pass@otherend.com/500) Таким образом мы указываем дальнему концу соединения направить вызов на добавочный номер 500 в том же контексте, в который поступил вызов. Необязательно указывать добавочный номер в Dial, поскольку может использоваться информация конфигурационного файла канала удаленного конца соединения или удаленный сервер передаст вызов на добавочный номер s в контексте, в котором поступил вызов. В конечном счете, дальний конец соединения управляет тем, что происходит с вызовом; вы можете только запрашивать определенную обработку. Если не задан параметр времяожидания-ответа, канал будет совершать вызов неопределенно долго. Это не всегда плохо, поэтому не надо полагать, что это обязательный параметр; просто знайте, что «неопределенно долго» может означать «очень долго». Параметр времяожидания-отве- та задается в секундах и всегда следует за адресной информацией: exten => s,1,Dial(IAX2/user:pass@otherend.com/500,времяожидания-ответа) Мощь приложения Dial во многом определяется флагами. Они указываются после адреса и времени ожидания:
exten => s,1,Dial(IAX2/user:pass@otherend.com/500,60,флаги)
Если время ожидания не задано и вы желаете задать флаги, необходимо обозначить место, где можно указать время ожидания. Делается это введением дополнительной запятой на месте времени ожидания, как здесь:
exten => s,1,Dial(IAX2/user:pass@otherend.com/500,,флаги)
Для приложения Dial могут использоваться следующие флаги:
A( x )
Воспроизводится приветствие для вызываемой стороны; x– имя звукового файла, используемого в качестве приветствия.
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 ])
Продолжительность звонка ограничивается x миллисекундами, дается предупреждение, когда осталось у миллисекунд, и предупреждение повторяется каждые у миллисекунд вплоть до истечения допустимой продолжительности разговора. Параметр x - обязательный; y и z– необязательные. Для обеспечения дополнительного контроля могут использоваться следующие специальные переменные:
LIMIT_PLAYAUDIO_CALLER=yes|no
Определяет, воспроизводится ли звуковой файл для вызывающего абонента. По умолчанию - yes.
LIMIT_PLAYAUDIO_CALLEE=yes|no
Определяет, воспроизводится ли звуковой файл для вызываемого абонента.
LIMIT_TIMEOUT_FILE= имяфайла
Определяет, какой файл воспроизводится, когда время истекло. LIMIT_CONNECT_FILE= имяфайла
Определяет, какой файл воспроизводится в начале вызова. LIMIT_WARNING_FILE=имяфайла
Определяет, какой файл воспроизводится, если определен аргумент y. По умолчанию проговаривается оставшееся время.
m[класс]
Музыка для вызывающей стороны проигрывается до тех пор, пока не будет получен ответ на звонок. Можно также указать (необязательно) класс музыки во время ожидания, заданный в файле musiconhold.conf.
M( x [ "аргумент ])
При соединении выполняется макрос x и передаются (необязательно) аргументы, разделенные символом ". Макрос также может задавать одно из приведенных ниже значение для переменной канала MACRO_RESULT, чтобы обозначить, что должно произойти после завершения макроса: