SIP在会话进行期间发送数据



我有一个SIP门系统。我已经开发了注册和拨打电话的代码。

一旦我发出INVITE,我会立即获得会话进度,现在我需要在会话期间发送一个数字字符代码。

我正在使用Jain SIP进行开发。

要发送DTMF/按键,有一些不同的选项:另一端可能期望电话事件RFC 4733,或者只是发送DTMF(不太可能,因为压缩语音多次使DTMF识别困难)。

现在的问题是,传统上,虽然可以立即接收通信(例如,听铃声或不收费的公告),但双向通信只有在回答后(在SIP中翻译为200 OK后)才可能。

在您的情况下,另一端、您使用的终端或提供商可能会强制执行该限制。

如果没有,那么你可以使用早期媒体(你可以查看RFC 3960进行全面讨论。

基本上,接收端可以在18x临时响应(例如183呼叫进度)上发送SDP应答。交换后,主叫和被叫可以启动通信(并且可以是双向的)。

有两种可能性:

  1. 调用和被调用支持临时可靠响应(请参阅RFC 3262。在这种情况下,通过PRACK来完成协商。协商的媒体可以在200 OK之前使用UPDATE请求进行修改。

  2. 呼叫或被叫不支持临时可靠响应。SDP应答仍然可以包含在18x中,但在应答之前不能更改,并且200 OK必须携带完全相同的SDP应答。

最新更新