
在配置的后端服务中,index.handler 做为智能应用平台请求的入口,接受请求,并返回响应
请求的正文如下,我们主要关注【intentName】意图、【slotEntities】识别到的参数

参数名 | 类型 | 是否固有 | 描述 |
intentId | Long | 是 | 意图ID,测试领域和线上领域中同一个意图的意图ID不同。如果所有意图绑定同一个后端服务地址,不应该根据意图ID区分是哪个意图。 |
intentName | String | 是 | 意图标识,测试领域和线上领域中同一个意图的意图标识相同 |
intentId | Long | 是 | 意图ID,测试领域和线上领域中同一个意图的意图ID不同。如果所有意图绑定同一个后端服务地址,不应该根据意图ID区分是哪个意图。 |
slotEntities | List<SlotEntity> | 是 | 从用户语句中抽取出的 slot 参数信息 |
接下来我们可以把handler中大部分的代码删除,把开始写我们的业务处理,也就是对之前两个意图【guide】【report】的处理

handler最后返回 acommon_reply()方法
响应数据格式要求如下

响应数据字段说明
字段名 | 类型 | 是否必要 | 描述 |
returnCode | String | 是 | "0"默认表示成功,其他表示不成功 |
returnErrorSolution | String | 否 | 出错时解决办法的描述信息 |
returnMessage | String | 否 | 返回执行成功的描述信息 |
returnValue | Object | 是 | 响应结果对象 |
returnValue 响应字段说明
字段名 | 类型 | 必要 | 描述 |
reply | String | 否 | 回复给用户的 TTS 文本信息 |
resultType | ResultType | 是 | 回复时的状态标识,当值为 ASK_INF时,天猫精灵播放完回复内容后会自动开麦;当值为 RESULT 时,天猫精灵播放完回复内容后不会开麦 |
askedInfos | List<AskedInfoMsg> | 否 | 追问的参数信息,可同时携带多个参数。 |
executeCode | String | 是 | "SUCCESS"代表执行成功; "PARAMS_ERROR"代表接收到的请求参数出错; "EXECUTE_ERROR"代表自身代码有异常; "REPLY_ERROR"代表回复结果生成出错 |
gwCommands | List<GwCommand> | 否 | 最新版响应协议定义的 command结构 |
askedInfos 字段说明:
字段名 | 类型 | 必要 | 描述 |
parameterName | String | 是 | 追问的参数名称。 此名称是在意图中定义的,不是实体标识 |
intentId | Long | 是 | 参数所在的意图ID。 线上领域和测试领域中的意图ID不同,要从请求数据中获取意图ID,请勿使用固定值 |
我们用common_reply() 把响应内容过程封装一下

有小伙伴看这里会问,好像在业务处理中没有看到参数的提问,parameter_name的值是None是怎么回事?
一方面是因为我们在智能应用平台配置意图时已经对缺少的参数进行了精灵追问,另一方面我们是对【guide】意图追问,而【guide】我们在配置时无参数。