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

为什么actions.intent.TRANSACTION_DECISION未触发?JSON是否存在问题?

排查actions.intent.TRANSACTION_DECISION触发失败问题

我来帮你排查这个交易决策意图触发失败的问题,结合你描述的场景,咱们从几个关键方向入手:

1. 检查TRANSACTION_DECISION触发的JSON结构完整性

Google对这个意图的触发JSON有严格的字段要求,很多失败案例都是因为核心字段缺失或格式错误。你需要确保Int3返回的Webhook响应包含以下核心节点:

  • payload.google.systemIntent:intent必须精确为actions.intent.TRANSACTION_DECISION,parameterName要和后续处理的参数对应
  • payload.google.systemIntent.data:@type必须是type.googleapis.com/google.actions.transactions.v3.TransactionDecisionValueSpec,同时要包含完整的order对象(必填merchantOrderId、items、summary)和paymentOptions

举个适配你巧克力盒场景的正确结构示例:

{
  "fulfillmentText": "Great! Let's finalize your order.",
  "payload": {
    "google": {
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Great! Let's finalize your order for the premium chocolate box."
            }
          }
        ]
      },
      "systemIntent": {
        "intent": "actions.intent.TRANSACTION_DECISION",
        "parameterName": "transactionDecision",
        "data": {
          "@type": "type.googleapis.com/google.actions.transactions.v3.TransactionDecisionValueSpec",
          "order": {
            "merchantOrderId": "choco_order_12345",
            "items": [
              {
                "id": "choco_box_001",
                "name": "Premium Assorted Chocolate Box",
                "description": "12 pieces of dark and milk chocolate",
                "price": {
                  "amount": {
                    "currencyCode": "USD",
                    "nanos": 0,
                    "units": 29
                  },
                  "type": "REGULAR"
                },
                "quantity": 1
              }
            ],
            "summary": {
              "totalPrice": {
                "amount": {
                  "currencyCode": "USD",
                  "nanos": 0,
                  "units": 29
                },
                "type": "REGULAR"
              },
              "subtotal": {
                "amount": {
                  "currencyCode": "USD",
                  "nanos": 0,
                  "units": 29
                }
              },
              "merchantName": "Your Chocolate Store"
            }
          },
          "paymentOptions": {
            "googleProvidedOptions": {
              "paymentType": "PAYMENT_CARD"
            }
          }
        }
      }
    }
  }
}

你可以对比自己的JSON,重点检查是否遗漏了order.summary.merchantName、items中的必填字段,或者currencyCode是否符合ISO 4217标准(比如USD、EUR)。

2. 确认Int4的配置细节

虽然你绑定了事件,但还是要检查几个容易忽略的点:

  • 确保Int4的Webhook fulfillment确实处于启用状态(有时候会误操作取消)
  • 事件名称必须精确为actions_intent_TRANSACTION_DECISION(注意是下划线连接,不是点)
  • 不要给Int4添加任何训练短语——这个意图是系统自动触发的,手动添加训练短语反而会干扰触发逻辑

3. 检查Transactions API的项目配置

即使其他内置意图正常,TRANSACTION_DECISION有更严格的权限要求:

  • 确认你的Google Cloud项目已经启用了Transactions API(在Cloud Console的API库中搜索启用)
  • 检查项目的OAuth consent screen配置是否完整,尤其是涉及用户支付信息的权限
  • 在Dialogflow代理的Integrations -> Google Assistant中,确认已经开启Transactions功能,并配置了正确的商家信息(比如商家ID、支持的支付方式)

4. 查看Google Assistant的错误日志

最直接的定位方式是去Actions Console -> 你的项目 -> 测试 -> 日志,里面会有详细的错误信息,比如JSON解析错误、字段缺失、权限不足等。比如日志如果显示“missing required field 'merchantName' in order summary”,就能精准知道要补哪个字段。

5. 排除Webhook的其他问题

  • 用JSON校验工具检查返回的JSON是否有语法错误(比如逗号遗漏、引号不匹配)
  • 确认Webhook响应时间不超过5秒——超时会导致Google Assistant直接返回错误
  • 检查你的Webhook服务器是否能被Google的IP访问,没有防火墙或网络限制

你可以先从检查日志和JSON结构开始,这两个是最常见的问题点。如果还是无法解决,可以把Int3返回的JSON(敏感信息打码)贴出来,方便进一步排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:19:47