respond to received SIP INFOs with a customized 200-OK
We're looking for a way to modify content-body of 200 OK message(CSeq INFO), insert XML content into its body. Purpose: FreeSWITCH to handle INFO interactions based on RFC5707: Media Server Markup Language (MSML) https://tools.ietf.org/html/rfc5707
INFO message sent by UAC carries XML content. UAS(FreeSWITCH) tries to parse the XML content on INFO message. 200 OK message should contain XML body in order to notify UAC with the structured "response codes" and "failed reason descriptions" by the INFO message.
Current behavior: FreeSWITCH reply back to all INFO messages with 200 OK automatically, without carrying any content body on it(content-length=0) nua.c:879 nua_respond() nua: nua_respond: entering nua_stack.c:529 nua_signal() nua(0x7fcf0c009d70): sent signal r_respond nua.c:366 nua_handle_magic() nua: nua_handle_magic: entering nua_stack.c:573 nua_stack_signal() nua(0x7fcf0c009d70): recv signal r_respond 200 OK nua_params.c:485 nua_stack_set_params() nua: nua_stack_set_params: entering soa.c:403 soa_set_params() soa_set_params(static::0x7fcf0c00a600, ...) called tport.c:3257 tport_tsend() tport_tsend(0x7fcf0c004700) tpn = UDP/x.x.x.x:5060 tport.c:4046 tport_resolve() tport_resolve addrinfo = x.x.x.x:5060 tport.c:4680 tport_by_addrinfo() tport_by_addrinfo(0x7fcf0c004700): not found by name UDP/x.x.x.x:5060 tport.c:3594 tport_vsend() tport_vsend(0x7fcf0c004700): 544 bytes of 544 to udp/x.x.x.x:5060 tport.c:3492 tport_send_msg() tport_vsend returned 544 nta.c:6791 incoming_reply() nta: sent 200 OK for INFO (2) 06:12:20.678673 IP (tos 0x0, ttl 64, id 22618, offset 0, flags [none], proto UDP (17), length 572) 192.168.89.162.sip > 192.168.89.45.sip: SIP, length: 544 SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.89.45:5060;branch=z9hG4bK-d8754z-8b0c4e23b5df6b68-1---d8754z-;rport=5060 From: <sip:192.168.89.45:5060>;tag=098fbe06e806d500 To: <sip:192.168.89.162:5060>;tag=tgX42HcKaeSma Call-ID: ZTM5MzMwYTI3NzA1ZDkxOGQ2MGZlYjcyYzNlZGUzMjY.e806d500@165.254.89.45 CSeq: 2 INFO User-Agent: FreeSWITCH Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY Supported: timer, path, replaces Content-Length: 0 Expected behavior: when receiving INFO, be able to customize its content body on 200-OK response message. either by setting channel variables or optionally treat this 200OK as FreeSWITCH event A sample 200 OK message: SIP/2.0 200 OK Call‐ID: 36C7E305@10.10.0.16:15062 CSeq: 324630703 INFO From: <sip:user@10.10.0.16:15062> ;tag=10.10.0.1615062+1+1090000+fa0329b5 To: <sip:msml@10.14.9.13:5060>;tag=10.14.9.135060+1+1060000+81d0b080 Via: SIP/2.0/UDP 10.10.0.16:15062 ;branch=z9hG4bK+fdebd5691fe0202fc7d685d1e1138955+10.10.0.1615062+1 Server: DC‐SIP/2.0 Supported: precondition Supported: timer Supported: 100rel Accept: application/sdp, text/*, application/msml+xml, application/moml+xml Content‐Length: 220 Content‐Type: application/msml+xml Contact: <sip:msml@10.14.9.13:5060> <?xml version="1.0" encoding="US‐ASCII"?> <msml version="1.1"> <result response="200"> <auditresult targetid="conf:conf04010105a"> <confconfig deletewhen="nocontrol" term="true"/> </auditresult> </result> </msml> -- Sent from: http://freeswitch-users.2379917.n2.nabble.com/
I dont think we have any way to add a body to a response to info currently exposed, it would take some code to expose such a thing.
On Aug 23, 2018, at 8:00 PM, Elliot <304060611@qq.com> wrote:
We're looking for a way to modify content-body of 200 OK message(CSeq INFO), insert XML content into its body.
Purpose: FreeSWITCH to handle INFO interactions based on RFC5707: Media Server Markup Language (MSML) https://tools.ietf.org/html/rfc5707
INFO message sent by UAC carries XML content. UAS(FreeSWITCH) tries to parse the XML content on INFO message. 200 OK message should contain XML body in order to notify UAC with the structured "response codes" and "failed reason descriptions" by the INFO message.
Current behavior: FreeSWITCH reply back to all INFO messages with 200 OK automatically, without carrying any content body on it(content-length=0)
nua.c:879 nua_respond() nua: nua_respond: entering nua_stack.c:529 nua_signal() nua(0x7fcf0c009d70): sent signal r_respond nua.c:366 nua_handle_magic() nua: nua_handle_magic: entering nua_stack.c:573 nua_stack_signal() nua(0x7fcf0c009d70): recv signal r_respond 200 OK nua_params.c:485 nua_stack_set_params() nua: nua_stack_set_params: entering soa.c:403 soa_set_params() soa_set_params(static::0x7fcf0c00a600, ...) called tport.c:3257 tport_tsend() tport_tsend(0x7fcf0c004700) tpn = UDP/x.x.x.x:5060 tport.c:4046 tport_resolve() tport_resolve addrinfo = x.x.x.x:5060 tport.c:4680 tport_by_addrinfo() tport_by_addrinfo(0x7fcf0c004700): not found by name UDP/x.x.x.x:5060 tport.c:3594 tport_vsend() tport_vsend(0x7fcf0c004700): 544 bytes of 544 to udp/x.x.x.x:5060 tport.c:3492 tport_send_msg() tport_vsend returned 544 nta.c:6791 incoming_reply() nta: sent 200 OK for INFO (2) 06:12:20.678673 IP (tos 0x0, ttl 64, id 22618, offset 0, flags [none], proto UDP (17), length 572) 192.168.89.162.sip > 192.168.89.45.sip: SIP, length: 544 SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.89.45:5060;branch=z9hG4bK-d8754z-8b0c4e23b5df6b68-1---d8754z-;rport=5060 From: <sip:192.168.89.45:5060>;tag=098fbe06e806d500 To: <sip:192.168.89.162:5060>;tag=tgX42HcKaeSma Call-ID: ZTM5MzMwYTI3NzA1ZDkxOGQ2MGZlYjcyYzNlZGUzMjY.e806d500@165.254.89.45 CSeq: 2 INFO User-Agent: FreeSWITCH Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY Supported: timer, path, replaces Content-Length: 0
Expected behavior: when receiving INFO, be able to customize its content body on 200-OK response message. either by setting channel variables or optionally treat this 200OK as FreeSWITCH event
A sample 200 OK message: SIP/2.0 200 OK Call‐ID: 36C7E305@10.10.0.16:15062 CSeq: 324630703 INFO From: <sip:user@10.10.0.16:15062> ;tag=10.10.0.1615062+1+1090000+fa0329b5 To: <sip:msml@10.14.9.13:5060>;tag=10.14.9.135060+1+1060000+81d0b080 Via: SIP/2.0/UDP 10.10.0.16:15062 ;branch=z9hG4bK+fdebd5691fe0202fc7d685d1e1138955+10.10.0.1615062+1 Server: DC‐SIP/2.0 Supported: precondition Supported: timer Supported: 100rel Accept: application/sdp, text/*, application/msml+xml, application/moml+xml Content‐Length: 220 Content‐Type: application/msml+xml Contact: <sip:msml@10.14.9.13:5060> <?xml version="1.0" encoding="US‐ASCII"?> <msml version="1.1"> <result response="200"> <auditresult targetid="conf:conf04010105a"> <confconfig deletewhen="nocontrol" term="true"/> </auditresult> </result> </msml>
participants (2)
-
Elliot
-
Michael Jerris