Вход/Регистрация
Asterisk™: будущее телефонии Второе издание
вернуться

Меггелен Джим Ван

Шрифт:

На время выполнения макрос становится текущим контекстом. Это означает, что в случае разрыва соединения, например, поиск добавочного номера h будет выполняться в макросе, а не в контексте, из которого этот макрос был вызван. Поэтому в макросе должны быть обязательно описаны все соответствующие добавочные номера (в AEL можно использовать catch).

Из-за способа реализации Macro (оно выполняет содержащиеся в нем приоритеты через вспомогательный механизм) и выделения фиксированного стека памяти на каждый поток макрос ограничен семью уровнями вложенности (макрос, вызывающий макрос, вызывающий макрос и т. д.). Приложения, интенсивно использующие стек, в глубоко вложенном макросе могут привести к сбою в работе Asterisk раньше достижения этого предельного уровня вложенности.

Смотрите также

MacroExit, Goto, Gosub, главу 6

MacroExclusive

Выполняет макрос исключительно для одного канала

MacroExclusive(имямакроса[,аргументы])

Выполняет заданный макрос, гарантируя, что одновременно этот макрос выполняется только одним каналом. Если другой канал уже выполняет этот макрос, MacroExclusive приостановит выполнение данного канала до тех пор, пока тот канал не выйдет из макроса.

Смотрите также

Macro

MacroExit

Явный выход из макроса

MacroExit

Выполняет явный выход из макроса. Обычно Macro автоматически завершается, выполнив все приоритеты. MacroExit обеспечивает возможность завершить макрос раньше.

Смотрите также

Macro

MacroIf

Вызывает заранее определенный макрос по условию

MacroIf(условие?макросеслиистинно, аргументы:макросеслиложно, аргументы)

Вычисляет условие, а затем выполняет макросеслиистинно или макросеслиложно. Во всем остальном, кроме вычисления условия, MacroIf ведет себя идентично Macro.

; определяем макрос для обратного счета ; от заданного значения [macro-countdown]

exten => s,1,Set(COUNT=${ARG1})

exten => s,2,While($[ ${COUNT} > 0])

exten => s,3,SayNumber(${COUNT})

exten => s,4,Set(COUNT=$[ ${COUNT} - 1])

exten => s,5,EndWhile

; определяем макрос для прямого счета

; от заданного значения

[macro-countup]

exten => s,1,Set(COUNT=1)

exten => s,2,While($[ ${COUNT} < ${ARG1}])

exten => s,3,SayNumber(${COUNT})

exten => s,4,Set(COUNT=$[ ${COUNT} + 1])

exten => s,5,EndWhile

; вызываем наш макрос с двумя разными значениями [example]

exten => 123,1,MacroIf($[ ${foo} < 5 ]?countup,${foo}:countdown,${foo})

Смотрите также

GotoIf, GosubIf, IF, глава 6

MailboxExists

Выполняет переходы по условию,

если заданный ящик голосовой почты существует

MailboxExists(почтовыйящик[@контекст[, опции]])

Проверяет, существует ли в системе голосовой почты Asterisk почтовый ящик, определенный аргументом почтовыйящик. Если почтовый ящик находится не в контексте голосовой почты default, можно передать контекст для голосовой почты.

Это приложение задает переменную канала VMBOXEXISTSSTATUS. Если почтовый ящик существует, ей будет задано значение SUCCESS (успех). В противном случае она получит значение FAILED (неудача). Если в качестве параметра опции передается опция j, в случае существования почтового ящика, указанного аргументом почтовыйящик, приложение перейдет к приоритету n + 101 (где n - текущий приоритет).

exten => 123,1,Answer

exten => 123,n,Set(MYMAILBOX=123@default)

exten => 123,n,MailboxExists(${MYMAILBOX})

exten => 123,n,GotoIf($["${VMBOXEXISTSSTATUS}" = "SUCCESS"]?exists)

exten => 123,n,Playback(im-sorry)

exten => 123,n,Hangup

exten => 123,n(exists),Voicemail(u123)

Смотрите также

HasVoicemail, HasNewVoicemailMeetMe

Добавляет звонящего в конференцию MeetMe

MeetMe([номерконференции[, опции[, ПИН]]])

  • Читать дальше
  • 1
  • ...
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: