Страница 1 из 1
Из очереди на городской номер с перезвоном, если зянято/etc
Добавлено: 04 июн 2015, 17:36
metris
Добрый день!
Задача - звонок из очереди переадресовывать на 5 городских номеров и если у одного из абонентов занято/ошибка, попробовать дозвониться ему через 3 сек.
Дистрибутив - FreePBX
Звонить из очереди пробовал как на экстеншн, у которого в фолоу-ми прописаны 5 номеров, так и прямо на эти 5 номеров. Проблема - только одна попытка дозвона, если сразу получил BUSY - все, больше по этому номеру не звонит (исключение - если все номера вернули занято/ошибка, тогда перезванивает по всем). Вариант - поставить Agent Timeout, но тогда астериск перезванивает всем участникам, даже тем, кому сразу дозвонился, что очень не круто.
Стратегия - ringall
Подскажите, как решить.
Re: Из очереди на городской номер с перезвоном, если зянято/
Добавлено: 04 июн 2015, 22:45
ded
При чём тут очередь - непонятно!
Все пять городских номеров завести как Custom extensions - внутренний придумать каждому любой, в строке Dial там прописать что-то типа
SIP/operator/1122334
или
SIP/gatewayFXO/2233445
и затем организовать их в ринг группу с подходящим сценарием. Или организовать из них очередь с подходящим сценарием.
Re: Из очереди на городской номер с перезвоном, если зянято/
Добавлено: 05 июн 2015, 16:33
metris
ded писал(а):При чём тут очередь - непонятно!
Это вводные, звонить нужно из очереди.
ded писал(а):Все пять городских номеров завести как Custom extensions - внутренний придумать каждому любой, в строке Dial там прописать что-то типа
SIP/operator/1122334
или
SIP/gatewayFXO/2233445
и затем организовать их в ринг группу с подходящим сценарием. Или организовать из них очередь с подходящим сценарием.
Спасибо за наводку, получилось так:
Код: Выделить всё
[from-internal-custom]
exten => 1105,1,Answer()
same => n,NoOP(Calling 1111111 AAA)
same => n,Set(i=6)
;loop count
same => n(loop),NoOP
same => n,Set(i=$[ ${i} - 1 ])
;make call
same => n,Dial(SIP/1111111@trunkName,60,g)
same => n,NoOP(${DIALSTATUS})
same => n,GotoIf($[ "${DIALSTATUS}" == "ANSWER" ]?hangup)
same => n,GotoIf($[ "${DIALSTATUS}" == "CONGESTION" | "BUSY" ]?wait_loop)
same => n(wait_loop),Wait(3)
same => n,GotoIf($[ ${i} <= 0 ]?noanswer)
same => n,Goto(loop)
same => n(noanswer),Answer()
same => n(hangup),Hangup()
Ну и потом звонок через виртуальный экстеншн с фолоу-ми.
Re: Из очереди на городской номер с перезвоном, если зянято/
Добавлено: 05 июн 2015, 16:44
ded
Зачем же кодить, если у вас FreePBX?
Re: Из очереди на городской номер с перезвоном, если зянято/
Добавлено: 05 июн 2015, 17:28
metris
дык, custom extention только ручками можно запилить
Re: Из очереди на городской номер с перезвоном, если зянято/
Добавлено: 05 июн 2015, 17:33
ded
Дык, для сценария
Код: Выделить всё
Все пять городских номеров завести как Custom extensions - внутренний придумать каждому любой, в строке Dial там прописать что-то типа
SIP/operator/1122334
или
SIP/gatewayFXO/2233445
скрипач не нужен! То есть custom extention.
Re: Из очереди на городской номер с перезвоном, если зянято/
Добавлено: 05 июн 2015, 18:07
metris
Ваши речи мне не понятны
Custom extention в FreePBX можно создать только для коментов.
Re: Из очереди на городской номер с перезвоном, если зянято/
Добавлено: 05 июн 2015, 22:51
ded
Нет.
Re: Из очереди на городской номер с перезвоном, если зянято/
Добавлено: 08 июн 2015, 17:25
metris
Это существенно ничего не меняет, очередь так и не перезванивает по этим номерам, если они отдают занято/затор/ошибка.
Самым важным в экстене, который я написал является самостоятельный перезвон. В том методе, что вы предлагаете такого реализовать у меня не получилось.
Правда с моим вариантом тоже возникли проблемы. Теперь я не могу увязать в букет все звонки:
1. звонок, что зашел ко мне
2. перенаправление в очередь
3. перенаправление на экстены 110Х
4. звонок на номер из экстена
Первые два увазяны uniqueid, остальные не маркированы и как его передать на 2 и 3 шаг пока не разобрался...
Re: Из очереди на городской номер с перезвоном, если зянято/
Добавлено: 08 июн 2015, 18:34
metris
Решил добавлением строчки
same => n,Set(CDR(recordingfile)=${CALLFILENAME}.${MON_FMT})