Asterisk Signaling


i have a question regarding signalig in asterisk.


I have a queue, and i want to charge the customer only when agent picks up the phone. So I’m using this context:

exten => _X.,1,Progress()
exten => _X.,n,Playback(hello_message,noanswer)
exten => _X.,n,Queue(DISP)

So after i receive INVITE from provider, I’m sending back 183 response (Session in progress), and after that RTP(early media) with welcome message. The problem is that after the welcome message is played, after call enters the Queue, asterisk send back 200 as a response, and that message start billing process.

So is there any way that i can send 180 (ringing) until agent answers the phone?

Thanks for any help!

You can use the r option. I think you will also need to call Ringing() immediately before Queue(). However:

  1. Any chargeable network is likely to either start charging on the 183, or ignore it, along with the early media;
  2. I seem to remember the rules for gatewaying between SIP and ISDN say that once you’ve acted on 183, you cannot downgrade to 180.

Thanks David!

The provider is insisting that the charging begins after my call center sends 200. And I’m also aware that you probably cannot go back from 183(Seesion in progress) to 180(ringing).

The r option, did you mean to use it with Dial() or with Queue?

And finally do you have any idea on how to overcome this problem?

Thanks for your help anyway!!

With Queue. However Queue respects early media, so, if you have used Progress, MOH or announcements in the queue shouldn’t trigger a 200. (This caught us out the other way - we hadn’t answered and the upstream system ignored the early media from Queue.)