Asterisk Transfere a chamada para a próxima extensão se o INUSE anterior

1

Estou tentando transferir a chamada para a próxima extensão se a anterior estiver usando (INUSE) ou a chamada estiver em andamento. Tentei usar EXTENSION_STATE(extension[@context]) para encontrar o status da seguinte forma:

[sales]
exten => s,1,Dial(SIP/123)
exten => s,n,GotoIf($["${EXTENSION_STATE(123)}"="INUSE"]?passed:failed)
exten => s,n(passed),Dial(SIP/124)
exten => s,n(failed),Hangup();if other

Mas não foi bem sucedido. Como posso fazer isso?

    
por jibon57 24.09.2015 / 21:33

2 respostas

0

Sua solução é complicada, é basicamente uma das razões pelas quais não está funcionando. Você deve tentar isso, essa é uma abordagem simplificada comum usando a variável interna ${DIALSTATUS} . Desde quando respondida - a chamada será simplesmente desligada, você só precisa lidar com todos os status errados:

[sales] exten => s,1,Dial(SIP/123) exten => s,2,Goto(${EXTEN}-${DIALSTATUS},1) exten => s-BUSY,1,Dial(SIP/other) exten => s-CONGESTION,1,Dial(SIP/someone)

    
por 25.09.2015 / 05:20
0

Este trabalhou para mim usando GROUP_COUNT () em vez de EXTENSION_STATE:

exten => s,1,Set(GROUP()=OUTBOUND_GROUP)
exten => s,2,GotoIf($[ ${GROUP_COUNT()} > 1 ]?try1:try2)
exten => s,3(try1),Dial(SIP/124)
exten => s,4(try2),Dial(SIP/123)
    
por 25.09.2015 / 08:04