Джим Меггелен - Asterisk™: будущее телефонии Второе издание
; проговаривает текущую дату и время
; в нескольких часовых поясах
exten => 123,1,DateTime(,America/New_York)
exten => 123,2,DateTime(,America/Chicago)
exten => 123,3,DateTime(,America/Denver)
exten => 123,4,DateTime(,America/Los_Angeles)
DBdel()
Удаляет ключ из AstDB
DBdel(семейство/ключ)
Удаляет ключ, заданный параметром ключ, из семейства ключей семейство в AstDB.
exten => 123,1,DBput(test/name=John) ; добавляем имя в AstDB exten => 123,2,DBget(NAME=test/name) ; извлекаем имя из AstDB exten => 123,3,DBdel(test/name) ; удаляем из AstDBЭто приложение является устаревшим и заменено функцией
DB_DELETE().
Смотрите также
DB_DELETE(), DBdeltree(), DB
Dbdeltree()
Удаляет семейство или дерево ключей из AstDB
DBdeltree(семейство[/деревоключей])
Удаляет заданное семейство или деревоключей из AstDB.
; создает пару записей в AstDB exten => 123,1,DBput(test/blue) exten => 123,2,DBput(test/green) ; теперь удаляем семейство ключей test exten => 123,3,DBdeltree(test)
Смотрите также
DB_DELETE(), DBdel(), DB
DeadAGI()
Выполняет AGI-совместимый сценарий для «мертвого» (разъединенного) канала
DeadAGI(программа, аргументы)
Выполняет AGI-совместимую программу для «мертвого» (разъединенного) канала. AGI позволяет Asterisk запускать внешние программы, написанные практически на любом языке программирования, для управления каналом связи, воспроизведения аудиофайлов, чтения DTMF-сигналов и т. д. посредством обмена информацией по AGI-про- токолу по STDIN и STDOUT. Аргументы, заданные параметром аргументы, будут переданы в программу.
Это приложение было написано специально для «мертвых» каналов, поскольку обычный AGI-интерфейс не работает корректно, если канал разъединен.
Чтобы получить список всех доступных команд AGI, используйте команду интерфейса командной строки show agi.
exten => h,1,DeadAGI(agi-test)
Смотрите также
AGI(), FastAGI()
Dial()
Пытается соединить каналы
Dlal(технология/имяпольгзователя:пароль(Фимяхоста/добавочныйномер[&технология2/peer2. . . ] [,времяожидания-ответа[, флаги[, URi]]])
Позволяет соединять все возможные типы каналов[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,времяожидания-ответа) Мощь приложения Dial() во многом определяется флагами. Они указываются после адреса и времени ожидания:
exten => s,1,Dial(IAX2/user: [email protected]/500,60,флаги)
Если время ожидания не задано и вы желаете задать флаги, необходимо обозначить место, где можно указать время ожидания. Делается это введением дополнительной запятой на месте времени ожидания, как здесь:
exten => s,1,Dial(IAX2/user: [email protected]/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, чтобы обозначить, что должно произойти после завершения макроса: