Python ARI播放状态

时间:2017-01-26 11:09:50

标签: python asterisk

我在这里使用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'}

1 个答案:

答案 0 :(得分:1)

您可以在ari-py github repository

中找到API的示例

您将看到有ChannelHangupRequest事件具有原因整数属性,然后您可以找到映射定义here

应使用client.on_channel_event("ChannelHangupRequest", <callback_function>)抓住事件。

callback_function将接收一个通道对象作为第一个参数,一个事件字典作为第二个参数。 event字典将具有与事件(type)对应的ChannelHangupRequest密钥和对应整数值的cause密钥(原因的映射)。

通过这种方式,您可以区分播放是否完成或者呼叫是否挂断。