Digging into this a bit deeper, I now understand the exact problem.
The issue is the difference in newlines between sdp_get output and the JSON 
format.
sdp_get returns the SDP with unix newline characters i.e. \r\n.

However JSON won't accept unix newlines and requires a single line output with 
literal \r\n instead (i.e. escaped).
So now I'm having to write the SDP into an external file using exec_msg, 
manipulate it with awk -v RS='\r?\n' -v ORS='\\r\\n' '1' and then bring it back 
into Kamailio. Not nice and also not yet working correctly yet.
If there was a function within the JANSSON module to take a multi-line input 
(like the SDP) and convert it into a single line with literal \r\n characters 
ready for posting in a JSON message then that would make life much easier.






    On Sunday, 21 April 2019, 19:15:22 BST, David Dean 
<[email protected]> wrote:  
 
 I'm trying to send an SDP from a SIP client to Janus using JSON over HTTP.
The problem is that Janus is erroring on the SDP content with the following 
error:

JANUS HTTP: Get SDP for echo plugin: {#012   "janus": "error",#012   "error": 
{#012      "code": 454,#012      "reason": "JSON error: on line 9: control 
character 0xd near '\"v=0'"#012   }#012} Result code 200

I tried using {s.escape.common} to escape any quotations, commas etc but it 
doesn't appear to replace the control characters with newlines.
Any suggestions on how best to remove these control characters so that Janus 
will accept the SDP over JSON?
Here is the relevant section of kamailio.cfg:

# HTTP: Request SDP for echo test plugin                sdp_get("$avp(sdp)");
                $var(res) = http_connect("janus", 
"/janus/$var(JANUS-ID)/$var(ECHO-ID)", "application/json", "{        \"janus\" 
: \"message\",        \"transaction\" : \"testtesttest99\",        \"body\" : { 
               \"audio\" : true        },        \"jsep\" : {                
\"type\" : \"offer\",                \"sdp\" : \"$(avp(sdp){s.escape.common})\" 
       }}", "$avp(janus-pluginsession)");                xlog("L_INFO", "JANUS 
HTTP: Get SDP for echo plugin: $avp(janus-pluginsession) Result code 
$var(res)\n");


  
_______________________________________________
Kamailio (SER) - Users Mailing List
[email protected]
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users

Reply via email to