实时事件 Asterisk 集成
Realtime-events Asterisk integration
此 post 的目的是征求专家对该主题的看法。我希望我没有违反任何计算器规则。如果有,请教教我如何正确提问。
我们目前拥有与一台 PBX 集成的软件(Web 应用程序)。我们也想将该集成扩展到 Asterisk。我们当前设置的工作方式是,我们从 PBX 获得实时 http 通知到我们的 Web 应用程序,了解 PBX 中发生的几乎所有事情(分机响铃、分机接听电话、座席登录呼叫中心等)。我们很乐意遵循带有星号的相同模式。
现在,阅读有关 Asterisk 的文章让我们陷入了困境。我们听到了不同的实施方式。即:
1.用 AGI() 做
- 因此,在拨号方案的不同关键点放置 AGI,它将收集有关当前呼叫的信息并向我们的应用程序发送 http 请求。
2。使用 AMI
- 连接到 TCP,收听所有内容,然后在接收方应用程序端(我们的网络应用程序)过滤您需要的内容
3。用 ARI 做
- 我不知道这个的细节
Problems/challanges 我理解的每一个是:
1.处理 AGI()
- 每次调用(甚至 DIALSTATUS_CHANGE)可能太多并且可能很快成为性能问题
2。 AMI
- 没有任何 'native' 多租户支持
- 没有简单的方法来进行任何类型的事件排队(如果接收器应用程序关闭,一段时间后重新发送)
- 连接到潜在的防火墙后星号的 TCP 可能很麻烦
3。阿里
- 没有我知道的细节
我们需要的解决方案范围是:
- 具有数百个租户的多租户解决方案,每个租户可能有数百个用户(例如,最多 300-400 个)。我知道这需要扩展,但目前我只想查看一台服务器的选项以及在一台服务器范围内执行此操作的最佳方法
- 可靠的实时事件进入我们的网络应用程序
- 最好是 http 通知,最不喜欢 tcp(包括 websockets)
我想听听的是你建议去哪一个以及 explanation/discussion 的原因?
谢谢
你上面的选择是苹果和橘子 - 很难比较。正如您所指出的,Asterisk 不了解租户。创建 'multi-tenant' 的事件 Asterisk 包装器只是简单地将拨号方案拆分为适合您的部分,但 Asterisk 并不关心。因此,如果您想要 Asterisk 的 state/activity,则必须通过 AMI。 (ARI 并不遥远,但引入了其他复杂性)。
如果您需要将活动映射到租户,那么您有一个单独的 issue/question。
创建asterisk的时候没有multitennt的想法。它被创建为硬件 pbx
的简单替代品
所以在 asterisk 上没有任何多租户特性,除非你自己使用拨号计划和配置。
另外,asterisk 并不是为成千上万的用户设计的。对于这样的负载,您需要基于 opensips/kamailio+opensips.
的结帐集群解决方案
无论如何,如果您期望高度可扩展的解决方案,最好的选择是至少在架构阶段聘请 asterisk 专家。否则解决方案可以占用 100 个用户的服务器的所有资源。
asterisk 最具可扩展性的变体将是 FastAGI 外部程序,它触发事件并控制拨号方案 + AMI 侦听器,它触发 transfers/other 在 AGI 中可用的事件。也可以在纯拨号方案+AMI 中执行,但在那种情况下需要注意 http 部分(如果它响应长可能是星号的问题)
此 post 的目的是征求专家对该主题的看法。我希望我没有违反任何计算器规则。如果有,请教教我如何正确提问。
我们目前拥有与一台 PBX 集成的软件(Web 应用程序)。我们也想将该集成扩展到 Asterisk。我们当前设置的工作方式是,我们从 PBX 获得实时 http 通知到我们的 Web 应用程序,了解 PBX 中发生的几乎所有事情(分机响铃、分机接听电话、座席登录呼叫中心等)。我们很乐意遵循带有星号的相同模式。
现在,阅读有关 Asterisk 的文章让我们陷入了困境。我们听到了不同的实施方式。即:
1.用 AGI() 做 - 因此,在拨号方案的不同关键点放置 AGI,它将收集有关当前呼叫的信息并向我们的应用程序发送 http 请求。
2。使用 AMI - 连接到 TCP,收听所有内容,然后在接收方应用程序端(我们的网络应用程序)过滤您需要的内容
3。用 ARI 做 - 我不知道这个的细节
Problems/challanges 我理解的每一个是:
1.处理 AGI() - 每次调用(甚至 DIALSTATUS_CHANGE)可能太多并且可能很快成为性能问题
2。 AMI - 没有任何 'native' 多租户支持 - 没有简单的方法来进行任何类型的事件排队(如果接收器应用程序关闭,一段时间后重新发送) - 连接到潜在的防火墙后星号的 TCP 可能很麻烦
3。阿里 - 没有我知道的细节
我们需要的解决方案范围是:
- 具有数百个租户的多租户解决方案,每个租户可能有数百个用户(例如,最多 300-400 个)。我知道这需要扩展,但目前我只想查看一台服务器的选项以及在一台服务器范围内执行此操作的最佳方法
- 可靠的实时事件进入我们的网络应用程序
- 最好是 http 通知,最不喜欢 tcp(包括 websockets)
我想听听的是你建议去哪一个以及 explanation/discussion 的原因?
谢谢
你上面的选择是苹果和橘子 - 很难比较。正如您所指出的,Asterisk 不了解租户。创建 'multi-tenant' 的事件 Asterisk 包装器只是简单地将拨号方案拆分为适合您的部分,但 Asterisk 并不关心。因此,如果您想要 Asterisk 的 state/activity,则必须通过 AMI。 (ARI 并不遥远,但引入了其他复杂性)。
如果您需要将活动映射到租户,那么您有一个单独的 issue/question。
创建asterisk的时候没有multitennt的想法。它被创建为硬件 pbx
的简单替代品所以在 asterisk 上没有任何多租户特性,除非你自己使用拨号计划和配置。
另外,asterisk 并不是为成千上万的用户设计的。对于这样的负载,您需要基于 opensips/kamailio+opensips.
的结帐集群解决方案无论如何,如果您期望高度可扩展的解决方案,最好的选择是至少在架构阶段聘请 asterisk 专家。否则解决方案可以占用 100 个用户的服务器的所有资源。
asterisk 最具可扩展性的变体将是 FastAGI 外部程序,它触发事件并控制拨号方案 + AMI 侦听器,它触发 transfers/other 在 AGI 中可用的事件。也可以在纯拨号方案+AMI 中执行,但在那种情况下需要注意 http 部分(如果它响应长可能是星号的问题)