2012-05-22 59 views
3

當使用標準的Android SIP演示與星號1.8.9.2服務器結合使用時,我遇到了一個奇怪的問題:傳入/傳出呼叫工作正常,但有一件事不是工作:當我從SIP演示中發起呼叫並再次關閉呼叫時(點擊「結束當前呼叫」按鈕),該呼叫在SIP演示中終止,但被叫設備仍保持振鈴狀態。來自Android SIP演示的CANCEL請求被Asterisk 1.8忽略了

我試圖檢查什麼的登錄通過Wireshark的電報發生,它似乎從SIP演示,以星號服務器取消電報是不能接受的,我們來看一看:

300 08:30:39.483913 130.10.0.102 192.168.0.110 SIP/SDP 916 Request: INVITE sip:[email protected]:5060, with session description 
301 08:30:39.488686 192.168.0.110 130.10.0.102 SIP 525 Status: 100 Trying 
302 08:30:39.524884 192.168.0.110 130.10.0.102 SIP 541 Status: 180 Ringing 
309 08:30:41.041071 130.10.0.102 192.168.0.110 SIP 370 Request: CANCEL sip:[email protected]:5060 
310 08:30:41.051545 192.168.0.110 130.10.0.102 SIP 526 Status: 481 Call/Transaction Does Not Exist 

而且現在的真正奇怪的事情:如果我重複同樣的行動,並在通過「結束當前通話」按鈕終止通話之前,我等待ca。 7秒,將取消被接受,呼叫正常終止:

646 08:31:05.571464 130.10.0.102 192.168.0.110 SIP/SDP 916 Request: INVITE sip:[email protected]:5060, with session description 
647 08:31:05.576150 192.168.0.110 130.10.0.102 SIP 525 Status: 100 Trying 
648 08:31:05.662345 192.168.0.110 130.10.0.102 SIP 541 Status: 180 Ringing 
664 08:31:08.302561 130.10.0.102 192.168.0.110 SIP 389 Request: OPTIONS sip:192.168.0.110 
665 08:31:08.312097 192.168.0.110 130.10.0.102 SIP 528 Status: 404 Not Found 
698 08:31:13.370346 130.10.0.102 192.168.0.110 SIP 370 Request: CANCEL sip:[email protected]:5060 
699 08:31:13.373570 192.168.0.110 130.10.0.102 SIP 513 Status: 487 Request Terminated 
700 08:31:13.373912 192.168.0.110 130.10.0.102 SIP 497 Status: 200 OK 

我已經檢查的兩個CANCEL請求的內容,結構是完全一樣的! 此外,我還測試了一個帶有星號1.6的服務器,在那裏我沒有遇到這個問題,通話在那裏正確終止!所以它讓我相信它必須用星號來做點什麼。 1.8。

有沒有人遇到類似的問題,併爲我提供了一些有用的提示?如果需要進一步的數據分析,請告訴我! 感謝您的幫助, BR

阿明

回答

4

我正面臨着與Asterisk 1.8.11.0和Android 2.3/4.0.3完全相同的問題。 在sip.conf文件的「常規」部分下有一個簡單的解決方案 添加以下屬性,其值等於no。

[general] 
. 
. 
pedantic=no 

我希望它也能夠爲您服務.....

+0

嗨,感謝您的反饋,我會在下週嘗試一下並讓您知道! – DC84

+1

Loooong時間沒有反饋,很抱歉,但我被其他東西佔用!我現在已經完成了測試,它對我來說也很棒!非常感謝您的信息! – DC84

0

的SIP演示只是一個演示:)它可能無法正確地處理所有的情況。它是否與'真正的'SIP客戶端一起工作?使用您最喜愛的軟電話應用程序來驗證。對於Android,您可以嘗試使用SIPDroid。如果確實如此,SIP演示中缺少一些東西,如果沒有,可能是Asterisk配置存在問題。

+0

您好,感謝您的回覆。我已經用SIPDroid進行了測試,並且沒有顯示出問題。我瞭解SIP Demo只是一個演示,但它使用標準的Android SIP堆棧,目前我也用於我的個人應用程序。而且我在這兩個應用程序中都有問題,所以我想這是Android SIP堆棧的問題......可能是這樣嗎? – DC84

+0

這是可能的。比較來自SIPDroid和SIP Demo的數據包捕獲,並且可能會給出一些關於問題出在哪裏的提示。 Asterisk很可能已經有了一些參數/開關來處理這個問題,但你必須首先確定問題。檢查所有標題等等的差異。 –

+0

我按照你所說的完成了工作,但是真誠地看不到CANCEL處理的方式有什麼不同...... SIPDroid發送相同的數據包......包含的消息的順序稍有不同,但我沒有認爲它會引起麻煩。正如我在主要職位中所說的,在工作和非工作的結構/內容上也沒有區別CANCEL ...你有任何其他提示嗎? – DC84

0

不幸的是,SIPDroid使用另一個SIP堆棧,然後薑餅已經原生安裝。這就是爲什麼你不會忽略忽略那裏的CANCEL方法。我正在玩android sip stack與AVSystem TR-069 ACS服務器進行樣例整合,並有同樣的觀察。不知道是否有任何解決方案。跟蹤進度:http://avsystem.com

+0

嗨,亞歷克斯,謝謝你的回覆,不幸的是我仍在爲這個問題而戰。我知道SipDroid有他自己的SIP堆棧,但由於許可原因,我無法將其用於我的項目......目前我只是以一種糟糕的方式處理它,阻止了ca. 7秒;經過這段時間後,CANCEL總是被接受。 – DC84