Khuyến mãi

Chương trình khuyến mãi là một cách để bạn và Google khuyến khích khách hàng hãy thử dùng dịch vụ đặt đồ ăn với giá ưu đãi. Hỗ trợ của Google tích hợp các Hành động hoàn chỉnh trong đơn đặt hàng với quản lý quảng cáo của bạn hệ thống.

Các loại chiết khấu sau được hỗ trợ:

  • Mã khuyến mại do Google tài trợ: Mã khuyến mại được tự động thêm vào do Google điền trước hoặc do người dùng nhập.
  • Mã khuyến mại do bên thứ ba tài trợ: Mã khuyến mại để người dùng nhập, do dịch vụ đặt món ăn của bạn cung cấp.
  • Chiết khấu tự động do bên thứ ba tài trợ: Chương trình chiết khấu mà thực phẩm của bạn tự động áp dụng mà không cần mã khuyến mãi.

Bất kể loại chiết khấu là gì, Google đều thực hiện cuộc gọi để thanh toán cho đồ ăn của bạn yêu cầu thực hiện đơn hàng để xác minh và áp dụng chiết khấu.

Là nhà phát triển của dịch vụ đặt món ăn, bạn cần phải thực hiện một số thay đổi đối với hoạt động triển khai của bạn để tính toán chiết khấu cho các mã khuyến mãi hợp lệ hoặc gửi lỗi đối với mã khuyến mãi không hợp lệ, quản lý việc sử dụng mã khuyến mãi và theo dõi dữ liệu kế toán để hoàn trả.

Cách xử lý chương trình khuyến mãi

Để triển khai một phương thức thực hiện đơn hàng hỗ trợ chương trình khuyến mãi, hãy làm như sau:

  1. Thiết lập việc tích hợp chương trình khuyến mãi. (Bỏ qua bước này bước nếu bạn không sử dụng mã khuyến mại do Google tài trợ).
  2. Triển khai quy trình thanh toán bằng chương trình khuyến mãi.
  3. Triển khai đơn đặt hàng gửi kèm chương trình khuyến mãi.

Thiết lập chế độ tích hợp chương trình khuyến mãi

Phần này mô tả cách thiết lập chế độ tích hợp chương trình khuyến mãi nếu bạn định sử dụng Mã khuyến mại do Google tài trợ. Nếu bạn chỉ muốn hỗ trợ mã khuyến mãi hoặc những khoản chiết khấu mà bên thứ ba tài trợ, bạn có thể chỉ định chế độ thiết lập của riêng mình và bỏ qua phần này.

Google chỉ định loại chương trình khuyến mãi cho nhà tài trợ và thông tin liên hệ mà bạn thiết lập tiến hành tích hợp. Chúng tôi cung cấp những thông tin sau:

  • Số tiền chiết khấu.
  • Giá trị giỏ hàng tối thiểu.
  • Ngày bắt đầu và ngày kết thúc sử dụng mã khuyến mãi.
  • Số tiền tối đa được lập ngân sách cho chiến dịch khuyến mãi.
  • Số lần mã khuyến mãi có thể được sử dụng.

Ví dụ về mã khuyến mãi:

  • FopaNewUser: 10% (phần trăm cố định) với mức giảm tối đa là 50 USD.
  • FopaMoreThan50: 10 USD (giảm số tiền cố định).

Nếu Google quyết định tạm dừng việc áp dụng mã, chúng tôi sẽ liên hệ với bạn.

Thiết lập phương thức giải ngân

Hãy liên hệ với chuyên viên tư vấn chương trình tiếp cận sớm của Google để thiết lập quy trình giải ngân. Google chỉ hoàn tiền cho các giao dịch liên quan đến chương trình khuyến mãi do Google tài trợ mã nếu trạng thái cuối cùng của đơn đặt hàng là một trong các trạng thái sau:

  • CONFIRMED
  • IN_TRANSIT
  • READY_FOR_PICKUP
  • IN_PREPARATION
  • FULFILLED

Triển khai quy trình thanh toán bằng chương trình khuyến mãi

Phần này mô tả cách triển khai quy trình thanh toán khi bạn hỗ trợ mã khuyến mại (do Google tài trợ hoặc bên thứ ba tài trợ). Cho ưu đãi chiết khấu tự động do bên thứ ba tài trợ, bạn chỉ cần trả lại chiết khấu mục hàng trong CheckoutResponseMessage (không kiểm tra mã khuyến mãi nếu cần).

Trong quá trình thực hiện đơn đặt hàng, Google sẽ gửi một mã khuyến mãi trong CheckoutRequestMessage cho phương thức thực hiện của bạn. Người dùng có thể thay đổi giỏ hàng hoặc mã khuyến mại trên các yêu cầu thanh toán lặp lại.

Để kiểm tra xem đây có phải là lần đầu tiên người dùng áp dụng mã khuyến mãi hay không, hãy sau:

  • Mã khuyến mại do Google tài trợ: Google kiểm tra xem người dùng cũ có cố gắng sử dụng lại cùng một mã khuyến mại; bạn không cần phải làm gì cả.
  • Mã khuyến mại do bên thứ ba tài trợ hoặc chiết khấu tự động: Nếu bạn có chưa triển khai liên kết tài khoản và chọn tham gia của người dùng, thì bạn sẽ không thể kiểm tra thông tin chi tiết của người dùng trong quá trình xử lý yêu cầu thanh toán. Thay vào đó, hãy kiểm tra trong khi xử lý SubmitOrderRequestMessage, bằng cách sử dụng Contact thông tin chi tiết (chẳng hạn như địa chỉ email của người dùng) trong FoodCartExtension .

Xác định các lỗi hoặc tính toán các khoản chiết khấu đối với phương thức thực hiện đơn hàng dựa trên giá trị mới nhất yêu cầu thanh toán. Khi làm như vậy, hãy đảm bảo rằng hệ thống của bạn không bị lỗi thời thông tin trạng thái.

Kiểm tra tính hợp lệ của mã khuyến mãi

Việc thực hiện đơn hàng cần kiểm tra tính hợp lệ hay đủ điều kiện của một chương trình khuyến mãi cụ thể mã theo các điều khoản quy định như ngày hết hạn, mức sử dụng tối đa và mức chiết khấu tối đa. Sau đó, đưa ra câu trả lời thích hợp trong CheckoutResponseMessage với mức chiết khấu đã tính hoặc với foodOrderErrors nếu mã khuyến mãi Không thể áp dụng. Nếu bạn phát hiện lỗi với mã khuyến mãi, hãy làm theo quy trình nêu trong bài viết Xử lý lỗi liên quan đến chương trình khuyến mãi.

Đoạn mã sau đây cho thấy ví dụ về foodOrderErrors về mã khuyến mãi. Đảm bảo rằng correctedProposedOrder không bao gồm chương trình khuyến mãi nút.

"foodOrderErrors": [
  {
    "error": "PROMO_NOT_APPLICABLE",
    // Copy promotions.coupon string from CheckoutRequest as the ID
    "id": "GoogleNewUser",
    "description": "Promotion could not be applied"
  }
],
"correctedProposedOrder": {// required ...},
"paymentOptions": {// required ...}

Tính toán chiết khấu

Nếu mã khuyến mãi hợp lệ, việc thực hiện đơn hàng sẽ tính toán mức chiết khấu và gửi lại CheckoutResponseMessage bằng giá trị đã tính giá trị chiết khấu trong mảng otherItems. Tổng giá của đơn đặt hàng không được là phủ định. Nếu số tiền chiết khấu vượt quá số tiền của giỏ hàng, hãy gửi lại số tiền tối đa để hiển thị tổng giá của đơn đặt hàng thành 0 đô la.

Đoạn mã sau đây cho thấy ví dụ về phần CheckoutResponseMessage cho chiết khấu khuyến mãi:

"proposedOrder": {
   "otherItems": [
      . . .
      {
        "name": "Discount",
        // copy promotions.coupon field from CheckoutRequest as the id
        "id": "GoogleNewUser",
        "price": {
          "type": "ESTIMATE",
          "amount": {
          "currencyCode": "USD",
          "units": "-3",
          "nanos": -500000000
        }
      },
      "type": "DISCOUNT",
    }
  ]
}

Phát hành chương trình khuyến mãi không dùng đến

Không phải yêu cầu thanh toán nào cũng dẫn đến một yêu cầu gửi đơn đặt hàng. Nếu phương thức thanh toán đặt lệnh tạm ngưng khuyến mãi tại thời điểm gọi thanh toán, hãy đảm bảo bạn có cơ chế được áp dụng để giải phóng khoản tạm giữ nếu chương trình khuyến mãi không được xác nhận qua gửi đơn đặt hàng sau một khoảng thời gian nhất định. Việc này giúp đảm bảo thức ăn của bạn dịch vụ đặt hàng duy trì hạn mức chiến dịch chính xác.

Xử lý lỗi về chương trình khuyến mãi

Nếu phương thức thực hiện của bạn xác định rằng mã khuyến mãi từ CheckoutRequestMessage không hợp lệ (ví dụ: đã hết hạn, không hợp lệ, hoặc không nhận dạng được), hãy gửi CheckoutResponseMessage kèm theo một foodOrderError chứa mã lỗi và văn bản lý do hiện hành, cùng với Đối tượng correctedProposedOrderpaymentOptions.

Nếu phương thức thực hiện đơn hàng của bạn phát hiện nhiều lỗi mã khuyến mãi trong cùng một yêu cầu, gửi lại lỗi không thể khôi phục trước khi gửi lại lỗi có thể khôi phục. Hãy ưu tiên các bước kiểm tra như sau (từ cao đến thấp):

  • PROMO_NOT_RECOGNIZED
  • PROMO_EXPIRED
  • PROMO_USER_INELIGIBLE
  • PROMO_ORDER_INELIGIBLE
  • PROMO_NOT_APPLICABLE

Ví dụ

Dưới đây là ví dụ về một yêu cầu thanh toán có mã khuyến mãi:

{
    "accessToken": "test_access_token",
    "lastSeen": "2018-06-22T19:25:39Z"
  },
  "conversation": {
    "conversationId": "XYZ"
  },
  "inputs": [
    {
      "intent": "actions.foodordering.intent.CHECKOUT",
      "arguments": [
        {
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.Cart",
            "merchant": {
              "id": "https://www.exampleprovider.com/merchant/id1",
              "name": "Falafel Bite"
            },
            "lineItems": [
              {
                "name": "Falafel Tray",
                "type": "REGULAR",
                "id": "sample_item_offer_id_1",
                "quantity": 1,
                "price": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "9",
                    "nanos": 950000000
                  }
                },
                "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                }
              }
            ],
            "promotions": [
              {
                "coupon": "FOPAACTIVECODE"
              }
            ],
            "extension": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
              "fulfillmentPreference": {
                "fulfillmentInfo": {
                  "pickup": {
                    "pickupTimeIso8601": "P0M"
                  }
                }
              }
            }
          }
        }
      ]
    }
  ],
  "directActionOnly": true,
  "isInSandbox": true
}

Sau đây là phản hồi thanh toán tương ứng của đơn hàng thực hiện nếu chương trình khuyến mãi mã hợp lệ:

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "checkoutResponse": {
              "proposedOrder": {
                "otherItems": [
                  {
                    "name": "Delivery Fees",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    },
                    "type": "DELIVERY"
                  },
                  {
                    "name": "Tax",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 370000000
                      }
                    },
                    "type": "TAX"
                  },
                  {
                    "name": "Promotion",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "-5",
                        "nanos": 0
                      }
                    },
                    "id": "FOPAACTIVECODE",
                    "type": "DISCOUNT"
                  }
                ],
                "cart": {
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Falafel Bite"
                  },
                  "lineItems": [
                    {
                      "name": "Falafel Tray",
                      "type": "REGULAR",
                      "id": "2529103",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "9",
                          "nanos": 950000000
                        }
                      },
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    }
                  ],
                  "promotions": [
                    {
                      "coupon": "FOPAACTIVECODE"
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      }
                    }
                  }
                },
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "9",
                    "nanos": 820000000
                  }
                },
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      },
                      "expiresAt": "2018-06-22T19:30:52.596Z"
                    }
                  ]
                }
              },
              "orderOptions": {},
              "paymentOptions": {
                "googleProvidedOptions": {
                  "tokenizationParameters": {
                    "tokenizationType": "PAYMENT_GATEWAY",
                    "parameters": {
                      "gateway": "stripe",
                      "stripe:publishableKey": "example_stripe_client_key",
                      "stripe:version": "2017-04-06"
                    }
                  },
                  "supportedCardNetworks": [
                    "AMEX",
                    "DISCOVER",
                    "MASTERCARD",
                    "VISA",
                    "JCB"
                  ],
                  "prepaidCardDisallowed": true
                }
              }
            }
          }
        }
      ],
      "suggestions": []
    }
  }
}

Dưới đây là ví dụ về phản hồi thanh toán nếu mã khuyến mãi không hợp lệ:

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "error": {
              "foodOrderErrors": [
                {
                  "error": "PROMO_NOT_RECOGNIZED",
                  "id": "SOMEPROMO",
                  "description": "Coupon not found"
                }
              ],
              "correctedProposedOrder": {
                "cart": {
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Falafel Bite"
                  },
                  "lineItems": [
                    {
                      "id": "sample_item_offer_id_4",
                      "name": "Prawns Biryani",
                      "type": "REGULAR",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "18",
                          "nanos": 750000000
                        }
                      },
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id4",
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    }
                  ],
                  "extension": {
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      }
                    },
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension"
                  },
                  "promotions": []
                },
                "otherItems": [
                  {
                    "name": "Tax",
                    "type": "TAX",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 650000000
                      }
                    }
                  }
                ],
                "termsOfServiceUrl": "https://exampleprovider.com/terms",
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "20",
                    "nanos": 400000000
                  }
                },
                "extension": {
                  "availableFulfillmentOptions": [
                    {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "PT0M"
                        }
                      }
                    }
                  ],
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension"
                }
              },
              "paymentOptions": {
                "googleProvidedOptions": {
                  "prepaidCardDisallowed": false,
                  "billingAddressRequired": true,
                  "tokenizationParameters": {
                    "tokenizationType": "PAYMENT_GATEWAY",
                    "parameters": {
                      "gateway": "braintree",
                      "braintree:apiVersion": "v1",
                      "braintree:sdkVersion": "1.4.0",
                      "braintree:merchantId": "example_braintree_merchant_ID",
                      "braintree:clientKey": "example_braintree_client_key",
                      "braintree:authorizationFingerprint": "example_braintree_fingerprint"
                    }
                  }
                }
              },
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension"
            }
          }
        }
      ]
    }
  }
}

Triển khai tính năng gửi đơn đặt hàng cùng chương trình khuyến mãi

Trong quá trình thực hiện đơn đặt hàng mà bạn gửi, hãy kiểm tra xem đây có phải là lần đầu tiên người dùng đang áp dụng mã khuyến mại. Trong suốt SubmitOrderRequestMessage đang xử lý, bạn có thể kiểm tra điều này bằng cách sử dụng thông tin chi tiết Contact (chẳng hạn như địa chỉ email của người dùng) khỏi đối tượng FoodCartExtension.

Bạn cũng nên kiểm tra lại khả năng áp dụng của mã khuyến mãi:

  • Nếu mã được áp dụng: Xác nhận đơn đặt hàng và đánh dấu phiếu giảm giá là đã sử dụng.
  • Nếu mã không còn áp dụng: Từ chối đơn đặt hàng bằng PROMO_NOT_APPLICABLE lỗi. Bạn có thể cung cấp lý do từ chối cụ thể bằng cơ chế tương tự như FoodOrderUpdateExtension.

Ví dụ

Dưới đây là ví dụ về việc gửi yêu cầu đặt hàng kèm theo chương trình khuyến mãi:

{
  "conversation": {
    "conversationId": "example_conversation_ID"
  },
  "inputs": [
    {
      "intent": "actions.intent.TRANSACTION_DECISION",
      "arguments": [
        {
          "transactionDecisionValue": {
            "order": {
              "finalOrder": {
                "cart": {
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Falafel Bite"
                  },
                  "lineItems": [
                    {
                      "name": "Falafel Tray",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "9",
                          "nanos": 950000000
                        }
                      },
                      "offerId": "https://www.exampleprovider.com/menu/item/addon/offer/id1",
                      "extension": {
                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                      }
                    }
                  ],
                  "promotions": [
                    {
                      "coupon": "FOPAACTIVECODE"
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "pickup": {
                          "pickupTimeIso8601": "P0M"
                        }
                      }
                    },
                    "contact": {
                      "displayName": "Food Ordering",
                      "email": "example.provider@gmail.com",
                      "phoneNumber": "+19993334444",
                      "firstName": "Food",
                      "lastName": "Ordering"
                    }
                  }
                },
                "otherItems": [
                  {
                    "name": "Delivery Fees",
                    "type": "DELIVERY",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "3",
                        "nanos": 500000000
                      }
                    }
                  },
                  {
                    "name": "Tax",
                    "type": "TAX",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "1",
                        "nanos": 370000000
                      }
                    }
                  },
                  {
                    "name": "Promotion",
                    "type": "DISCOUNT",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "-5"
                      }
                    },
                    "id": "FOPAACTIVECODE"
                  },
                  {
                    "name": "Subtotal",
                    "type": "SUBTOTAL",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD",
                        "units": "9",
                        "nanos": 950000000
                      }
                    }
                  },
                  {
                    "name": "Tip",
                    "type": "GRATUITY",
                    "price": {
                      "type": "ESTIMATE",
                      "amount": {
                        "currencyCode": "USD"
                      }
                    }
                  }
                ],
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "9",
                    "nanos": 820000000
                  }
                },
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension"
                }
              },
              "googleOrderId": "example_google_order_ID",
              "orderDate": "2018-06-22T19:30:59.502Z",
              "paymentInfo": {
                "displayName": "example_display_name",
                "googleProvidedPaymentInstrument": {
                  "instrumentToken": "example_instrument_token"
                },
                "paymentType": "PAYMENT_CARD"
              },
              "locale": "en"
            }
          }
        }
      ]
    }
  ],
  "directActionOnly": true,
  "isInSandbox": true
}

Dưới đây là ví dụ về phản hồi đơn đặt hàng được gửi tương ứng từ một đơn hàng thực hiện nếu mã khuyến mại hợp lệ:

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "orderUpdate": {
              "actionOrderId": "example_action_order_ID",
              "orderState": {
                "state": "CREATED",
                "label": "Order is created with partner."
              },
              "updateTime": "2018-06-22T19:31:01.556Z",
              "orderManagementActions": [
                {
                  "type": "CALL_RESTAURANT",
                  "button": {
                    "title": "Call Us",
                    "openUrlAction": {
                      "url": "tel:+1-111-111-1111"
                    }
                  }
                },
                {
                  "type": "EMAIL",
                  "button": {
                    "title": "Email Us",
                    "openUrlAction": {
                      "url": "mailto:example.provider@gmail.com"
                    }
                  }
                },
                {
                  "type": "CUSTOMER_SERVICE",
                  "button": {
                    "title": "Customer Service",
                    "openUrlAction": {
                      "url": "http://www.google.com"
                    }
                  }
                }
              ]
            }
          }
        }
      ],
      "suggestions": []
    }
  }
}

Dưới đây là ví dụ về phản hồi khi gửi đơn đặt hàng nếu mã khuyến mãi không hợp lệ:

"orderUpdate": {
  "actionOrderId": "sample_action_order_id",
  "orderState": {
    "state": "REJECTED",
    "label": "Order rejected."
  },
  "updateTime": "2017-05-10T02:30:00.000Z",
  "rejectionInfo": {
    "type": "PROMO_NOT_APPLICABLE",
    "reason": "Sorry, there's something wrong. Try another code?"
  },
  "orderManagementActions": [
    {
      "type": "CUSTOMER_SERVICE",
      "button": {
        "title": "Contact customer service",
        "openUrlAction": {
          "url": "mailto:support@example.com"
        }
      }
    },
    {
      "type": "EMAIL",
      "button": {
        "title": "Email restaurant",
        "openUrlAction": {
          "url": "mailto:example.provider@example.com"
        }
      }
    },
    {
      "type": "CALL_RESTAURANT",
      "button": {
        "title": "Call restaurant",
        "openUrlAction": {
          "url": "tel:+19993334444"
        }
      }
    }
  ],
  "infoExtension": {
    "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
    "foodOrderErrors": [
      {
        "error": "PROMO_USER_INELIGIBLE",
        "description": "Sorry, you can only use this promotion once."
      }
    ]
  }
}