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)