* 对话是灵聚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章)。