我在这里使用ARI代码:
http://techvoiper.blogspot.com/2015/08/asterisk-ari-interfacing-using-python.html
现在,我想要做的是,如果在音频尚未完成时呼叫者挂机,我知道播放的状态吗?
播放开始时,会注册“PlaybackStarted”事件,完成后会注册“PlaybackFinished”。但是当音频播放时呼叫者挂断,它仍然会返回'PlaybackFinished'。
在这种情况下,我希望将playback_status设置为: playback_status ='partial'。
我怎样才能做到这一点?
我的ChannelHangupRequest给了我:
{u'timestamp':u'2017-01-27T10:04:17.447 + 0545',u'type':u'ChannelHangupRequest',u'channel':{u'accountcode':你',你'name':u'SIP / 3002-00000012',u'language':你','你''':{u'name':你','u'number':u'3002'},你'creationtime':u'2017-01-27T10:04:15.847 + 0545',u'state':u'Up',u'connected':{u'name':你',u'number':你''},u'dialplan':{u'priority':2,u'exten':u'3001',u'context':u'default'},u'id':u'1485490755.36'},你'申请':u'hello-world'}
答案 0 :(得分:1)
您将看到有ChannelHangupRequest
事件具有原因整数属性,然后您可以找到映射定义here
应使用client.on_channel_event("ChannelHangupRequest", <callback_function>)
抓住事件。
callback_function将接收一个通道对象作为第一个参数,一个事件字典作为第二个参数。 event
字典将具有与事件(type
)对应的ChannelHangupRequest
密钥和对应整数值的cause
密钥(原因的映射)。
通过这种方式,您可以区分播放是否完成或者呼叫是否挂断。