2.3Robot的对话与处理流程

<br/><p> * 对话是灵聚APP最基本的交互。用户输入文本发送给robot(灵聚智能引擎),robot则针对该输入进行快速分析并作出应答,从而完成一次对话交互。具体过程如下: ### 1. 用户输入 * 键盘输入。触发MainActivity的sendMsg2Robot( )将输入框中的文本发送到APP的调度中心AssistantService,让其发送给robot。 ``` @OnClick(R.id.index_text_send_bt) void sendMsg2Robot() {...} ``` * 语音输入。在VoiceMediator的语音识别结果回调onRecognizeResult(String)中获得输入文本,通过VoiceInputListener的onInput(String)发送给AssistantService,让其发送给robot。 ~~~ public void onRecoginzeResult(String result) { ... if (!TextUtils.isEmpty(result) && !"。".equals(result)) { ... //将识别结果发送给机器人 if (inputListener != null) { inputListener.onInput(result); ... } } else { onRecognizeError(ErrorCode.MSP_ERROR_NO_DATA, ""); } } ~~~ ### 2. Robot应答 robot对输入文本进行分析处理完毕后,会回调AssistantService.RobotResponseCallBack的 ~~~ public void onResult(IChatResult r) { ... processors.get(?).handle(r.cmd(), text, type); ... } ~~~ 该方法会将robot返回的指令返回至方法中,开发者需在该方法中对应答指令进行分类,然后调用对应类型的Processor的指令处理方法 ~~~ /** * 处理Robot返回的指令 * * @param cmd 输出指令 * @param text 输出文本 * @param inputType 输入类型 */ public void handle(Command cmd, String text, int inputType); ~~~ 对指令再进行细分并解析、执行,同时将解析到的回复信息通过EventBus post到前端Activity展示(功能指令处理详见第4章)。