我和我的项目组正在尝试设置带星号的PBX。我们设法让它只使用SIP呼叫,这是完美的。 但是,一旦我们想尝试向其添加XML消息,Asterisk就不会识别它并给出“415 Unsupported Media Type”。看起来这个电话甚至没有通过,它会立即遭到拒绝。
我们已经尝试找到处理此代码但未找到任何内容的代码段。
发送到Asterisk的SIP消息如下所示:
Request-Line: MESSAGE sip:701@xxx.xxx.xxx.109 SIP/2.0
Method: MESSAGE
Request-URI: sip:701@xxx.xxx.xxx.109
Via: SIP/2.0/UDP xxx.xxx.xxx.111:5060;branch=z9hG4bK-3f138a53
To: <sip:701@xxx.xxx.xxx.109>
From: <sip:702@xxx.xxx.xxx.111>;tag=7a82b127
Call-ID: 54634d4f2e@xxx.xxx.xxx.111
CSeq: 104 MESSAGE
Max-Forwards: 70
User-Agent: CareIP 7813409 v1.2.4.0
Content-Type: application/scaip+xml
Content-Length: 91
Message Body
<mrq><ref>765745670002</ref<mty>ME</mty><cid>266786</cid><dty>0005</dty><stc>0010</stc></mrq
我们的问题是: 在代码或配置文件中我们可以找到星号决定是否支持“媒体类型”的地方?
或者
有人知道如何添加Asterisk尚未支持的媒体类型吗?
答案 0 :(得分:1)
看起来消息的接受内容类型是硬编码的,因此您无法在配置文件中执行此操作。如果你查看channels \ chan_sip.c中的函数receive_message(),你会看到以下几行:
if (strncmp(content_type, "text/plain", strlen("text/plain"))) { /* No text/plain attachment */
transmit_response(p, "415 Unsupported Media Type", req); /* Good enough, or? */
如果你修改strncmp()也允许“application / scaip + xml”并重新编译,它将不再响应415 Unsupported Media Type错误,你可以修改receive_message()函数的其余部分以适应你的需求。
答案 1 :(得分:0)
您可以只使用“text / plain”作为Content-Type,并通过自动检测它来处理应用程序中的scaip + xml(例如,如果消息开头,那么您可以知道它是scaip xml)。