首页 > 解决方案 > Asterisk 事件设备注册

问题描述

当设备使用 ARI 注册应用程序时,我正在尝试检索事件。这可以通过将端点状态从离线更改为在线来假设。我在python中完成的实现是:

self.client.on_event ('DeviceStateChanged', self.deviceRegistration)
self.client.on_event ('PeerStatusChange', self.deviceRegistration)
self.client.on_event ('EndpointStateChange', self.deviceRegistration)
self.client.on_event ('ContactStatusChange', self.deviceRegistration)

没有任何效果。有人可以帮忙吗?

标签: pythoneventsasteriskasterisk-ari

解决方案


我已经设法找到解决它的方法。设备状态的变化已经通过事件 EndpointStateChange 进行监听。但在此之前,我们必须为我们的应用程序订阅 stasis。这里的实现:

self.client = ari.connect(.....)    
self.client.applications.subscribe(applicationName="(our stasis name)",eventSource="endpoint:PJSIP")
self.client.on_endpoint_event('EndpointStateChange',self.handleDeviceRegister) 

其中handleDeviceRegister 方法是:

def handleDeviceRegister(self, channel_obj,ev):                
    if channel_obj.json["state"]=="online":            
        print "channel change from off to online"

如果有人得到另一种方式,请告诉我。谢谢


推荐阅读