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

使用Dialogflow+Transactions API添加订单预览配送地址遇错排查

解决Google Transactions API中ProposedOrder Extension导致的报错问题

你在用Dialogflow、Google Assistant和Transactions API构建下单聊天机器人时遇到的问题,我帮你梳理下核心原因和解决方案:

首先,你的订单预览不显示配送地址,其实不需要通过extension手动注入地址——当你在orderOptions里设置requestDeliveryAddress: true时,Google Assistant会自动拉取用户已在Assistant中保存的地址,并在订单预览里展示,根本不需要手动在proposedOrder里添加地址相关的extension。

而你添加的GenericExtension结构大概率不符合API规范,再加上日志里显示响应被截断,说明JSON解析时出现了错误,这就是模拟器抛出“Sorry, something went wrong”的原因。

修正后的Webhook响应JSON

直接移除错误的extension字段,保留正确的Transaction Decision触发逻辑即可:

{
  "fulfillmentText": "This is your order preview:",
  "payload": {
    "google": {
      "expectUserResponse": true,
      "isSsml": false,
      "noInputPrompts": [],
      "systemIntent": {
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.TransactionDecisionValueSpec",
          "orderOptions": {
            "requestDeliveryAddress": true
          },
          "paymentOptions": {
            "actionProvidedOptions": {
              "displayName": "VISA **** **** **** 3235",
              "paymentType": "PAYMENT_CARD"
            }
          },
          "proposedOrder": {
            "cart": {
              "lineItems": [
                {
                  "description": "Book",
                  "id": "1",
                  "name": "Book",
                  "price": {
                    "amount": {
                      "currencyCode": "USD",
                      "nanos": 0,
                      "units": 31
                    },
                    "type": "ACTUAL"
                  },
                  "quantity": 2,
                  "subLines": [],
                  "type": "REGULAR"
                }
              ],
              "merchant": {
                "id": "Amazon",
                "name": "Amazon"
              },
              "otherItems": []
            },
            "id": "<UNIQUE_ORDER_ID>",
            "otherItems": [],
            "totalPrice": {
              "amount": {
                "currencyCode": "USD",
                "nanos": 0,
                "units": 31
              },
              "type": "ACTUAL"
            }
          }
        },
        "intent": "actions.intent.TRANSACTION_DECISION"
      }
    }
  }
}

关键说明

  1. 地址获取逻辑:requestDeliveryAddress: true会让Google Assistant自动处理地址拉取,用户确认后,你可以通过actions.intent.DELIVERY_ADDRESS意图获取地址详情,不需要提前在订单预览中硬编码。
  2. Extension的正确用法:GenericExtension是用来添加自定义商家字段(比如配送时段选项)的,不是用来注入用户地址的。如果确实需要用它,要严格遵循google.actions.v2.orders.GenericExtension的结构规范,但你的场景完全不需要这一步。
  3. JSON结构完整性:日志里的响应截断说明原JSON存在语法或结构错误,移除错误的extension后,确保所有字段(比如totalPrice的nanos)都正确设置,避免解析失败。

内容的提问来源于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 06:30:32