Send RTP before receiving it


We are a service provider and we offer our customer a SIP trunk service, this customer has Cisco dialer with CPA feature enabled, they want us to receive RTP stream before they send it.
Can you please advise if its possible to make set this in asterisk sip peer.

As soon as SDP negotiation completes, Asterisk will send RTP if it has any to send. It’s only if an endpoint is behind NAT that we may need to receive media in order to know the correct IP address and port to send to.

the issue is that this cisco dialer CPA feature is checking to see if the B party is a real person so they expect RTP, if not, the call is not connected. (As you can see in the messages diagram i attached above)

thye say(my customer) that we can give them RTP first so they can connect the call.

The message is an SDP negotiation, it doesn’t show RTP or anything. My answer doesn’t really change, if Asterisk has RTP to send then it will attempt to do so. If there’s no RTP to send, then it won’t.

That would be a causality violation and require time travel. Did you mean they expect you to send RTP first?

As well as the comedia case already mentioned, at least in extremely old versions, it was possible to get into a situation where incoming RTP had to be received to provide timing for outgoing RTP. I’m not sure that you need to do anything with currently supported versions, but, in the past, you had to enable internal timing, and specify a timing source.

I assume the Cisco is sending a valid address and port in the SDP.

I also assume that your other leg is a real phone.

if it helps my version is 13.40.0. so it will not work to send RTP before it is received ?

Asterisk acts as an RTP forwarder, it forwards RTP from one side to the other. In a call if no RTP is received on one side, then none will be sent on the other. The only times it generates RTP is for things like playback and conference bridges.

It is for those cases (Playback, etc.) that you need internal timing. 13 is recent in my terms, but the internal timing option still exists, I’m not sure if you still need it in those cases, or what the current default is, but it is:

; Enable internal timing support (-I) 
internal_timing = yes | no

in asterisk.conf

However, if you need it, there isn’t a real person at the end of the call, so if the service provider wants to ensure a real person, it would be working as they wanted if Playback didn’t correctly substitute for a real person.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.