python - 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)
没有任何效果。有人可以帮忙吗?
解决方案
我已经设法找到解决它的方法。设备状态的变化已经通过事件 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"
如果有人得到另一种方式,请告诉我。谢谢
推荐阅读
- google-cloud-platform - GCP 上的气流 - Errno 111 连接被拒绝
- java - 用静态包装方法封装类是个好主意吗?
- linux - 如何向自签名 CA 证书文件添加注释?
- python - pandas 有没有办法将 read_sql() 与 sql-statement 一起使用,它需要多个变量?
- android - 使用 Kotlin 进行 FirebaseAuthentication 过程中的对话框进度条
- mysql - 是否可以在 MySQL Workbench 查询编辑器中获取 vim 键绑定?
- keyboard-shortcuts - 如何更改 CLion 中“快速修复”选项的键盘快捷键?
- linux - Buildroot 工具 - 从 .RPM 添加用户库
- node.js - collection.Aggregate 不适用于具有另一个对象数组的对象数组
- c++ - 用 getline() 填充结构字段