AIUI在交互过程中依靠AIUIMessage向SDK传递指令,依靠AIUIEvent从SDK内部向外抛出事件回调。下面将罗列这些AIUIMessage与AIUIEvent的具体取值及含义。

# AIUIMessage

注意:CMD_WAKEUP是用于手动唤醒,为了保障识别效果以及服务的稳定性,请勿频繁手动唤醒以延长交互时间。

msgType(消息类型) 取值 返回
说明
CMD_GET_STATE 1
CMD_WRITE 2
向AIUI服务写入数据

具体使用可参考数据写入
CMD_STOP_WRITE 3
停止写入数据

具体使用可参考数据写入
CMD_RESET 4
重置AIUI服务的状态

服务会立即停止并重新启动,进入到待唤醒状态。
CMD_START 5
启动AIUI服务

当AIUI服务停止后,使用此命令启动服务。
CMD_STOP 6
停止AIUI服务

服务停止之后,将不响应外部输入。
CMD_WAKEUP 7
唤醒消息

用于手动唤醒AIUI服务,arg1为唤醒后拾音的波束号,默认为0。
关于波束的定义参见麦克风设计参考
CMD_RESET_WAKEUP 8
重置唤醒状态

AIUI服务重置为待唤醒状态。若当前为唤醒状态,
发送该消息重置后会抛出EVENT_SLEEP事件。
CMD_SET_BEAM 9
设置麦克风阵列的拾音波束
用arg1携带拾音波束号。
关于波束的定义参见麦克风设计参考
CMD_SET_PARAMS 10
设置参数配置

用params携带参数设置JSON字符串,
具体格式参照配置文件
目前可以修改如下参数,实时生效

  • global
  • ivw
  • speech
  • audioparams
  • userparams

示例:

{
"global":{
"scene":"main"
}
}

具体使用示例可参考场景切换
CMD_SEND_LOG 12
发送应用日志到云端,可以帮助分析应用问题

需要将JSON格式的字符串放在params字段中携带。
CMD_SYNC 13
同步个性化数据

arg1表示同步的数据类型
data表示同步的数据内容

具体使用请参考用户个性化使用文档
CMD_BUILD_GRAMMAR 16
构建本地语法

用params字段携带bnf语法内容,
bnf语法规则请参见BNF语法开发指南
CMD_UPDATE_LOCAL_LEXICON 17
更新本地词表

当构建好本地语法之后,
可以动态更新某个槽(声明为slot,实质上为词表)的内容
以动态变更支持的说法。将需要更新的槽名称和内容组成JSON字符串,
用params字段携带。

示例:

{
"name":"<contact>",  // 槽名称
"content":"张三\n李四\n"  //词表内容
}
注:只有在成功构建语法之后才能调用。
CMD_START_THROW_AUDIO 18
开始抛出识别音频
调用之后,抛出EVENT_AUDIO事件。
arg1为拾音波束编号设置,若当前未唤醒则会使用该波束拾音,
若已经处于唤醒状态则arg1不起作用。
CMD_STOP_THROW_AUDIO 19
停止抛出识别音频
调用之后,停止抛出EVENT_AUDIO事件
CMD_RESULT_VALIDATION_ACK 20
结果确认
在接收到语义、听写、后处理的结果后5s内可发送该指令对结果进行确认,
AIUI会认为该条结果有效,并重新开始AIUI交互超时的计时

关于交互超时的机制参看AIUI配置interact_timeout的解释

具体描述与使用可参考延迟休眠
CMD_CLEAN_DIALOG_HISTORY 21
清空交互历史

具体描述与使用可参考清除交互历史
CMD_START_RECORD 22
开始录制数据
CMD_STOP_RECORD 23
停止录制数据
CMD_QUERY_SYNC_STATUS 24
查询数据同步状态

arg1表示状态查询的类型
params包含查询条件

具体使用可参考查询打包状态

注:有返回的含义是在向 AIUI 发送一条 CMD消息后,AIUI会抛出一个对应的EVENT_CMD_RETURN事件返回CMD消息的处理结果。

# AIUIEvent

eventType(事件类型) 取值
说明
EVENT_RESULT 1
结果事件

data字段携带结果数据,info字段为描述数据的JSON字符串。

解析数据请参考结果解析
EVENT_ERROR 2
出错事件

arg1字段为错误码,info字段为错误描述信息。
错误码参考附录中错误码说明
EVENT_STATE 3
服务状态事件
EVENT_WAKEUP 4
唤醒事件

arg1字段取值(自1051版本开始支持):
0 => 内部语音唤醒
1 => 外部手动唤醒(外部发送CMD_WAKEUP)。
info字段为唤醒结果JSON字符串。
EVENT_SLEEP 5
休眠事件

当出现交互超时,服务会进入休眠状态(待唤醒),
或者发送了CMD_RESET_WAKEUP时,抛出该事件。
arg1字段取值:
0 => TYPE_AUTO(自动休眠,即交互超时)、
1 => TYPE_COMPEL (外部强制休眠,即发送CMD_RESET_WAKEUP)。
EVENT_VAD 6
VAD事件

当检测到输入音频的前端点后,会抛出该事件,
用arg1标识前后端点或者音量信息:0(前端点)、1(音量)、2(后端点)、3(前端点超时)
当arg1取值为1时,arg2为音量大小。
EVENT_CMD_RETURN 8
某条CMD命令对应的返回事件

对于除CMD_GET_STATE外的有返回的命令,都会返回该事件,
用arg1标识对应的CMD命令,arg2为返回值,0表示成功,
info字段为描述信息。
EVENT_AUDIO 9
音频抛出事件

16k音频数据在data中,通过键”audio”获取,示例:
byte[] audio = event.date.getByteArray(“audio”);
EVENT_PRE_SLEEP 10
准备休眠事件

当出现交互超时,服务会先抛出准备休眠事件,用户可在接收到该事件后的10s内继续交互。若10s内存在有效交互,则重新开始交互计时;若10s内不存在有效交互,则10s后进入休眠状态。
EVENT_START_RECORD 11
抛出该事件通知外部录音开始,用户可以开始说话
EVENT_STOP_RECORD 12
通知外部录音停止
EVENT_CONNECTED_TO_SERVER 13
与服务端建立起连接事件

建立连接后才能进行数据同步等各种操作
EVENT_SERVER_DISCONNECTED 14
与服务端断开连接事件

连接断开后,将不能进行数据同步等各种操作