Asterisk app: FollowMe

Приложение диалплана Asterisk для «умной» предустановленной переадресации вызова.

Описание

Данное приложение позволяет перевести вызывающего абонента на указанные номера. Команда ссылается на профили <followmeid> заданные в followme.conf. Если указанный <followmeid> не найден, приложение возвращает вызов и диалплан выполняется со следующего приоритета.

Возвращает '-1' при отбое.

синтаксис

FollowMe(followmeid[,options])

Аргументы
  • options
    • a: Записать имя вызывающего абонента для объявления вызываемой стороне.
    • B([[context^]exten^]priority[(arg1[^...][^argN])]): Перед выполнением исходящего вызова выполнить GoSub по указанному контексту, используя текущий канал.
    • b([[context^]exten^]priority[(arg1[^...][^argN])]): Перед выполнением исходящего вызова выполнить GoSub по указанному контексту, в новом канале.
    • d: Выключить объявление 'Please hold while we try and connect your call'
    • I: Игнорировать любые запросы на изменение текущего вызова.
    • l: Отключить оптимизацию локального вызова. Видимо равносильно действию опции '/n' канала Local (Local/${EXTEN}@from-internal/n).
    • N: Не отвечать на входящий вызов, пока мы не готовы соединить вызывающего абонента. Игнорируется если вызов уже отвечен (например командой Answer). Если вызов не отвечен опции 'a' и 's' игнорируется, в то время как опция 'd' считается включенной, даже если не задана явно.
    • n: Проиграть сообщение о недоступности абонента, если он отказался принимать вызов.
    • s: Проиграть 'The party you're calling isn't at their desk' до начала переадресации.
примеры

пример 1

extensions.conf:

exten => _4411,1,Answer
exten => _4411,2,Dial(SIP/${EXTEN},12,t)
exten => _4411,3,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?:4:5)
exten => _4411,4,Followme(${EXTEN})
exten => _4411,5,VoiceMail(u${EXTEN})
exten => _4411,6,Hangup

followme.conf:

[4411]
context => default
number => 4410,30
number => 4420,30

пример 2:

extensions.conf:

exten => 1111,1,Dial(PJSIP/1111,15,tr)
exten => 1111,n,FollowMe(4444)
exten => 1111,n,Wait(1)
exten => 1111,n,Playback(beep)
exten => 1111,n,Goto(1)

exten => 2222,1,Dial(PJSIP/2222},15,tr)
exten => 2222,n,FollowMe(UserTest,san)
exten => 2222,n,Goto(4444,1)

exten => 4444,1,Dial(PJSIP/4444,15,tr)
exten => 4444,n,FollowMe(${EXTEN},s)
exten => 4444,n,Voicemail(UserTest)
exten => 4444,n,Hangup

followme.conf:

[4444]
music => default
context => default
number => 1965751234,5
number => 17182025678,20
number => 1234
number => 5678

[UserTest]
number => 09876&210,40,2 ; вызываются одновременно 09876 и 210 в течении 40-ка секунд.
number => 543,30,1 ; но сначала вызывается 543 в течении 30 секунд.

Пример 3: Follow-me без использования приложения app_followme

[incoming]
exten => 300,1,Answer()
exten => 300,2,Dial(DAHDI/1,30,grM(call-screening^${CALLERIDNUM}^${CONTEXT}^${EXTEN}^${PRIORITY}))
exten => 300,3,Hangup()
exten => 300,103,NoOp(${EXTEN}::${PRIORITY})
exten => 300,104,VoiceMail(u${EXTEN}@default)
exten => 300,105,Hangup()
exten => t,1,Playback(connection-timed-out)
exten => t,2,Playback(goodbye)
exten => t,3,Hangup()
[macro-call-screening]
exten => s,1,NoOp(${ARG2}::${ARG3}::${ARG4}::)
exten => s,2,Playback(vm-youhave)
exten => s,3,Playback(letters/a)
exten => s,4,Playback(call)
exten => s,5,Playback(from)
exten => s,6,SayDigits(${ARG1})
exten => s,7,Read(ACCEPTCALL|1-yes-2-no|1) ; (repeatoptions)
exten => s,8,GotoIf($["${ACCEPTCALL}" = ""] ?t,1)
exten => s,9,GotoIf($[${ACCEPTCALL} = 2] ?s,11)
exten => s,10,GotoIf($[${ACCEPTCALL} = 1] ?s,14:s,2)
exten => s,11,Set(NEWPRIORITY=$[${ARG4} + 101])
exten => s,12,Set(MACRO_RESULT=GOTO:${ARG2}^${ARG3}^${NEWPRIORITY})
exten => s,13,Goto(s,16);
exten => s,14,Playback(auth-thankyou)
exten => s,15,Set(MACRO_RESULT=)
exten => s,16,NoOp(End of macro)
exten => t,1,Playback(connection-timed-out)
exten => t,2,Goto(s,2)

см. также

Asterisk: followme.conf

  • asterisk/app/followme.txt
  • Последние изменения: 2018/03/12