## 2.3.8 應答指令解析
* 應答返回JSON格式的指令,ResponseCallback回調中的IChatResult已將應答指令封裝成Command對象,該對象將會在MainService的
onRobotResponse回調方法中獲得,3.3小節已有說明,在onRobotResponse方法中解析Command對象并執行即可,應答指令說明如下:
~~~
{
" rtext ": String,// AI應答文本,String類型
" synthetise ":JSON,//應答文本合成控制
" ttext ":String,// AI提示性文本 Sting類型
" outc ": int,//輸出控制碼,int類型
" motions ":JSON,//動作集合,解析參照自動動作集合結構
" actions ":JSON//語義對象集合,解析參照語義對象集合結構
}
~~~
* 自動動作集合結構:
[{"index":rtext應答文本中字符的索引位置,"level":動作優先級,"motion":動作id(參見動作對象)},...]
動作id及詳細指令解析請參照SDK指令說明,動作JSON的詳細說明如下:
* IChatResult會輸出的回復文本(以下用Text指代)。
* index:int類型,表示Text朗讀到第index個字時需要做的動作(以下用C動作指代);
* level:代表了C動作的優先級,int類型,如果上一個index需要做的動作(以下用L動作指代)還未完成,則比較兩者的優先級,
如果C動作優先級比L動作優先級高,則打斷L動作執行C動作,反之忽略C動作;
* motion:指動作ID,int類型,這是一個抽象的動作概念,具有特定的一個具體定義,如:motion=20001,代表了高興,則用戶需將該動作ID
映射到機器人自身的若干個表示高興的動作集合中,當指令指示要執行該動作ID時,開發者須自行制定策略選擇一個代表高興的動作執行之。
* 語義對象集合結構:
[{"action":語義動作,"etime":動作執行時間,"target":語義動作的目標對象},... ]
語義動作的目標對象詳細請參照sdk指令說明,語義對象JSON說明如下:
* action:語義動作,AI可以執行的指令通常只有VIEW,其它的無法或者不可能執行,需要傳遞給開發者代為執行。
* etime:動作執行時間,一般表示為自定義的scheduler類型,無此屬性或為空代表馬上執行。
* target:語義動作的目標對象。(詳細請參照sdk指令說明)