2014-03-28 36 views
0

我使用pjsua Python模塊,我不知道如何創建一個自定義消息象下面這樣:Python pjsua - 如何創建自定義消息?

mY'[email protected]@b,%+&KEEPALIVE sip:[email protected] SIP/2.0 
Via: SIP/2.0/UDP 192.168.0.10;rport;branch=z9hG4bKPjgdQdo8azxxwRZ9aCVJy5Wdr27fTgDBUy 
Max-Forwards: 70 
From: <sip:[email protected]>;tag=w0na7ZUHDVaB8QG38EGdH5f23W3fzKL6 
To: <sip:[email protected]> 
Contact: <sip:[email protected]> 
Call-ID: -TtcAtmNnJM5uteQDgMmddoWx7IM1fDP 
CSeq: 1 KEEPALIVE 
Applier-ID: 24598 
Expires: 2147483647 
User-Agent: PU/1.0.0 
Content-Length: 0 

觀測數據:服務器和客戶端都在同一臺PC。

存在任何方式來做到這一點?謝謝。

+0

這是什麼KEEPALIVE消息?它是否在任何標準中定義? – yotommy

+0

不,服務器應用程序獲取此自定義KEEPALIVE以瞭解客戶端是否還活着。我無法改變這個標準,因爲它是一箇舊的遺留系統。 –

回答

1

我還沒有嘗試過這一點,但您可以通過使用py_pjsua模塊要做到這一點:

http://trac.pjsip.org/repos/wiki/Py_PJSUA

pjsua_call_send_request:發送與呼叫任意請求。 這對於例如發送INFO請求很有用。請注意, 應用程序不應該使用此函數發送請求,其中 會更改邀請會話的狀態,例如re-INVITE,UPDATE, PRACK和BYE。

A message on the PJSIP mailing list解決了類似的情況,並且指示on_call_tsx_state()回調函數可用於監視響應。

這似乎符合您的要求,因爲我認爲KEEPALIVE不會更改會話狀態。請參閱documentation here

+0

謝謝,但我認爲函數send_request將使用「Cseq:」數字「信息」,我不能改變信息的另一個字,但我會測試,再次感謝你。 –

+0

我期望pjsua_call_send_request(標記爲「method」)的第二個參數的內容正確地影響CSeq,但我沒有嘗試過。 – yotommy

+0

謝謝yotommy,我可以使用發送「KEEPALIVE」的方法,謝謝。 –