重庆互联网,19年企业互联网解决经验,专业网站开发、移动端开发、微信端开发、小程序开发!
重庆网络推广公司

腾讯小微(14)— 流程总结

作者:重庆互联网小徐 发布时间:2024-04-28 浏览:19743 赞(1950 收藏 评论(0)

这里通过下面一张图,简要总结一下使用小微的流程 step

  1. 初始化小微device,并等待成功

  2. 自己唤醒,与小微无关

  3. 调用request接口发送第1个语音包

  4. 收到on_dialog_begin回调

  5. 调用request接口发送第2个语音包

  6. 调用request接口发送第m个语音包

  7. 收到on_speak回调

  8. 调用request接口发送第n个语音包

  9. 收到on_recognize回调,拿到ASR实时结果

  10. 调用request接口发送第k个语音包

  11. 收到on_recognize回调,拿到ASR实时结果

  12. 调用request接口发送第p个语音包

  13. 收到on_silence回调,停止发送语音包

  14. 等待一小会儿

  15. 收到on_response回调,获得NLP结果和资源

  16. 对小微而言,对话到此结束,收到on_dialog_end

  17. 用户自己处理资源和控制命令(或者是我们提供的开源控制层)

  18. 结束

上述流程是一个最标准的流程,当然在这个过程中可以主动停止对话,或者主动发送静音包,这在接口说明中有详细描述。如果用户发起的是文本请求,那么上述过程第3步就变成了发送文本请求包,5到第13步就不存在了。

最终响应

在上述中的流程图中,有一个ON_RESPONSE事件,即在回调中拿到了最终响应,也就是获得了NLP的结论和资源。这里详解一下response的数据结构,即XWResponseInfo

appInfo

这轮请求命中了哪一个技能,如音乐、闲聊等,一般来讲用户应根据命中的不同技能进行不同的操作,如打开音乐播放器,加载UI等。

lastAppInfo

这个和appInfo结构一样,标识了您当前处于的skill状态,这个状态事实上是依赖于您的状态上报的,这在后续有详细说明。

voiceID

这个响应针对哪一次请求,voiceID唯一标识了一次请求。

context

上下文信息。每次请求您都需要携带一个context,同样在返回时您会获得一个context。在context中维护了多轮对话的状态,当您收到响应时发现context中申明了id和speakTimeout时,则表明这是一个多轮对话,在下次请求的时候带上这个id标记。关于context的具体说明请参考接口说明。

responseData

这个字段主要针对一些自定义技能,小微APP在responseData中返回某些技能所需的额外数据或资源。

intentInfoForUser

这个字段向用户暴露意图槽位以及用户定制的一些返回。该字段默认不返回任何数据,如果您需要定制化某些内容,请与商务联系。

resources

小微返回的资源全部位于这里。 XWResGroupInfo是一个数组,在每个元素中又有若干个resources(XWResourceInfo),XWResourceInfo代表一个具体的资源。

在正常情况下,是按照二维数组的顺序一个一个进行播放。如果发生用户主动切换“上一首”、“下一首”操作,则需要按照Group这个一维数组的维度进行切换。具体的意义可以参考下图:

正常情况下先播放resources[0].resource[0],然后播放resources[0].resource[1],当第一个resources的资源全部播放完毕之后,播放第二个resources。而当切歌时,则应该从resources[0]直接切换到resources[1]

hasMorePlaylist

这个字段表示是否还有更多的资源可以拉取,在某些skill下,例如音乐,点歌时只会返回若干首(默认6首)资源,当您快要播放完毕的时候,可以调用资源拉取接口来获得更多的资源。

hasHistoryPlaylist

在某些sikill下(目前只支持音乐),我们还为您维护了历史播放列表,当用户使用上一首功能到第一首的时候,可以调用拉取历史列表的接口来获取历史歌单。

recoveryAble

当前资源(resourceGroup)被打断后是否应该继续播放。例如音乐一般就是可以继续播放的,当设备播放音乐时,如果与小微闲聊几句,聊完之后音乐应该恢复播放。天气就是一种不能恢复播放的资源,当询问小微天气后,小微正在播报天气的过程中如果打断她,后续就不应该再播放天气了。

isNotify

这个字段表示当前资源是否是一个notify资源。对于notify资源,不应该对当前的资源列表产生任何操作,这里在下面playBehavior里面有体现。notify资源应该单独起一个线程去播放,播完就释放。在我们的Android Demo中,当收到notify资源时,当前正在播放的资源音量会降低到20%,然后另起一个播放器播放notify,二者叠加。当notify播放完毕后,当前资源恢复100%音量。常见的notify例子是,播放音乐的时候对小微说收藏这首歌,然后收到notify:"收藏xxx成功"。

playBehavior

资源列表拼接类型,如替换当前列表、插入尾部、插入头部等。

resourceListType

当前列表或历史列表

responseText

小微回答对应的文本,一般来说resourceGroup[0].resources[0]就是这句话的TTS。

controlId

控制指令ID,例如播放、暂停等。当这个值为0时,表示默认操作,也就是按顺序播放(处理)所有资源。注意当某次返回既有资源又有controlId时,应该先按照playBehavior处理资源,然后再执行控制指令。

controlValue

与controlId对应,某些控制没有controlValue,例如暂停。而某些控制则有,例如快进到某个位置,这个value就是快进到的offset值。


重庆互联网项目从2004年开始为各行各业提供互联网发展解决方案,专业从事网站、小程序、微信公众号、APP、电商平台、系统等互联网平台开发,帮助企业实现从传统行业到互联网的完美转型。截止目前,重庆互联网合作的企业遍布全国各地,20年的开发经验和完善的售后服务体系获得合作客户的高度认可!

关注重庆互联网官方公众号,即可获取粉丝专享福利!

重庆互联网公众号二维码.jpg

网友留言评论
我要评论
评论

欢迎广大用户为此页面进行评价,评价成功将获得积分奖励!

  • 赞(0
    踩(0
重庆网站定制建设
  • 重庆网站建设平台
  • 重庆网站优化公司
  • 重庆网络推广公司哪家好
  • 重庆APP制作公司
版权所有 ©2004-2024 重庆市渝中区圣灵科技信息有限公司 渝ICP备16004600号-14 渝公网安备50010802001420号 电子营业执照
重庆公众号制作哪家好
二维码
联系客服 重庆商城网站建设