Asterisk: followme.conf
Follow Me - настройка предустановленной переадресации вызова - Следуй За Мной.
Asterisk Follow Me
Конфигурационный файл /etc/asterisk/followme.conf используется для назначения глобальных параметров general и уникальных адресатов followmeid, которые могут выполняться из диалплана приложением Follow Me
Приоритет может быть использован только один раз, т.е. в одной строке, но не в разных (для одного пользователя).
Отдельные строки с одинаковым приоритетом будут игнорироваться.
Параллельные вызовы на разные номера (два и больше), должны описываться в одной строке при помощи оператора '&'.
[имя или номер] используется для вызова приложением FollowMe
context ⇒ <context name> - контекст, из которого будут вызываться заданные номера folowme
number ⇒ <number>,[<timeout>],[<priority>] - адресат, время посылки вызова, приоритет
Простое распределение по порядку строк.
[followmeid_simple] context=from-internal number => 9981138,15 number => 1234,20 number => 3216111,45
Сперва вызывается номер 9981138 в течении 15-ти секунд, затем номер -1234 в течении 20 секунд и после номер 3216111 в течении 45 секунд.
Сортировка по приоритетам.
[followmeid_sorted] context=from-internal number => 9981138,35,2 number => 1234,20,1 number => 3216111,50,3
Сначала вызывается номер 1234 (приоритет 1), затем 9981138 (2) и последним 3216111 (3) .
Параллельные вызовы
[followmeid_parallel] context=full_outbound_access number => 1234&9981138,35,1 number => 3216111,50,2
Сперва вызываются номера 1234 и 9981138 одновременно, затем 3216111.
Конфигурационный файл followme.conf
Убедитесь, что app_followme.so загружен.
*CLI> module load app_followme.so Loaded app_followme.so == Parsing '/etc/asterisk/followme.conf': Found followme.conf == Registered application 'FollowMe' Loaded app_followme.so => (Find-Me/Follow-Me Application)
[general]
Глобальные параметры folowme
featuredigittimeout=>5000
Время в миллисекундах, в течении которого система будет ждать подтверждения принять вызов, вводом DTMF кода, от вызываемого абонента.
enable_callee_prompt=>true
Включить голосовое объявление вызываемому абоненту, с предложением принять или отказаться от переадресованного вызова.
По умолчанию - включено.
takecall=>1
Общее, по умолчанию '1', значение DTMF кода, подтверждения приема вызова.
Может состоять из одной или нескольких цифр.
declinecall=>2
Общее, по умолчанию '2', значение DTMF кода, отказа от ответа на вызов.
'Incoming call from'
call_from_prompt=>followme/call-from
Общее, по умолчанию, сообщение «Входящий вызов от».
'You have an incoming call'
norecording_prompt=>followme/no-recording
Общее, по умолчанию, сообщение «Входящий вызов», если вызывающий выбрал опцию, не записывать свое имя.
'Press 1 to accept this call or press 2 to decline it'
options_prompt=>followme/options
Общее, по умолчанию, сообщение - «Нажмите 1 чтобы принять вызов или 2 чтобы отказаться».
'Please hold while we try and connect your call'
pls_hold_prompt=>followme/pls-hold-while-try
Общее сообщение: «Оставайтесь на линии, мы вас соединяем».
'The party you're calling isn't at their desk'
status_prompt=>followme/status
Общее сообщение: «Вызываемый абонент не на рабочем месте»
'I'm sorry, but we were unable to locate your party'
sorry_prompt=>followme/sorry
Общее сообщение: «Местонахождение абонента не установлено»
[followme_id_test]
Конфигурация уникального идентификатора для вызова приложением FollowME
musicclass=>default
Класс Музыки на Удержании для воспроизведения ожидающему абоненту.
context=>default
Контекст для вызова адресатов followme
number=>01233456,25
Адресат followme.
Формат:
number⇒ <number to call[&2nd #[&…]]>[,<таймаут в секундахs>[,<порядок выбора адресатов>]]
enable_callee_prompt=>true
Включить приглашение вызывающему абоненту активировать followme.
По умолчанию действует глобальная установка из раздела [general].
takecall=>1
Общее, по умолчанию '1', значение DTMF кода, подтверждения приема вызова.
Может состоять из одной или нескольких цифр. По умолчанию действует глобальная установка из раздела [general].
declinecall=>2
Общее, по умолчанию '2', значение DTMF кода, отказа от ответа на вызов. По умолчанию, как задано в [general].
Назначить сообщения отличные от заданных по умолчанию в [general]
call_from_prompt=>followme/call-from
norecording_prompt=>followme/no-recording
options_prompt=>followme/options
pls_hold_prompt=>followme/pls-hold-while-try
status_prompt=>followme/status
sorry_prompt⇒followme/sorry
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)
см. также