2015-10-16 28 views
3

我和我的項目組正試圖設置帶有星號的PBX。我們已經設法讓它只使用SIP呼叫,而且工作完美。 但是,一旦我們想嘗試添加XML消息,Asterisk無法識別它,並給出「415 Unsupported Media Type」。看起來這個電話甚至沒有通過它立即被拒絕。星號傳入消息給出:415不支持的媒體類型

我們試圖找到這段代碼被處理但沒有發現任何東西的地方。

即發送到Asterisk的SIP消息是這樣的:

Request-Line: MESSAGE sip:[email protected] SIP/2.0 
    Method: MESSAGE 
    Request-URI: sip:[email protected] 
    Via: SIP/2.0/UDP xxx.xxx.xxx.111:5060;branch=z9hG4bK-3f138a53 
    To: <sip:[email protected]> 
    From: <sip:[email protected]>;tag=7a82b127 
    Call-ID: [email protected] 
    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 

我們的問題(S)是/是: 在代碼或配置文件,我們可以發現,其中星號決定,這是否是「媒體類型「是否支持?

或者

是否有人知道如何用星號來添加不支持(還)媒體類型?

+0

你使用chan_sip還是PJSIP堆棧? –

+0

@MattJordan我們正在使用chan_sip,但我們無法找到它確切的時間,它是什麼時候它是一個不受支持的媒體類型 –

回答

1

它看起來像一個消息接受的內容類型是硬編碼的,所以你將無法在配置文件中做到這一點。如果你看一下在渠道的功能RECEIVE_MESSAGE()\ chan_sip.c,你將看到以下行:

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()中,也允許「應用/ scaip + XML」,並重新編譯,它將不再響應415 Unsupported Media Type錯誤,並且可以修改receive_message()函數的其餘部分以滿足您的需要。

+0

謝謝,這確實是我們正在尋找的答案! –

+0

很高興我能幫到你! – snowcloned

0

您可以使用「text/plain」作爲Content-Type,並通過自動檢測它來處理應用程序中的scaip + xml(例如,如果消息開始,那麼您可以知道它是scaip xml)。

+0

是的,如果這是對我們的應用程序的調用,我們可以翻譯它。但是,呼叫在PBX服務器上停止,因爲它會給出不支持的媒體類型的錯誤。但是我們已經解決了這個問題,但是感謝您的幫助。 –

+0

啊,我在想,發送這種請求的應用程序也是你的。 – Istvan

相關問題