这篇文章的目的是从专家那里获得有关该主题的想法。我希望我没有违反任何stackoverflow规则。如果是这样,请告诉我如何正确询问的方式。
我们现在拥有与一个PBX集成的软件(Web应用程序)。我们也希望将该集成扩展到Asterisk。我们当前设置的工作方式是我们从PBX到我们的Web应用程序获得关于PBX中几乎所有事件的实时http通知(扩展振铃,扩展应答呼叫,代理登录到呼叫中心等等)。我们希望用星号遵循相同的模式。
现在,阅读有关Asterisk的信息让我们陷入了两难境地。我们听到了不同的实施方式。即:
1。用AGI()做 - 所以,在拨号方案的不同关键点放置AGI,收集有关当前呼叫的信息并向我们的应用程序发送http请求。
2。使用AMI - 连接到TCP,听取所有内容,然后在接收器应用程序端(我们的Web应用程序)过滤您需要的内容
第3。用ARI 来做 - 我不知道有关这个的详细信息
我对每个问题都理解的问题/挑战是:
1。处理AGI() - 对于每次通话(甚至是DIALSTATUS_CHANGE)可能太多而且可能很快就会出现性能问题
2。 AMI - 没有任何'原生'多租户支持 - 没有简单的方法来进行任何类型的事件排队(如果接收器应用程序关闭,在一段时间后重新发送) - TCP连接到防火墙后面的潜在星号可能很麻烦
第3。 ARI - 没有我知道的细节
我们需要的解决方案的范围是:
我想听到的是你建议去哪一个以及关于原因的解释/讨论?
谢谢
答案 0 :(得分:1)
上面的选项是苹果和橘子 - 难以比较。正如你所指出的,Asterisk并不是租户意识到的。创建“多租户”的事件Asterisk包装器简单地将拨号方案分成了很好的部分,但Asterisk并不关心。因此,如果您想要Asterisk的状态/活动,则必须通过AMI。 (ARI并不遥远,但引入了其他复杂性)。
如果您需要将活动地图映射到租户,那么您会遇到单独的问题。
答案 1 :(得分:1)
创建星号时没有多重想法。它被创建为硬件pbx的SIMPLE替代品
因此星号上没有任何多租户功能,除非您使用dialplan和config自行完成。
此外,星号并非旨在为数千名用户提供服务。对于此类负载,您需要基于opensips / kamailio + opensips的结帐群集解决方案。
无论如何,如果你期望高度可扩展的解决方案,最好的选择是聘请asterisk专家,至少在架构阶段。否则,解决方案可以占用100个用户的所有服务器资源。
星号的大多数可扩展变体将是FastAGI外部程序,它可以触发事件和控制拨号方案+ AMI监听器,它可以激活AGI中无法使用的传输/其他事件。另外它在纯拨号方案+ AMI中是可行的,但在这种情况下需要关注http部分(如果它响应长可以是星号问题)