【问题标题】:sip: to dial additional number after 200 oksip: 200 ok 后拨打附加号码
【发布时间】:2015-01-16 13:42:43
【问题描述】:

我想借助 SIP 协议实现以下场景:

  • 我拨打12345678990
  • 电话被拿起(--> 200 ok 收到并发送 ACK 返回)
  • 我拨打分机号23456#

我已经用 jain 实现了第一部分和第二部分。如何实现第三个?

我尝试了什么:

  • 我将 telURL 属性 postDial 设置为 23456# 但在这种情况下,我无法通过代理授权并拨打电话

  • 我厌倦了将这两个部分写成一个带有分隔符 * 和 # 且根本没有分隔符的数字。

我还能做什么?

UPD:我发现了

  • 出现问题是因为 sambol #

  • 带有符号 # 代理身份验证。响应已发送但未处理。至少我没有看到 pocessResponce() 方法正在工作的日志消息。

【问题讨论】:

  • 你必须弄清楚如何与第三者进行身份验证。您需要用户/密码、身份验证方法、一些 ip 规则等,然后您才能编写一些代码使其工作。答案完全是与远程机器协调。
  • 问题是:在收到“200 ok”后,我如何在技术上实现拨打 23456#。我需要另一个 INVITE 还是我可以设置一个特殊属性或什么?
  • 是的,您需要一个新的 INVITE,其号码设置在 To 标头中(通常),但是如何正确拨号又取决于第三方,一些提供商将使用 tel uri,其他sip url 带有一些领域或完全自定义的东西。
  • 我认为 postDial 参数应该用于这样的目的:“邮政拨号 - 电话号码也可以包含拨号后序列。这通常用于语音邮箱和其他受控制的服务在通话过程中通过电话键盘拨打号码。”
  • 这取决于远程方,他们接受哪种方法。他们可能只支持 DTMF 或自定义的东西。唯一可靠的方法是像用户拨号一样模拟它。所有其他快捷方式都取决于提供者。你应该和他们谈谈。

标签: java sip telephony jain-sip


【解决方案1】:

出于这些目的,我只使用了 SIP INFO 消息:每条消息对应一个符号“23456#”-string。

【讨论】:

    【解决方案2】:

    从协议的角度来看,呼叫建立后您不能拨号

    但您可以发送 DTMF,以便被您正在通信的任何 UAS(例如 MRF 或语音邮件系统)检测/解析。

    有不同的方式来传输 DMTF。

    1. 一种方法是使用 INFO,如RFC2976 中所述的已接受答案中所示
    2. 另一种方法是在 RTP RFC4733 中使用 DMTF 编码 [我想说这是最常见的,因为这是端到端的,不需要遍历代理]
    3. 最后,DMTF 音调可以简单地在带内传输。但是,对于某些编解码器,这可能会出现问题。

    使用什么取决于您的 UAC 和您正在与之交谈的 UAS 或您已协商的 SDP 的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      相关资源
      最近更新 更多