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

是否可以向Dialogflow会话主动推送消息?

Dialogflow 后端主动推送异步消息实现方案

核心实现步骤

Dialogflow 原生支持后端主动向已有会话发送消息,无需用户主动触发输入,可按以下流程落地需求:

  • 第一步:用户发起对话并完成事件订阅时,你的后端需要留存该用户的会话核心参数:session ID、所属的项目ID,同时记录用户订阅的事件类型、最后一次用户交互的时间戳,建议将 session ID 和你自有账号体系的用户 ID 做映射存储,方便后续调用。

提示:Dialogflow 的 session ID 支持自定义生成,只要和用户唯一绑定即可,你可以用长期有效的用户唯一标识作为 session ID 延长会话可用周期。

  • 第二步:后端部署定时巡检任务,按你需要的时间间隔扫描所有已订阅事件的活跃会话:
    • 校验会话距离上一次用户输入是否已经达到你设定的静默间隔阈值
    • 校验是否有匹配用户订阅类型的待推送事件内容
  • 第三步:同时满足上述两个触发条件时,调用 Dialogflow 的 REST API 或者官方 SDK 向指定会话发送消息即可,无需用户端发起请求:
    • 若使用 Node.js SDK 调用,核心参考代码如下:
    const { SessionsClient } = require('@google-cloud/dialogflow');
    const sessionClient = new SessionsClient();
    
    async function sendPushMessage(projectId, sessionId, pushContent) {
      const sessionPath = sessionClient.projectAgentSessionPath(projectId, sessionId);
      const request = {
        session: sessionPath,
        queryInput: {
          // 使用事件触发,不会被识别为用户正常输入,不干扰现有会话逻辑
          event: {
            name: 'CUSTOM_PUSH_TRIGGER',
            languageCode: 'zh-CN',
            parameters: {
              push_content: pushContent
            }
          },
        },
      };
      await sessionClient.detectIntent(request);
    }
    
    • 你需要提前在 Dialogflow 控制台创建一个对应推送触发的事件CUSTOM_PUSH_TRIGGER,绑定对应的响应消息即可,也可以直接在调用接口时自定义要推送的文本、卡片等富媒体内容,无需走意图匹配流程。

注意事项

  • 会话有效期:Dialogflow CX 版本会话默认有效期为24小时,ES 版本默认有效期为30分钟,如果你需要更长的推送窗口,建议在用户订阅后定期调用接口延长会话有效期,或使用自定义的长期 session ID。
  • 重复推送校验:后端需要给每个推送事件加已发送标记,避免重复给用户推送相同内容。
  • 交互冲突校验:每次推送前必须确认会话在间隔期内确实没有新的用户输入,避免打断用户正在进行的对话。

内容的提问来源于stack exchange,提问作者broncode

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:00:01