如何从Asterisk REST API(ARI)获取所有拨号程序事件?
我正在制作一个web应用程序,它应该能够监视我的Asterisk服务器上的调用。我可以通过URL如何从Asterisk REST API(ARI)获取所有拨号程序事件?,asterisk,voip,asteriskami,Asterisk,Voip,Asteriskami,我正在制作一个web应用程序,它应该能够监视我的Asterisk服务器上的调用。我可以通过URLws://(主机):8088/ARI/events?app=dialer上的Javascript WebSocket连接到ARI,并且可以正常工作。问题是我只从通过ARI进行的调用中获取事件。来自其他客户端(如Zoiper)的呼叫未注册。另一方面,Asterisk有一个AJAM,它在http://(主机):8088/rawman?action=waitevent上使用长轮询,并注册来自所有客户端(AR
ws://(主机):8088/ARI/events?app=dialer
上的Javascript WebSocket连接到ARI,并且可以正常工作。问题是我只从通过ARI进行的调用中获取事件。来自其他客户端(如Zoiper)的呼叫未注册。另一方面,Asterisk有一个AJAM,它在http://(主机):8088/rawman?action=waitevent上使用长轮询,并注册来自所有客户端(ARI、Zoiper和其他)的呼叫,但只有信息谁在呼叫(呼叫者),而不是谁在呼叫(被呼叫者)
所以,我的问题是,如何从所有客户(最好是使用WebSocket)获取显示谁在呼叫谁的实时呼叫事件。谢谢。ARI使用基于订阅的活动模型。从以下文件中引用: 默认情况下,星号中的资源不会向连接的ARI应用程序发送有关其自身的事件。要获取有关资源的事件,必须发生以下三种情况之一:
POST https://localhost:8080/ari/applications/my_app/subscription?eventSource=endpoint:PJSIP%2FAlice
请注意,对端点的订阅隐式地向您订阅为该端点创建的所有通道。如果要订阅特定技术的所有端点,还可以订阅资源本身:
POST https://localhost:8080/ari/applications/my_app/subscription?eventSource=endpoint:PJSIP
为了更清楚地了解Matt Jordan已经提供的内容,以下是一个他建议的示例: ws://(主机):8088/ari/events?app=dialer&subscibeAll=true 添加SubscribeAll=true实现您想要的=)可能会对某人有所帮助: 订阅通道、网桥和端点上的所有事件
POST http://localhost:8088/ari/applications/appName/subscription?api_key=user:password&eventSource=channel:,bridge:,endpoint:
退订
DELETE http://localhost:8088/ari/applications/appName/subscription?api_key=user:password&eventSource=channel:__AST_CHANNEL_ALL_TOPIC,bridge:__AST_BRIDGE_ALL_TOPIC,endpoint:__AST_ENDPOINT_ALL_TOPIC
我订阅了PJSIP,现在它出现在该应用程序的“endpoint_id”下。“请注意,对端点的订阅隐式订阅您所有的频道”,它似乎没有收到与频道相关的“ChannelDtmfReceived”。这是一个正确的答案,否则您将被复制。
DELETE http://localhost:8088/ari/applications/appName/subscription?api_key=user:password&eventSource=channel:__AST_CHANNEL_ALL_TOPIC,bridge:__AST_BRIDGE_ALL_TOPIC,endpoint:__AST_ENDPOINT_ALL_TOPIC