Страница 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})