星号传入消息给出:415不支持的媒体类型

时间:2015-10-16 11:42:22

标签: asterisk sip http-status-code-415

我和我的项目组正在尝试设置带星号的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尚未支持的媒体类型吗?

2 个答案:

答案 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)。

相关问题