Страница 1 из 1

Переадресация пользователей

Добавлено: 16 май 2016, 18:48
medinet
Всем хорошего настроения!
Возможно, подобные темы были, но я не смог найти, прошу помощи у специалистов.

Суть в том, чтобы переадресовывать входящий вызов на другого оператора, если дефолтный занят или не залогинен.
Сейчас идет строка такая:

PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
exten = 51,n,Goto(dial_operator,1004,1)


[dial_operator]
exten = _[56]0XX,1,ResetCDR()
exten = _[56]0XX,n,Set(CALLFILENAME=${STRFTIME(${EPOCH},,%Y%m%d%H%M)}-${CALLERID(num)}.wav)
exten = _[56]0XX,n,Set(CDR(filename)=${CALLFILENAME})
exten = _[56]0XX,n,Dial(SIP/${EXTEN},60,grtmM(monitor,${CALLFILENAME}))
exten = _[56]0XX,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?101)
exten = _[56]0XX,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?101)
exten = _[56]0XX,n,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?101)
exten = _[56]0XX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?101)
exten = _[56]0XX,n,GotoIf($["${DIALSTATUS}" = "CANCEL"]?101)
exten = _[56]0XX,n,GotoIf($["${DIALSTATUS}" = "DONTCALL"]?101)
exten = _[56]0XX,n,Hangup()
Я так понимаю, что идет привязка к диалстатусу, но цель - выставить очередность операторов, на которые пойдет переадресация в случае занятости предыдущих и в итоге, если все заняты/недоступны (1004, 1005, 1006, 1011 например), перекинуть на блок 101 (операторы заняты и т.д.). Я запутался, прошу помощи.

Re: Переадресация пользователей

Добавлено: 16 май 2016, 20:49
ded
Вы конструируете механизм, который давно уже создан. Это = очередь - Queue.
Почитайте книгу о будущем.

Re: Переадресация пользователей

Добавлено: 17 май 2016, 06:19
medinet
Вы снова меня выручаете. Спасибо большое)
Не сообразил, как нужно поисковый запрос задать.

Re: Переадресация пользователей

Добавлено: 17 май 2016, 14:48
tol_iwan
:-)
Тот случай, когда ответ помог мне понять вопрос...

Re: Переадресация пользователей

Добавлено: 24 май 2016, 17:35
medinet
tol_iwan писал(а)::-)
Тот случай, когда ответ помог мне понять вопрос...
Вы абсолютно правы ) вопрос сформулировать я нормально не смог.


Пользуясь случаем, хочу спросить - вот первый оператор в очереди недоступен, или занят - можно ли вставлять туда строки вызова РНР интерпретатора с переменной с указанием статуса этого оператора?
Например:
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
[managers]
strategy = linear
timeout = 20
joinempty=no
member => SIP/104
----
В случае, если оператор 104 не ответил, запускается строка типа "System(php /home/notice.php {статус оператора 104 - занят, недоступен, не ответил в течение таймаута})"
----
member => SIP/205
----
В случае, если оператор 205 не ответил, запускается строка типа "System(php /home/notice.php {статус оператора 205 - занят, недоступен, не ответил в течение таймаута})"
----
Или такие строки лучше ставить в extensions.conf и вставлять коды между очередями? Но статус оператора все равно нужно как-то получать(