You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dialogflow新手求助:获取上一意图参数失败,agent.context.get返回null

解决Dialogflow中获取上一意图参数返回null的问题

嘿,作为Dialogflow新手碰到这种参数获取问题确实挺闹心的,我来帮你捋清楚问题出在哪,以及怎么解决!

问题根源分析

你之前用的angerEmotionCapture-followup是Dialogflow自动生成的followup上下文,但这个上下文有两个致命问题:

  1. 存活时间太短:默认情况下,自动followup上下文的存活轮数只有1,当用户发送“谢谢你的倾听”触发angerEmotionClosure意图时,这个上下文已经过期消失了,自然拿不到参数。
  2. 仅绑定followup意图:这个上下文是为引导用户进入对应的followup意图设计的,而你的angerEmotionClosure是独立意图,并不在这个上下文的触发范围内,所以上下文不会保留到这个意图触发时。

具体解决步骤

1. 给angerEmotionCapture意图添加自定义输出上下文

打开angerEmotionCapture意图的编辑页面,找到「输出上下文」区域:

  • 添加一个自定义上下文,比如命名为angry_context
  • 设置「存活时间(轮数)」为2或更高(比如设为3,确保用户后续1-2轮对话内触发关闭意图时上下文还存在)
  • 重点:在这个上下文的参数列表里,把你需要传递的father参数(对应实体angryDirectedTo)添加进去,确保参数名和意图里的参数名完全一致。

2. 修改Fulfillment代码获取参数

把你原来的代码替换成以下内容,通过自定义上下文获取参数:

// 获取自定义的上下文
const angryContext = agent.context.get('angry_context');

if (angryContext) {
  // 这里的参数名要和你在angerEmotionCapture里设置的参数名一致,也就是father
  const targetPerson = angryContext.params.father;
  agent.add(`不用客气呀~我知道你刚才在气${targetPerson}呢😉`);
} else {
  // 处理上下文不存在的情况(比如用户直接触发关闭意图)
  agent.add("不用客气!");
}

额外注意事项

  • 确认参数名:一定要检查angerEmotionCapture意图里的参数名称是father还是angryDirectedTo,代码里的参数名必须和意图中定义的完全匹配。
  • 测试上下文:可以在Dialogflow的测试控制台里,触发angerEmotionCapture后,查看右侧「上下文」面板,确认angry_context存在且包含father参数,再触发angerEmotionClosure测试效果。

内容的提问来源于stack exchange,提问作者Agustinus Benyamin Prasetyo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:10:04