Dialogflow ES fulfillment等待参数时能否获取全部用户输入文本
解答
这个需求完全可以实现,不需要改动你现有的意图识别和参数提取逻辑。
- 常规对话机器人框架的多轮槽位填充流程本身就依赖会话上下文存储,每一轮的用户输入、机器人回复都会按会话ID做暂存。你在
testInput意图的两个必填参数全部收集完成、进入最终业务处理节点时,直接读取会话上下文中的用户消息历史即可:初始触发意图的I wanna test your bot是首轮用户输入,后续两轮分别是你收集params1、params2时的用户输入,都会存在历史记录列表里。 - 大部分框架会把触发意图的初始用户输入放在内置上下文变量里,常见字段名类似
origin_query、initial_input,多轮交互的全量记录一般存在chat_history、context.messages这类结构中,你直接遍历筛选发送方为用户的条目,就能拿到你要的全部内容。 - 如果你用的框架没有默认存储全量交互历史,加一个简单的前置拦截逻辑就行:每收到一条用户消息,就按当前会话ID把消息内容追加到自定义的会话存储结构里,等参数收集完成后直接读取这个结构的内容即可,实现成本极低。
注意不要在槽位填充的中间轮次清空会话缓存,否则会丢失之前的用户输入记录。如果需要把每段用户输入和对应的参数做关联,可以在机器人发出参数追问的时候给会话加一个临时轮次标记,后续收到的用户输入就可以和当前要收集的参数绑定,方便后续做内容校验。
内容的提问来源于stack exchange,提问作者KZP
相关产品推荐
相关产品推荐

