【问题标题】:PSTN to OpenSIPS to next SIP destinationPSTN 到 OpenSIPS 到下一个 SIP 目的地
【发布时间】:2019-07-18 21:02:06
【问题描述】:

我与 Asterisk 合作多年,但我对 OpenSIPS 很陌生。我需要的是让呼叫从我们的 DID 提供商进入 OpenSIPS 服务器,然后将它们重定向到另一个 SIP URI。

类似这样的:

DID Origination Provider -> OpenSIPS -> 下一个 SIP 服务器

基本上,我需要 OpenSIPS 服务器位于我的 DID 提供商和 Plivo 之间,它基本上是一个 Twilio 类型的服务。

我已经安装了 OpenSIPS 和控制面板 GUI。使用 GUI,我已成功设置从 DID 提供商到我已注册到 OpenSIPS 的任何 SIP 电话的呼叫,呼叫工作正常。

我需要花费大量时间学习 OpenSIPS 的路由逻辑等,我愿意这样做,但目前我正在尝试解决问题并希望有使用 OpenSIPS CP 的解决方案。如果没有,我希望有一个关于如何在配置文件中进行设置的示例。

感谢任何帮助,我已经在这方面工作了几天,搜索了 Google 和 Youtube,查看了教程,观看了视频,花时间阅读了这本书等。所以,不是因为缺乏努力。这显然是一个相当长的学习曲线,但我希望能得到一些帮助,以便早日完成这项特定任务。

再次感谢您的帮助。如果重要的话,在 Debian 8 上使用最新的 2.4 版本的 OpenSIPS。

【问题讨论】:

  • 我还应该提到,我基本上是在尝试接听来自我的任何 DID 提供商的 IP 地址的任何呼叫,并通过 sip URI 将其转发到下一个目的地。我需要做的唯一修改是将号码发送给我的方式(NPANXXXXXX)更改为(+1NPANXXXXXX)。

标签: sip kamailio opensips openser


【解决方案1】:

首先:通过 CP 无法做到这一点。 OpenSIPS CP 旨在在较低级别上工作,帮助您管理数据(用户、路由规则、路由目标、拨号规则规则、TLS 证书等)。任何将这些数据片段链接在一起的自定义、更高级别的逻辑都需要在 opensips.cfg 中编写脚本。

幸运的是,默认的opensips.cfg 已经涵盖了我们这里需要的 90%。因此,您应该删除这部分,而不是将呼叫路由给用户并直接转到 Plivo:

# do lookup with method filtering
if (!lookup("location","m")) {
    ...
}

...然后:

  1. 保留 Request-URI,但在执行 t_relay() 时将消息路由到 Plivo:
$du = "sip:your_plivo_ip:5060"; # set a "destination URI"
  1. 重写 SIP 消息的 Request-URI,所以它会在执行 t_relay() 时前往 Plivo:
$ru = "sip:your_plivo_ip:5060"; # rewrite the "Request-URI"

就是这样!默认脚本已经执行record_route(),确保代理保持在所有呼叫中请求的路径内。

【讨论】:

  • 感谢您提供的信息,我今天会尝试一下,让您知道它是怎么回事。说真的,很难从任何地方得到关于 OpenSIPS 的答案。人们似乎对他们在 IRC 或我发现的其他任何地方的信息都不太慷慨。
  • 我目前在我的 opensips.cfg 中没有 if (lookup("location")) {} 我确实有类似的东西 #do lookup with method filtering if (!lookup("location" "m")) { t_newtran(); t_reply("404", "未找到");出口; } 还在寻找
  • 这正是我建议的块。我已将答案编辑得更准确:)
猜你喜欢
  • 1970-01-01
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多