Имеем Asterisk 13.2.0 через который идут звонки от клиентов к операторам ( не очередь, просто переадресация)
Что бы решить задачу: "проигрывать приветствие ВЫЗЫВАЕМОЙ стороне бесконечно, пока оператор не нажмет 1"
Был написан макрос, примерно такой:
Код: Выделить всё
exten => s,1,Log(NOTICE, ${UNIQUEID} Come ${CALLERID(all)} to [macro-hello-play]! CHANNEL=${CHANNEL})
same = n,Set(TIMEOUT(response)=1)
same = n(loop),Wait(1)
same = n,Background(hello-play)
exten => 1,1,MacroExit()
exten => t,1,Goto(loop)
exten => i,1,Playback(pbx-invalid)
exten => i,2,Goto(loop)
Такая форма была сделана для того что бы оператор обязательно услышал приветствие, даже если перед ним трубку снял автоответчик.
Но возникла проблема, если клиент (вызывающий) положил трубку до того как оператор нажмет "1", то макрос не завершает своего действия, а продолжает просить нажать 1, в логах в это время получаем:
Код: Выделить всё
WARNING[29074]: chan_sip.c:4286 __sip_autodestruct: Autodestruct on dialog 'AE643477BA4AB84473ECFABCB751C1F5' with owner SIP/IP-000053e8 in place (Method: BYE). Rescheduling destruction for 10000 ms
Вопрос: Мне нужно обрывать макрос если вызывающий положил трубку или сообщать оператору, что клиент не дождался и повесил трубку. Подскажите с какой стороны зайти.
Или может я изначально выбрал не правильное решение?
Спасибо!