Apologizing in advance for a long post…
Vonage is ignoring my Comfort Noise (CN) and dropping calls.
Here’s the background…
I developed a system for a client that plays prompts and records responses – aka a Third Party Verification system. This system is Asterisk 17.6.0 on CentOS 7.
The typical use case is an agent of my client’s customer will chat up their customer about how wonderful their utility service is and that they should switch from their current utility. Then the agent calls (SIP or PSTN) my client’s system which walks the agent+customer through a script, prompting and recording responses.
This all has been working well for almost 15 years.
Now my client has a new customer that uses the Plank CRM that uses Nexmo/Vonage for call origination.
This works fine if they configure the CRM to use PSTN, but if they use SIP, the calls drop if a recording is not completed within around 5 minutes. Typically this limit is exceeded if the customer has to hunt for their current utility bill.
Vonage says they drop calls with no packets received for something north of 4:30 minutes.
After playing the prompt, my AGI executes ‘record file’ so at that point, no packets are being sent from Asterisk. If the ‘record’ is not completed within 5 minutes, Vonage sends a BYE.
I enabled ‘transmit_silence = yes’ in asterisk.conf and ‘rtp_keepalive = 1’ in pjsip.conf for the endpoint. No joy.
I can see Comfort Noise packets both on the Asterisk console (rtp set debug on) and in PCAPs with Wireshark.
We sent a PCAP showing CN to Vonage and this is their reply:
“When reviewing the SIP traces, The RTP being sent is not in the agreed encoding exchanged in the SDP during the SIP Handshake, G711u with a payload of 0, but rather a payload of 13. At no point was a payload of 13 agreed in the SDP, only 0 and 101.
Could you please check the configuration on your side to include the payload 13
like : a=rtpmap:13 CN/8000
and then retest.
These are calls that originate from Vonage (216.147.x.x). Here’s the SDP from their INVITE:
v=0
o=Nexmo 1857134622 1857134622 IN IP4 216.147.x.x
s=Nexmo
c=IN IP4 216.147.x.x
t=0 0
m=audio 15530 RTP/AVP 8 0 97 18 9 101
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:97 iLBC/8000
a=fmtp:97 mode=30
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:9 G722/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv
and my (45.79.x.x) SDP from my OK:
v=0
o=- 1857134622 1857134624 IN IP4 45.79.x.x
s=Asterisk
c=IN IP4 45.79.x.x
t=0 0
m=audio 12098 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=maxptime:150
a=sendrecv
I’ve never had to deal with CN before, but my limited understanding of SDP negotiation is that I can only agree to stuff they offer. Doesn’t Vonage have to offer before I can agree? Does CN have to be negotiated?
What are my options at this point?