2011-04-05 83 views
1

我正在構建一個語音應用程序,當我的應用程序嘗試設置出站呼叫時,需要長時間振鈴。在此期間,呼叫必須保持無人接聽。如何從CCXML發送182隊列SIP消息?

我正在使用基於SIP的Genesys GVP 8.1 IVR連接到媒體網關。

我遇到的問題是因爲該呼叫未被回答,30秒後超時。我需要向媒體網關發送某種保持活動的消息,以表示該通話仍在進行中。

我已經使用這個嘗試:

<send target="inConnectionID" targettype="'x-connection'" data="'connection.progressing'"/> 

,這將產生一個180響鈴......但我已經發出了180振鈴消息,我認爲SIP服務器不傳給這個因爲它已經處理了一條180條消息,所以停止了網絡。

理想情況下,我想嘗試發送182 Queued消息,但是我無法在CCXML或擴展GVP CCXML文檔中找到任何內容來說明如何執行此操作。

我的Wireshark的SIP跟蹤看起來是這樣的:

Wireshark

你可以看到第二個180在24秒振鈴沒有被傳遞到媒體網關。

如何讓GVP/CCXML發送182隊列SIP消息?

+0

我會建議看看爲什麼媒體服務器在24s後取消呼叫。這是一個非常小的超時,並且很可能是可以配置的東西。我懷疑向媒體服務器發送另一個18x響應會阻止它取消。 – sipwiz 2011-04-05 20:57:42

回答

1

服務器應該轉發你的180,儘管沒有 - 但它應該是因爲它和媒體服務器之間可能會丟失前180個(儘管服務器可能會重新發送INVITE)。

但是,如sipwiz所示,可能的問題是媒體服務器配置的最大超時時間以接受呼叫。 182不太可能有幫助(雖然沒有理解媒體服務器,但很難確定)。

此外,您應該每隔大約1分鐘重新發送180(並且SIP服務器應該通過它),以避免規範允許的3分鐘超時。一些SIP堆棧如eXosip默認會在沒有1xx響應的情況下經過3分鐘時超時INVITE。

1

我同意媒體網關不應該在34.7取消。我還認爲SIP Server應該在發送leg2的出站邀請之前發送一個100嘗試返回的leg1。這將停止來自leg1 UAC的任何重傳,並在媒體網關正在使用SRV翻轉算法時阻止任何故障轉移。