2

我正在使用 Pjsip 库进行 SIP 实现。使用 Pjsip lib 我可以完美地进行 IP 调用。我的问题是,当我拨打电话时,如果其他最终用户拒绝/无法接通或无人接听,我的电话将连接到语音邮件并从 sip 服务器获得 200k(呼叫连接状态),就像其他最终用户接听电话一样。
无法到达的情况下,我可以通过缺少 183 会话进度消息来区分 200 ok。但是没有应答和拒绝的情况下我无法得到实际的通话状态。
有什么方法可以找到呼叫连接状态和语音邮件连接状态?

4

1 回答 1

2

没有任何一种方式可以让用户代理知道它已经到达语音邮件服务器而不是一个人回答。

通常会发生的情况是,您的用户代理将向 From URI 发送 INVITE,并且负责该 URI 的某些代理会将 INVITE 分叉到远程方使用的各种用户代理:她的电话、她的语音邮件服务等。第一个返回 2xx 响应的用户代理建立调用。

Contact但是,您将始终在 200 OK 的标题中知道您已连接到哪个用户代理。

据推测,语音邮件服务器将在其 SDP 提供/回答中表明,当它接受某些传入的媒体流时,它不会发送任何内容,通过使用a=recvonly属性标记流(参见RFC 3264)。

于 2012-12-21T11:41:09.277 回答