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

如何为Dialogflow ES代理配置指定时段响应功能?

Dialogflow ES 按指定时段响应的实现方案

方案一:在Dialogflow意图层级做时间拦截

通过Fulfillment代码统一判断当前时间是否在允许的服务时段内,拦截非时段的请求:

  • 核心逻辑:获取当前日期的星期、时分,分别匹配工作日/周末的时段规则
  • 实现步骤:
    1. 打开代理的Fulfillment页面,启用内联编辑器(或部署自己的webhook服务)
    2. 在默认回退意图(或专门创建的全局拦截意图)中绑定检查函数,确保所有用户请求先经过该函数判断
    3. 编写时间判断代码,示例(Node.js):
function checkServiceTime(agent) {
  const now = new Date();
  const day = now.getDay(); // 0=周日,1=周一,6=周六
  const totalMins = now.getHours() * 60 + now.getMinutes();

  let isAllowed = false;
  // 工作日(周一至周五)
  if (day >= 1 && day <= 5) {
    // 22:00(1320分钟) 至次日09:00(540分钟)
    isAllowed = totalMins >= 1320 || totalMins <= 540;
  } 
  // 周末(周六、周日)
  else {
    // 20:00(1200分钟) 至次日11:00(660分钟)
    isAllowed = totalMins >= 1200 || totalMins <= 660;
  }

  if (!isAllowed) {
    agent.add("当前非服务时段,请在工作日22:00-次日09:00、周末20:00-次日11:00咨询。");
    return;
  }
  // 符合时段,继续执行后续意图逻辑
}

// 绑定到默认回退意图,确保所有请求都经过检查
const intentMap = new Map();
intentMap.set('Default Fallback Intent', checkServiceTime);
// 若需要其他意图也触发检查,可添加更多绑定

方案二:在聊天平台侧做中转拦截

如果Dialogflow的Fulfillment拦截不够灵活,可以在聊天平台和Dialogflow之间加一层中转服务:

  • 中转服务接收用户的消息请求后,先执行时间判断逻辑
  • 仅当符合服务时段时,才将请求转发给Dialogflow处理;否则直接返回非服务时段提示
  • 这种方式适用于所有集成的聊天平台,无需改动Dialogflow内部配置

方案三:迁移至Dialogflow CX(备选)

如果可以接受代理迁移,Dialogflow CX支持全局会话流的时间规则配置:

  • 可直接在CX控制台中设置全局触发条件,根据时段自动拦截请求并返回提示
  • 无需编写大量代码,配置更直观,但需要重新迁移代理的意图、实体等内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 15:30:14