LINUX.ORG.RU

Передача параметра в макрос очереди

 , ,


0

1

Из Dial можно вызвать macro-update и передать параметр ${CALLERID(num)}:

exten=> s,n,Dial(Local/${AGENT}@phones,60,gM(update^${CALLERID(num)}))
Из Queue тоже можно вызвать macro-test:
exten=> s,n,Queue(reference,tTh,,,,,test)
но как передать/поймать параметр ${CALLERID(num)} в macro-test?

★★★★★

Дык вызывать macro, а в нем вызвывать queue/dial.

Или что?

zgen ★★★★★ ()
Ответ на: комментарий от zgen

Или что?

Надо в макросе который вызывается из приложения Queue обработать ${CALLERID(num)}, но его там нет и передать (по аналогии с gM(update^${CALLERID(num)})) не возможно.

petav ★★★★★ ()
Последнее исправление: petav (всего исправлений: 1)
Ответ на: комментарий от zgen

нафига это

Для красоты, не более. Решаю задачу, точнее решил, со связыванием звонящего с агентом. Т.е. первый звонок в очередь, потом станция на сутки запоминает агента и следующий звонок уже агенту напрямую. Разгружаю секретаря... Так вот необходимо обрабатывать логику. Для Dial сделал макросом с передачей ему нужных параметров.

[agent-answering]
exten=> s,1,NoOp(---------- Caller Agent)
exten=> s,n,GotoIf($["${AGENT}" = ""]?notagent)
exten=> s,n,Dial(Local/${AGENT}@phones,60,gM(update^${CALLERID(num)}))
exten=> s,n,Hangup()
exten=> s,n(notagent),Goto(queue-answering,s,1)

[macro-update]
exten=> s,1,Set(ODBC_UPDATE_DATA()=${ARG1},${EPOCH})

Для контектса queue-answering обработываю конец разговора с агентом в exten h.

[queue-answering]
exten=> s,1,NoOp(---------- Caller Queue)
exten=> s,n,Queue(reference,tTh,,,120,,)
exten=> s,n,Hangup()
exten=> h,1,Set(AGENT=${CUT(MEMBERINTERFACE,/,2)})
exten=> h,n,Set(AGENT=${CUT(AGENT,@,1)})
exten=> h,n,GotoIf($["${AGENT}" = ""]?notagent)
exten=> h,n,Set(ODBC_DELETE_DATA()="${CALLERID(num)}")
exten=> h,n,Set(ODBC_SET_DATA()="${CALLERID(num)}","${EPOCH}","${AGENT}")
exten=> h,n(notagent),Hangup
Все работает! В макросе вызываемом из Queue отловить нужные мне данные не удается и передать тоже. Попробую вот это по вашей ссылке

[1234] exten => 1000,1,Queue(8000)

[macro-link] exten => s,1,system(wget "http://somehost:port/service/Find?phonenumber=${CALLERID(num)}&internal_number=1000")

queue.conf:

member=Local/1000@from-internal/n,0 membermacro=link

Может мне больше понравится. Я считаю, что call-back макрос логичнее будет.

petav ★★★★★ ()
Последнее исправление: petav (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.