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)
см. также