<div dir="ltr">Hello!<div><br></div><div>Maybe it will be useful for somebody, I applied next configuration and iOS starts working.</div><div><br></div><div>....</div><div>modparam("rtpengine", "write_sdp_pv", "$avp(sdp)")<br></div><div>....</div><div>rtpengine_manage("trust-address replace-origin replace-session-connection rtcp-mux-offer rtcp-mux-accept media-handover ICE=force RTP/SAVPF");<br></div><div>set_body("$avp(sdp)", "application/sdp");</div><div>....</div><div><div>$avp(sdp) = $(avp(sdp){re.subst,/t=0 0/t=0 0\r\na=group:BUNDLE audio/g});</div><div>$avp(sdp) = $(avp(sdp){re.subst,/a=setup:actpass/a=setup:actpass\r\na=mid:audio/g});</div><div>set_body("$avp(sdp)", "application/sdp");<br></div></div><div><br></div><div>BR,</div><div>Denys</div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 31 October 2017 at 16:57, Denys Pozniak <span dir="ltr"><<a href="mailto:denys.pozniak@crazycall.com" target="_blank">denys.pozniak@crazycall.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello!<div><br></div><div>Probably this case is not connected Kamailio directly, but it can be somebody will point me in the correct direction :)</div><div> </div><div>We have VoIP solution: FreeSWITCH -> Kamailio + Rtpengine -> WebRTC Chrome.</div><div>Everything works Ok except iOS application based on <span style="font-size:12.8px">React Native WebRTC (<a href="https://github.com/oney/react-native-webrtc" target="_blank">https://github.com/oney/<wbr>react-native-webrtc</a>) + JsSIP.</span></div><div><span style="font-size:12.8px">It answers error 488 on incoming INVITE (wSDP):</span></div><div><br></div><div>INVITE SDP to iOS:</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><i>......</i></div><div><i>v=0</i></div><div><i>o=FreeSWITCH 1508701860 1508701861 IN IP4 52.52.52.52</i></div><div><i>s=FreeSWITCH</i></div><div><i>c=IN IP4 52.52.52.52</i></div><div><i>t=0 0</i></div><div><i>m=audio 30028 RTP/SAVPF 0 8 102</i></div><div><i>a=rtpmap:0 PCMU/8000</i></div><div><i>a=rtpmap:8 PCMA/8000</i></div><div><i>a=rtpmap:102 opus/48000/2</i></div><div><i>a=fmtp:102 useinbandfec=1; maxaveragebitrate=14400; maxplaybackrate=8000; ptime=20; minptime=10; maxptime=40</i></div><div><i>a=ptime:20</i></div><div><i>a=sendrecv</i></div><div><i>a=rtcp:30028</i></div><div><i>a=rtcp-mux</i></div><div><i>a=setup:actpass</i></div><div><i>a=fingerprint:sha-1 97:1A:E9:FE:D6:65:98:E6:88:EE:<wbr>D5:9F:20:A3:19:F8:86:E7:E0:E3</i></div><div><i>a=ice-ufrag:9QBO8qg2</i></div><div><i>a=ice-pwd:<wbr>PPGPo35xGBAs6RnTdMYVM9I8fx</i></div><div><i>a=candidate:KXENzrffZpQvwxdV 1 UDP 2130706431 52.52.52.52 30028 typ host</i></div><div><div class="m_-5671789670584274270gmail-yj6qo m_-5671789670584274270gmail-ajU" style="margin:2px 0px 0px;font-size:12.8px"><div id="m_-5671789670584274270gmail-:39d" class="m_-5671789670584274270gmail-ajR"><img class="m_-5671789670584274270gmail-ajT" src="https://ssl.gstatic.com/ui/v1/icons/mail/images/cleardot.gif"></div></div></div></blockquote><div><div class="m_-5671789670584274270gmail-yj6qo m_-5671789670584274270gmail-ajU" style="margin:2px 0px 0px;font-size:12.8px"><div id="m_-5671789670584274270gmail-:39d" class="m_-5671789670584274270gmail-ajR"><br></div></div></div><div>iOS console log:</div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><i>11:55:23.670 browser.js:133 JsSIP:WebSocketInterface send() +10ms<br></i><i>11:55:23.670 browser.js:133 JsSIP:RTCSession session progress +5ms<br></i><i>11:55:23.671 browser.js:133 JsSIP:RTCSession emit "progress" +1ms<br></i><i>11:55:23.671 webrtc.js:108 WebRTC.on progress:  local<br></i><i>11:55:23.679 browser.js:133 JsSIP:RTCSession emit "peerconnection" +8ms<br></i><i>11:55:23.680 webrtc.js:89 WebRTC.on peerconnection<br></i><i>11:55:23.680 browser.js:133 JsSIP:RTCSession emit "sdp" +1ms<br></i><i>11:55:23.689 browser.js:133 JsSIP:Transport send() +20ms<br></i><i>11:55:23.689 browser.js:133 JsSIP:Transport sending message:</i><i><b><br></b></i><i><b><span style="background-color:rgb(255,255,255)">SIP/2.0 488 Not Acceptable Here</span></b></i><i><br></i><i>11:55:23.701 debug.js:115 JsSIP:ERROR:RTCSession emit "peerconnection:<wbr>setremotedescriptionfailed" [error:Error: Failed to set remote offer sdp: Failed to create channels.</i></blockquote><div><i><br></i></div><div><br></div><div>I found similar issue on thier git <a href="https://github.com/oney/react-native-webrtc/issues/293" target="_blank">https://github.com/oney/<wbr>react-native-webrtc/issues/293</a> and main solution is to struct SDP in way like:</div><br><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><i>a=group:BUNDLE audio<br>m=audio PORT RTP/SAVPF N M K<br>a=mid:audio</i></blockquote><div><br></div><div>How to modify SDP on Kamailio side (after Rtpengine modification) like below?</div><div><br></div><div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><br></div><div><i>v=0</i></div><div><i>o=FreeSWITCH 1508701860 1508701861 IN IP4 52.52.52.52</i></div><div><i>s=FreeSWITCH</i></div><div><i>c=IN IP4 52.52.52.52</i></div><div><i>t=0 0</i></div><div><i style="background-color:rgb(255,255,0)"><b>a=group:BUNDLE audio</b></i></div><div><i>m=audio 30028 RTP/SAVPF 0 8 102</i></div><div><i>a=rtpmap:0 PCMU/8000</i></div><div><i>a=rtpmap:8 PCMA/8000</i></div><div><i>a=rtpmap:102 opus/48000/2</i></div><div><i>a=fmtp:102 useinbandfec=1; maxaveragebitrate=14400; maxplaybackrate=8000; ptime=20; minptime=10; maxptime=40</i></div><div><i>a=ptime:20</i></div><div><i>a=sendrecv</i></div><div><i>a=rtcp:30028</i></div><div><i>a=rtcp-mux</i></div><div><i>a=setup:actpass</i></div><div><i style="background-color:rgb(255,255,0)"><b>a=mid:audio</b></i></div><div><i>a=fingerprint:sha-1 97:1A:E9:FE:D6:65:98:E6:88:EE:<wbr>D5:9F:20:A3:19:F8:86:E7:E0:E3</i></div><div><i>a=ice-ufrag:9QBO8qg2</i></div><div><i>a=ice-pwd:<wbr>PPGPo35xGBAs6RnTdMYVM9I8fx</i></div><div><i>a=candidate:KXENzrffZpQvwxdV 1 UDP 2130706431 52.52.52.52 30028 typ host</i></div></blockquote></div><div><i><br></i></div><div><i><br></i></div><div>BR,</div><div>Denys</div><div><br></div></div>
</blockquote></div><br></div>