我在这里使用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':u'',u'name':u'SIP/3002-00000012',u`语言':u`en',u`caller':{u'名称':u`,u'number':u'3002'},u'创建时间':u'12017-01-27T0:04:15.847+0545,u'state':u''Up,u'connect ed':{u'name':u'',u'number':u'},u'dialplan':{u'priority':2,u'extend':u'3001',u'ntext':u'default'},u'id':u'1485490755.36'}、u'application':u'helloworld'}
您可以在ari-py-github存储库中找到API的示例
在那里你会看到有一个ChannelHangupRequest
事件,它有一个原因整数属性,然后你可以在这里找到映射定义
应该使用client.on_channel_event("ChannelHangupRequest", <callback_function>)
捕获事件。
callback_function将接收一个通道对象作为第一个参数,接收一个事件字典作为第二个参数。event
字典将具有对应于事件(ChannelHangupRequest
)的type
密钥和对应于整数值(原因的映射)的cause
密钥。
通过这种方式,您将能够区分播放是否通过或通话是否挂断。