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

Dialogflow意图查询集成测试如何实现请求时间模拟

Dialogflow 集成测试中模拟请求时间的实现方案

你当前使用的是Dialogflow Legacy v1 版本的 /query 接口,这类接口识别「3天后」「下周一」这类相对时间表述时,默认计算基准是请求到达Dialogflow服务端的实时时间 + 请求体传入的timezone时区值。官方文档没有单独开放“手动指定基准时间”的公开入参,但有稳定的实现方式可以满足你的测试需求。

核心实现方法

最常用且无额外依赖的方式,是通过会话上下文注入隐含的时间基准参数。
你示例中写的contexts字段是简化的字符串数组写法,实际该字段支持传入完整的上下文对象。你只需要在上下文的参数中加入referenceTime字段,传入你指定的模拟基准时间,接口就会以这个时间作为所有相对时间计算的起点,而非实时服务端时间。

改造后的请求示例:

curl https://api.dialogflow.com/v1/query?v=20150910 \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_CLIENT_ACCESS_TOKEN' \
-d '{
  "contexts": [
    {
      "name": "shop",
      "parameters": {
        "referenceTime": "2015-06-02T00:00:00-04:00"
      }
    }
  ],
  "lang": "en",
  "query": "remind me in 3 days to call mom",
  "sessionId": "12345",
  "timezone": "America/New_York"
}'

按上述参数发请求时,接口解析「in 3 days」得到的目标日期就是你预期的2015年6月5日,和你手动指定的模拟基准时间完全对齐。

落地注意事项

  • 传入的referenceTime必须是带时区偏移的ISO8601标准格式,偏移值要和你指定的timezone匹配(America/New_York时区在夏令时对应UTC-4偏移,冬令时对应UTC-5偏移),否则参数会被接口忽略,自动回退为服务端实时时间做计算
  • referenceTime是会话级全局参数,只要在当前sessionId对应的任意上下文中传入,该会话下所有的相对时间识别都会使用这个基准时间。测试完成后可单独清除该上下文,即可恢复默认的实时时间计算逻辑
  • 该传参逻辑对Dialogflow v2正式版接口完全兼容,如果后续你从当前的v1旧接口迁移到v2版本,只需要把referenceTime放到v2请求对应的上下文参数中即可,不需要调整已有的实体识别配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 00:24:03