我和我的项目组正在尝试设置带有星号的 PBX。我们已经设法让它仅适用于 SIP 呼叫,而且效果非常完美。
但是一旦我们想尝试向其中添加 XML 消息,Asterisk 就无法识别它并给出“415 不支持的媒体类型”。看起来这个电话甚至没有打通,就立即被拒绝了。
我们试图找到处理此问题的代码段,但没有找到任何内容。
发送到 Asterisk 的 SIP 消息如下所示:
Request-Line: MESSAGE sip:[email protected] /cdn-cgi/l/email-protection SIP/2.0
Method: MESSAGE
Request-URI: sip:[email protected] /cdn-cgi/l/email-protection
Via: SIP/2.0/UDP xxx.xxx.xxx.111:5060;branch=z9hG4bK-3f138a53
To: <sip:[email protected] /cdn-cgi/l/email-protection>
From: <sip:[email protected] /cdn-cgi/l/email-protection>;tag=7a82b127
Call-ID: [email protected] /cdn-cgi/l/email-protection
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
我们的问题是:
在代码或配置文件中,我们可以在哪里找到星号决定是否支持“媒体类型”的地方?
Or
有人知道如何添加 Asterisk 尚不支持的媒体类型吗?
消息接受的内容类型似乎是硬编码的,因此您无法在配置文件中执行此操作。如果您查看 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 不支持的媒体类型错误,并且您可以修改 receive_message() 函数的其余部分以满足您的需要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)