Issue
A customer is using Polycom VVX 311 handsets with Skype for Business Server 2015. They have a Sonus SBC 1000 with SIP Trunks to Gamma.
They reported that they were unable to transfer inbound PSTN calls between users.
Investigation
Call transfers work when answering the inbound PSTN call using a Skype for Business soft client.
Internal call transfers work from the Polycom VVX handsets.
Consultative Transfers (where party A speaks to party C before party A transfers the call) work from the Polycom VVX handsets; however, Blind Transfers (where party A transfers the call without speaking to party C) do not. Blind Transfer is the default transfer method on Polycom VVX handsets.
I ran CLS logger, recreated the issue, and the following is what I got.
SIP/2.0 400 The INVITE request URI is malformed.
TL_INFO(TF_PROTOCOL) [SKYPESRV01\SKYPESRV01]226C.0984::09/25/2018-12:26:40.439.00002403 (SIPStack,SIPAdminLog::ProtocolRecord::Flush:ProtocolRecord.cpp(261)) [183095922]
Trace-Correlation-Id: 183095922
Instance-Id: 2FDCF
Direction: outgoing;source=”local”
Peer: SKYPESRV01.x500.local:49984
Message-Type: response
Start-Line: SIP/2.0 400 The INVITE request URI is malformed.
From: <sip:SKYPESRV01.x500.local:5060;user=phone>;epid=2F8FD419DD;tag=922439a2f
To: <sip:SKYPESRV01.x500.local:5060;user=phone>;tag=52C0D2C096DD5221A0E9B29C88D642C4
Call-ID: 6c82fcc412bd4298a1bf42691cd3ce48
CSeq: 15350 SERVICE
Via: SIP/2.0/TLS 192.168.10.15:49984;branch=z9hG4bK253b75ff;ms-received-port=49984;ms-received-cid=63D400
Content-Length: 0
ms-diagnostics: 14002;reason=”Called number not found”;source=”SKYPESRV01.x500.LOCAL”;appName=”TranslationService”
Server: TranslationService/6.0.0.0
$$end_record
Followed by:
SIP/2.0 400 The INVITE request URI is malformed.
TL_INFO(TF_PROTOCOL) [SKYPESRV01\SKYPESRV01]2AEC.115FC::09/25/2018-12:26:40.439.00002404 (S4,SipMessage.DataLoggingHelper:sipmessage.cs(801)) [666170509]
<<<<<<<<<<<<Incoming SipMessage c=[<SipTlsConnection_F38077>], 192.168.10.15:49984<-192.168.10.15:5061
SIP/2.0 400 The INVITE request URI is malformed.
FROM: <sip:SKYPESRV01.x500.local:5060;user=phone>;epid=2F8FD419DD;tag=922439a2f
TO: <sip:SKYPESRV01.x500.local:5060;user=phone>;tag=52C0D2C096DD5221A0E9B29C88D642C4
CSEQ: 15350 SERVICE
CALL-ID: 6c82fcc412bd4298a1bf42691cd3ce48
VIA: SIP/2.0/TLS 192.168.10.15:49984;branch=z9hG4bK253b75ff;ms-received-port=49984;ms-received-cid=63D400
CONTENT-LENGTH: 0
SERVER: TranslationService/6.0.0.0
ms-diagnostics: 14002;reason=”Called number not found”;source=”SKYPESRV01.x500.LOCAL”;appName=”TranslationService”
Fix
My first thought was the inbound calling number manipulation wasn’t configured correctly on the Sonus SBC, however I ruled that out. Eventually, after checking everything, including updating the Polycom VVX phones to the latest code, I tracked the issue down to be specific with the Sonus SBC and Polycom VVX handsets. I have other deployments using AudioCodes SBCs with the same SIP provider, the same handsets etc. and this issue doesn’t occur.
I applied the following setting to the Polycom VVX phones by adding the following line into the the relevant config file on the Polycom Central Provisioning Server.
<call call.BlindTransferSpecialInterop=”1″ />
This value makes the Polycom VVX wait for an acknowledgement from the transferee before ending the call.
Reboot the Polycom VVX, and Blind Transfers start working.
Sorted!