প্রচারগুলি আপনাকে এবং Google-এর জন্য একটি উপায় প্রদান করে যাতে গ্রাহকদের ডিসকাউন্ট মূল্যের সাথে আপনার খাবারের অর্ডারিং পরিষেবা ব্যবহার করে দেখতে উৎসাহিত করা যায়। Google আপনার প্রচার ব্যবস্থাপনা সিস্টেমের সাথে আপনার অর্ডারিং এন্ড-টু-এন্ড অ্যাকশন একীভূত করতে সমর্থন করে।
নিম্নলিখিত ধরনের ডিসকাউন্ট সমর্থিত:
- Google-স্পন্সরকৃত প্রচার কোড: প্রচার কোড যা Google দ্বারা স্বয়ংক্রিয়ভাবে পূর্বে পূরণ করা হয় বা ব্যবহারকারীদের দ্বারা প্রবেশ করানো হয়।
- থার্ড-পার্টি-স্পন্সরকৃত প্রচার কোড: ব্যবহারকারীদের প্রবেশের জন্য প্রচার কোড, আপনার খাদ্য অর্ডার পরিষেবা দ্বারা সরবরাহ করা হয়।
- থার্ড-পার্টি-স্পন্সর করা স্বয়ংক্রিয় ডিসকাউন্ট: ডিসকাউন্ট যা আপনার খাবার অর্ডার পরিষেবা স্বয়ংক্রিয়ভাবে প্রমোশন কোড ছাড়াই প্রযোজ্য হয়।
ডিসকাউন্টের ধরন নির্বিশেষে, Google আপনার খাবারের অর্ডার পূরণে একটি চেকআউট কল করে ডিসকাউন্ট যাচাই ও প্রয়োগ করতে।
একটি খাদ্য অর্ডারিং পরিষেবার বিকাশকারী হিসাবে, আপনাকে বৈধ প্রচার কোডগুলির জন্য ছাড় গণনা করতে বা অবৈধ প্রচার কোডগুলির জন্য ত্রুটি পাঠাতে, প্রচার কোড রিডেম্পশন সীমাবদ্ধতাগুলি পরিচালনা করতে এবং প্রতিদানের জন্য অ্যাকাউন্টিং ডেটা ট্র্যাক করতে আপনার বাস্তবায়নে কিছু পরিবর্তন করতে হবে৷
কিভাবে প্রচার প্রক্রিয়া
প্রচারগুলিকে সমর্থন করে এমন একটি পূর্ণতা বাস্তবায়ন করতে, নিম্নলিখিতগুলি করুন:
- প্রচার ইন্টিগ্রেশন সেট আপ করুন . (আপনি যদি Google-স্পন্সরকৃত প্রচার কোড ব্যবহার না করেন তাহলে এই ধাপটি এড়িয়ে যান।)
- প্রচারের সাথে চেকআউট বাস্তবায়ন করুন ।
- পদোন্নতির সাথে সাবমিট অর্ডার বাস্তবায়ন করুন ।
প্রচার ইন্টিগ্রেশন সেট আপ করুন
আপনি যদি Google-স্পন্সর করা প্রচার কোডগুলি ব্যবহার করার পরিকল্পনা করেন তবে কীভাবে প্রচার সংহতকরণ সেট আপ করবেন তা এই বিভাগে বর্ণনা করে৷ আপনি যদি শুধুমাত্র প্রচার কোড বা ডিসকাউন্ট সমর্থন করতে চান যা একটি তৃতীয় পক্ষ স্পনসর করে, আপনি আপনার নিজস্ব সেটআপ নির্দিষ্ট করতে পারেন এবং এই বিভাগটি এড়িয়ে যেতে পারেন।
Google স্পনসর করার জন্য প্রচারের ধরন এবং ইন্টিগ্রেশন সেট আপ করতে আপনার সাথে যোগাযোগ করে তা নির্দিষ্ট করে৷ আমরা নিম্নলিখিত বিবরণ প্রদান করি:
- ছাড়ের পরিমাণ।
- ন্যূনতম কার্ট মান।
- প্রচার কোড ব্যবহার করার জন্য শুরু এবং শেষ তারিখ।
- প্রচার প্রচারণার জন্য বাজেট করা সর্বোচ্চ ডলারের পরিমাণ।
- প্রচার কোডগুলি যতবার ব্যবহার করা যেতে পারে।
প্রচার কোডের উদাহরণ:
-
FopaNewUser
: 10% (নির্দিষ্ট শতাংশ) সর্বোচ্চ $50 ছাড়। -
FopaMoreThan50
: $10 (নির্দিষ্ট পরিমাণ বন্ধ)।
Google যদি কোডের প্রয়োগ বন্ধ করার সিদ্ধান্ত নেয়, তাহলে আপনার সাথে যোগাযোগ করা হবে।
বিতরণ সেট আপ করুন
বিতরণ প্রক্রিয়া সেট আপ করতে আপনার Google EAP পরামর্শদাতার সাথে যোগাযোগ করুন। Google শুধুমাত্র Google-স্পন্সর করা প্রচার কোডের সাথে জড়িত লেনদেনগুলিকে ফেরত দেয় যদি চূড়ান্ত অর্ডারের স্থিতি নিম্নলিখিতগুলির মধ্যে একটি হয়:
-
CONFIRMED
-
IN_TRANSIT
-
READY_FOR_PICKUP
-
IN_PREPARATION
-
FULFILLED
প্রচারের সাথে চেকআউট বাস্তবায়ন করুন
আপনি যখন প্রচার কোড সমর্থন করেন (Google-স্পন্সর বা তৃতীয়-পক্ষ-স্পন্সর) তখন এই বিভাগটি চেকআউট প্রক্রিয়াকরণ বাস্তবায়নের বর্ণনা দেয়। থার্ড-পার্টি-স্পন্সর করা স্বয়ংক্রিয় ডিসকাউন্টের জন্য, আপনাকে CheckoutResponseMessage
এ ডিসকাউন্ট লাইন আইটেমটি ফেরত দিতে হবে (কোন প্রচার কোড চেক করার প্রয়োজন নেই)।
খাবারের অর্ডার পূরণের সময়, Google আপনার পূর্ণতার জন্য CheckoutRequestMessage
এ একটি একক প্রচার কোড পাঠায়। বারবার চেকআউট অনুরোধে ব্যবহারকারীরা তাদের কার্ট বা প্রচার কোড পরিবর্তন করতে পারে।
এটি প্রথমবার ব্যবহারকারী একটি প্রচার কোড প্রয়োগ করেছে কিনা তা পরীক্ষা করতে, নিম্নলিখিতগুলি করুন:
- Google-স্পন্সরকৃত প্রচার কোড : Google চেক করে যে একজন প্রত্যাবর্তনকারী ব্যবহারকারী আবার একই প্রচার কোড ব্যবহার করার চেষ্টা করছেন কিনা; আপনার কিছু করার দরকার নেই।
- থার্ড-পার্টি-স্পন্সর করা প্রচার কোড বা স্বয়ংক্রিয় ডিসকাউন্ট : আপনি যদি অ্যাকাউন্ট লিঙ্কিং এবং ব্যবহারকারীর অপ্ট-ইন প্রয়োগ না করে থাকেন, তাহলে চেকআউট অনুরোধ প্রক্রিয়াকরণের সময় আপনি ব্যবহারকারীর বিবরণ পরীক্ষা করতে পারবেন না। পরিবর্তে,
FoodCartExtension
অবজেক্ট থেকেContact
বিবরণ (যেমন ব্যবহারকারীর ইমেল ঠিকানা) ব্যবহার করেSubmitOrderRequestMessage
প্রক্রিয়াকরণের সময় এটি পরীক্ষা করুন।
সর্বশেষ চেকআউট অনুরোধের উপর ভিত্তি করে ত্রুটিগুলি সনাক্ত করুন বা আপনার পূরণের সাথে ডিসকাউন্ট গণনা করুন৷ এটি করার সময়, নিশ্চিত করুন যে আপনার সিস্টেমটি বাসি রাষ্ট্রীয় তথ্য রাখে না।
প্রচার কোড বৈধতা পরীক্ষা করুন
আপনার পূর্ণতা একটি প্রদত্ত প্রচার কোডের বৈধতা বা যোগ্যতা যাচাই করা উচিত, যেমন মেয়াদ শেষ হওয়ার তারিখ, সর্বোচ্চ ব্যবহার এবং সর্বোচ্চ ছাড়। তারপরে, গণনাকৃত ডিসকাউন্ট সহ CheckoutResponseMessage
এ যথাযথভাবে সাড়া দিন বা প্রচার কোড প্রয়োগ করা না গেলে foodOrderErrors
সহ। আপনি যদি প্রচার কোডের সাথে ত্রুটিগুলি সনাক্ত করেন তবে প্রচারগুলির সাথে ত্রুটিগুলি পরিচালনা করুন -এ বর্ণিত প্রক্রিয়াটি অনুসরণ করুন৷
নিম্নলিখিত স্নিপেট একটি প্রচার কোডের জন্য একটি উদাহরণ foodOrderErrors
দেখায়। নিশ্চিত করুন যে correctedProposedOrder
প্রচার নোড অন্তর্ভুক্ত নয়৷
"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 ...}
ডিসকাউন্ট গণনা
যদি প্রচার কোডটি বৈধ হয়, তাহলে আপনার পূর্ণতা ডিসকাউন্ট ডলারের মূল্য গণনা করা উচিত এবং otherItems
অ্যারেতে গণনাকৃত ডিসকাউন্ট মান সহ একটি CheckoutResponseMessage
ফেরত পাঠাতে হবে। মোট অর্ডার মূল্য নেতিবাচক হতে হবে না. ডিসকাউন্টের পরিমাণ কার্টের পরিমাণ ছাড়িয়ে গেলে, অর্ডারের মোট মূল্য $0 রেন্ডার করতে সর্বোচ্চ ডলারের পরিমাণ ফেরত পাঠান।
নিম্নলিখিত স্নিপেট প্রচারমূলক ছাড়ের জন্য একটি উদাহরণ CheckoutResponseMessage
বিভাগ দেখায়:
"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",
}
]
}
অব্যবহৃত প্রচার প্রকাশ করুন
প্রতিটি চেকআউট অনুরোধ একটি জমা অর্ডার অনুরোধের দিকে পরিচালিত করে না। যদি আপনার পরিপূর্ণতা চেকআউট কলের সময় একটি প্রচারকে আটকে রাখে, তাহলে নিশ্চিত করুন যে একটি নির্দিষ্ট সময়ের পরে সাবমিট অর্ডারের মাধ্যমে প্রচারটি দাবি করা না হলে হোল্ড ছেড়ে দেওয়ার জন্য আপনার কাছে একটি ব্যবস্থা আছে। এটি নিশ্চিত করে যে আপনার খাদ্য অর্ডারিং পরিষেবা সঠিক প্রচারাভিযানের কোটা বজায় রাখে।
প্রচারের সাথে ত্রুটিগুলি পরিচালনা করুন
যদি আপনার পূর্ণতা নির্ধারণ করে যে একটি CheckoutRequestMessage
থেকে প্রচারিত কোডটি বৈধ নয় (উদাহরণস্বরূপ, এটি মেয়াদ শেষ হয়ে গেছে, অবৈধ বা স্বীকৃত নয়), একটি CheckoutResponseMessage
পাঠান একটি foodOrderError
সহ যাতে প্রযোজ্য ত্রুটি কোড এবং কারণ টেক্সট সহ correctedProposedOrder
paymentOptions
বস্তু
যদি আপনার পূর্ণতা একই অনুরোধ থেকে একাধিক প্রচার কোড ত্রুটি খুঁজে পায়, তাহলে পুনরুদ্ধারযোগ্য ত্রুটিগুলি ফেরত পাঠানোর আগে অপুনরুদ্ধারযোগ্য ত্রুটিগুলি ফেরত পাঠান৷ আপনার চেকগুলিকে নিম্নরূপ অগ্রাধিকার দিন (উচ্চ থেকে নিম্ন অগ্রাধিকার পর্যন্ত):
-
PROMO_NOT_RECOGNIZED
-
PROMO_EXPIRED
-
PROMO_USER_INELIGIBLE
-
PROMO_ORDER_INELIGIBLE
-
PROMO_NOT_APPLICABLE
উদাহরণ
এখানে একটি প্রচার কোড সহ একটি চেকআউট অনুরোধের একটি উদাহরণ রয়েছে:
{ "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 }
প্রচার কোডটি বৈধ হলে পূর্ণতা থেকে অনুরূপ চেকআউট প্রতিক্রিয়া এখানে রয়েছে:
{ "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": [] } } }
প্রচার কোডটি অবৈধ হলে চেকআউট প্রতিক্রিয়ার একটি উদাহরণ এখানে দেওয়া হল:
{ "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" } } } ] } } }
পদোন্নতির সাথে সাবমিট অর্ডার বাস্তবায়ন করুন
আপনার সাবমিট অর্ডার পূরণে, ব্যবহারকারী এই প্রথম কোনো প্রচার কোড প্রয়োগ করছেন কিনা তা পরীক্ষা করুন। SubmitOrderRequestMessage
প্রক্রিয়াকরণের সময়, আপনি FoodCartExtension
অবজেক্ট থেকে Contact
বিবরণ (যেমন ব্যবহারকারীর ইমেল ঠিকানা) ব্যবহার করে এটি পরীক্ষা করতে পারেন।
আপনি প্রচার কোডের প্রযোজ্যতা পুনরায় পরীক্ষা করা উচিত:
- যদি কোডটি প্রযোজ্য হয়: অর্ডারটি নিশ্চিত করুন এবং কুপন রিডিম হয়েছে বলে চিহ্নিত করুন।
- যদি কোডটি আর প্রযোজ্য না হয়:
PROMO_NOT_APPLICABLE
ত্রুটি সহ অর্ডারটি প্রত্যাখ্যান করুন৷ আপনিFoodOrderUpdateExtension
এর মতো একই পদ্ধতি ব্যবহার করে একটি নির্দিষ্ট প্রত্যাখ্যানের কারণ প্রদান করতে পারেন।
উদাহরণ
এখানে প্রচার সহ একটি জমা অর্ডার অনুরোধের একটি উদাহরণ:
{ "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 }
প্রচার কোড বৈধ হলে একটি পূর্ণতা থেকে সংশ্লিষ্ট জমা অর্ডার প্রতিক্রিয়ার একটি উদাহরণ এখানে দেওয়া হল:
{ "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": [] } } }
প্রচার কোডটি অবৈধ হলে সাবমিট অর্ডার প্রতিক্রিয়ার একটি উদাহরণ এখানে দেওয়া হল:
"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." } ] } }