Hello, all. We have a dialer software that runs outgoing telephony campaigns. We have been using it successfully with PRI cards, now we’re evaluating it’s use also with a SIP trunk. Most of the things run perfectly good without a need to change anything except for dial string, but there’s some strange problem with asterisk interpreting SIP result codes.
Our software is written in Java using asterisk-java library. It is using Asterisk’s reason code from OriginateResponseEvent to determine if it should redial the number. Our consideration is that if Asterisk returns reason code 8 (Congestion) this means that the call has never actually reached the destination number, and it’s OK to try to redial again.
But with SIP trunk, many times i can see a really strange sequence of events:
After INVITE i get the following responses (example from a real conversation)
[17:01:40] SIP/2.0 100 Trying
[17:01:40] SIP/2.0 183 Session Progress
[17:01:51] SIP/2.0 480 Temporarily not available
As far as i understand, this means that the remote phone was ringing for 10
seconds and then the call failed due to a timeout. As far as i understand, i’m supposed to get reason code 3, but actually the java application gets OriginateResponseEvent with failure reason code 8.
This behavior is hard to reproduce. I was trying with my own phone number and then i get the expected reason code 3, but i constantly get this situation running our customer’s campaigns.