ग्राहक के ऑर्डर सबमिट करने के बाद, आप ऑर्डर में होने वाले बदलावों की सूचना ग्राहक को दे सकते हैं. इसके लिए, आपको Google को ऑर्डर अपडेट करने का मैसेज भेजना होगा. इसके बाद Google, ऑर्डर करने वाले यूज़र इंटरफ़ेस (यूआई) में मौजूद ग्राहक को वह मैसेज भेज देता है.
ऑर्डर के अपडेट भेजे जाने की सामान्य वजहों में ये शामिल हैं:
- ऑर्डर पूरा करने का अनुमानित समय उपलब्ध हो जाता है या बदल जाता है.
- ऑर्डर की स्थिति बदल जाती है.
- ऑर्डर अब पूरा नहीं किया जा सकता.
- ऑर्डर में शामिल मेन्यू आइटम की कीमत बदल गई है.
- ग्राहक के पास ऑर्डर मैनेज करने का नया तरीका है, जैसे कि ग्राहक सहायता या रेस्टोरेंट का फ़ोन नंबर.
- ऑर्डर की रसीद उपलब्ध हो जाती है.
उदाहरण के लिए, नीचे दिया गया उदाहरण, ऑर्डर के अपडेट का इस्तेमाल करके, ग्राहक के ऑर्डर की स्थिति को CREATED
से बदलकर CONFIRMED
करता है. ऐसा रेस्टोरेंट के ऑर्डर की पुष्टि करने के बाद किया जाता है:
इस्तेमाल का उदाहरण | लागू करने का तरीका |
---|---|
इस्तेमाल का पहला उदाहरण: ऑर्डर की पुष्टि करने का रेस्टोरेंट | CONFIRMED स्टेटस वाला OrderUpdate , Google को भेजा जाता है. इसमें actionOrderId , userVisibleOrderId , orderManagementActions , और estimatedFulfillmentTime शामिल होने चाहिए. |
JSON
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } }, { "type": "CALL_DRIVER", "button": { "title": "Call driver", "openUrlAction": { "url": "tel:+16505554681" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } }
अपने प्रोजेक्ट के लिए, ऑर्डर के अपडेट लागू करने से जुड़ी बुनियादी बातें जानने के लिए, ऑर्डर के अपडेट सिंक करना गाइड पढ़ें.
अगले सेक्शन में, ऑर्डर को अपडेट करने के ज़्यादा बेहतर उदाहरणों के उदाहरण दिए गए हैं.
अस्वीकार किए जाने की स्थिति
नीचे दिए गए उदाहरणों में ऐसे AsyncOrderUpdateRequestMessage
के बारे में बताया गया है जिन्हें कई वजहों से अस्वीकार कर दिया गया है. ऑर्डर अस्वीकार होने की कुछ वजहें ये हैं कि रेस्टोरेंट अब ऑर्डर को पूरा नहीं कर सकता या ऑर्डर की डिलीवरी का पता सीमा से बाहर है.
इस्तेमाल का उदाहरण | लागू करने का तरीका |
---|---|
इस्तेमाल का पहला उदाहरण: ऑर्डर अस्वीकार कर दिया गया है, क्योंकि सेवा देने वाली कंपनी, रेस्टोरेंट से संपर्क नहीं कर सकती या रेस्टोरेंट ऑर्डर पूरा नहीं कर सकता. | Google को REJECTED स्टेटस के साथ
OrderUpdate भेजें. इसमें actionOrderId ,
userVisibleOrderId , orderManagementActions ,
rejectionInfo , और foodOrderError तरह की गड़बड़ी
NO_CAPACITY होनी चाहिए. |
इस्तेमाल का दूसरा उदाहरण: ड्राइवर के उपलब्ध न होने या डिलीवरी के पते की रेंज से बाहर होने की वजह से, ऑर्डर अस्वीकार कर दिया गया है. | Google को REJECTED स्टेटस के साथ
OrderUpdate भेजें. इसमें actionOrderId ,
userVisibleOrderId , orderManagementActions ,
rejectionInfo , और foodOrderError तरह की गड़बड़ी
OUT_OF_SERVICE_AREA होनी चाहिए. |
इस्तेमाल का तीसरा उदाहरण: ऑर्डर अस्वीकार कर दिया गया है, क्योंकि रेस्टोरेंट अचानक बंद हो गया है या बंद हो रहा है. | Google को REJECTED स्टेटस के साथ
OrderUpdate भेजें. इसमें actionOrderId ,
userVisibleOrderId , orderManagementActions ,
rejectionInfo , और foodOrderError तरह की गड़बड़ी
CLOSED होनी चाहिए. |
इस्तेमाल का चौथा उदाहरण: ऑर्डर अस्वीकार कर दिया गया है, क्योंकि कुछ आइटम स्टॉक में नहीं हैं. | Google को REJECTED स्टेटस के साथ
OrderUpdate भेजें. इसमें actionOrderId ,
userVisibleOrderId , orderManagementActions ,
rejectionInfo , और foodOrderError तरह की गड़बड़ी
AVAILABILITY_CHANGED होनी चाहिए. |
इस्तेमाल का पांचवा उदाहरण: ऑर्डर को अस्वीकार करने या उसकी कैटगरी तय न करने की वजह से, उसे अस्वीकार कर दिया जाता है. | Google को REJECTED स्टेटस के साथ
OrderUpdate भेजें. इसमें actionOrderId ,
userVisibleOrderId , orderManagementActions , और
rejectionInfo वाली गड़बड़ी का टाइप UNKNOWN होना चाहिए. |
JSON
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "REJECTED", "label": "Order rejected" }, "updateTime": "2017-05-10T02:30:00.000Z", "rejectionInfo": { "type": "UNKNOWN", "reason": "Sorry, the restaurant cannot take your order right now." }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } }, { "type": "CALL_DRIVER", "button": { "title": "Call driver", "openUrlAction": { "url": "tel:+16505554681" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "foodOrderErrors": [ { "error": "NO_CAPACITY", "description": "Sorry, the restaurant cannot take your order right now." } ] } } } }
JSON
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "REJECTED", "label": "Order rejected" }, "updateTime": "2017-05-10T02:30:00.000Z", "rejectionInfo": { "type": "UNKNOWN", "reason": "Sorry, delivery is currently not available to your address." }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } }, { "type": "CALL_DRIVER", "button": { "title": "Call driver", "openUrlAction": { "url": "tel:+16505554681" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "foodOrderErrors": [ { "error": "OUT_OF_SERVICE_AREA", "description": "Sorry, delivery is currently not available to your address." } ] } } } }
JSON
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "REJECTED", "label": "Order rejected" }, "updateTime": "2017-05-10T02:30:00.000Z", "rejectionInfo": { "type": "UNKNOWN", "reason": "Sorry, the restaurant is closed unexpectedly." }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } }, { "type": "CALL_DRIVER", "button": { "title": "Call driver", "openUrlAction": { "url": "tel:+16505554681" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "foodOrderErrors": [ { "error": "CLOSED", "description": "Sorry, the restaurant is closed unexpectedly." } ] } } } }
JSON
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "REJECTED", "label": "Order rejected" }, "updateTime": "2017-05-10T02:30:00.000Z", "rejectionInfo": { "type": "UNKNOWN", "reason": "Sorry, some of items are not available right now." }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } }, { "type": "CALL_DRIVER", "button": { "title": "Call driver", "openUrlAction": { "url": "tel:+16505554681" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "foodOrderErrors": [ { "error": "AVAILABILITY_CHANGED", "id": "sample_menu_item_id", "description": "Sorry, some of the items are not available right now." } ] } } } }
JSON
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "REJECTED", "label": "Order rejected" }, "updateTime": "2017-05-10T02:30:00.000Z", "rejectionInfo": { "type": "UNKNOWN", "reason": "Sorry, your order is rejected." }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } }, { "type": "CALL_DRIVER", "button": { "title": "Call driver", "openUrlAction": { "url": "tel:+16505554681" } } } ] } } }
रद्द करने की स्थिति
नीचे दिया गया उदाहरण ग्राहक के अनुरोध पर रद्द किए गए ऑर्डर का
AsyncOrderUpdateRequestMessage
दिखाता है.
इस्तेमाल का उदाहरण | लागू करने का तरीका |
---|---|
इस्तेमाल का पहला उदाहरण: ग्राहक के अनुरोध पर ऑर्डर रद्द कर दिया गया है | Google को CANCELLED स्टेटस के साथ
OrderUpdate भेजें. इसमें actionOrderId , userVisibleOrderId , orderManagementActions , और cancellationInfo शामिल होने चाहिए. |
JSON
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "CANCELLED", "label": "Order cancelled" }, "updateTime": "2017-05-10T02:30:00.000Z", "cancellationInfo": { "reason": "Customer requested" }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } }, { "type": "CALL_DRIVER", "button": { "title": "Call driver", "openUrlAction": { "url": "tel:+16505554681" } } } ] } } }
पूरा किया गया स्टेटस
नीचे दिए गए उदाहरण में ऐसे ऑर्डर AsyncOrderUpdateRequestMessage
दिए गए हैं जिन्हें पूरा किया गया है.
इस्तेमाल का उदाहरण | लागू करने का तरीका |
---|---|
इस्तेमाल का पहला उदाहरण: ऑर्डर पूरा हो गया | Google को FULFILLED स्टेटस के साथ
OrderUpdate भेजें. इसमें actionOrderId ,
userVisibleOrderId , और orderManagementActions होना चाहिए. |
JSON
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "FULFILLED", "label": "Order delivered" }, "updateTime": "2017-05-10T02:30:00.000Z", "fulfillmentInfo": { "deliveryTime": "2017-05-10T02:30:00.000Z" }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } }, { "type": "CALL_DRIVER", "button": { "title": "Call driver", "openUrlAction": { "url": "tel:+16505554681" } } } ] } } }
ट्रांज़िट स्थिति
नीचे दिए गए उदाहरण में डिलीवरी के ऐसे ऑर्डर के लिए AsyncOrderUpdateRequestMessage
दिखाया गया है जो ग्राहक को भेजे जाते हैं.
इस्तेमाल का उदाहरण | लागू करने का तरीका |
---|---|
इस्तेमाल का पहला उदाहरण: डिलीवरी का ऑर्डर ट्रांज़िट में है. | Google को IN_TRANSIT स्थिति वाला
OrderUpdate भेजें. इसमें actionOrderId , userVisibleOrderId , orderManagementActions , और estimatedFulfillmentTime शामिल होने चाहिए. |
JSON
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_TRANSIT", "label": "Order is on the way" }, "inTransitInfo": { "updatedTime": "2017-07-17T12:00:00Z" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } }, { "type": "CALL_DRIVER", "button": { "title": "Call driver", "openUrlAction": { "url": "tel:+16505554681" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "PT20M" } } } }
पिक-अप किए जाने की स्थिति
नीचे दिए गए उदाहरण में, ऐसे ऑर्डर के लिए AsyncOrderUpdateRequestMessage
दिखाया गया है जिन्हें ग्राहक पिक अप कर सकता है.
इस्तेमाल का उदाहरण | लागू करने का तरीका |
---|---|
इस्तेमाल का पहला उदाहरण: ऑर्डर पिक अप के लिए तैयार है. | Google को READY_FOR_PICKUP स्टेटस के साथ
OrderUpdate भेजें. इसमें actionOrderId , userVisibleOrderId , orderManagementActions , और estimatedFulfillmentTime शामिल होने चाहिए. |
JSON
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "READY_FOR_PICKUP", "label": "Order is ready for pickup" }, "updateTime": "2018-04-15T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } }, { "type": "CALL_DRIVER", "button": { "title": "Call driver", "openUrlAction": { "url": "tel:+16505554681" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "PT20M" } } } }
खाने की तैयारी की स्थिति
नीचे दिए गए उदाहरण में, उन ऑर्डर के लिए AsyncOrderUpdateRequestMessage
दिखाया गया है जिन्हें रेस्टोरेंट से बनाया जा रहा है.
इस्तेमाल का उदाहरण | लागू करने का तरीका |
---|---|
इस्तेमाल का पहला उदाहरण: रेस्टोरेंट रेस्टोरेंट का ऑर्डर तैयार कर रहा है. | Google को IN_PREPARATION स्टेटस के साथ
OrderUpdate भेजें. इसमें actionOrderId , userVisibleOrderId , orderManagementActions , और estimatedFulfillmentTime शामिल होने चाहिए. |
JSON
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "IN_PREPARATION", "label": "Order is being prepared" }, "updateTime": "2018-04-15T11:30:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } }, { "type": "CALL_DRIVER", "button": { "title": "Call driver", "openUrlAction": { "url": "tel:+16505554681" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "PT20M" } } } }
ऑर्डर का स्टेटस बदल गया है
नीचे दिए गए उदाहरणों में ग्राहक के ऑर्डर में किए गए कई
बदलाव के बारे में बताया गया है.AsyncOrderUpdateRequestMessage
इस्तेमाल का पहला उदाहरण: ऑर्डर पूरा होने में लगने वाले अनुमानित समय को अपडेट करना ज़रूरी है. | ऑर्डर की स्थिति
actionOrderId , userVisibleOrderId , orderManagementAction , और अपडेट किए गए estimatedFulfillmentTime के साथ, Google को OrderUpdate भेजें. |
इस्तेमाल का दूसरा उदाहरण: ऑर्डर की कुल कीमत को अपडेट करना ज़रूरी है. | ऑर्डर की स्थिति के साथ Google को OrderUpdate भेजें,
actionOrderId , userVisibleOrderId ,
orderManagementAction , estimatedFulfillmentTime , और अपडेट किया गया totalPrice . |
इस्तेमाल का तीसरा उदाहरण: ऑर्डर की ऑर्डर मैनेजमेंट से जुड़ी कार्रवाइयों को अपडेट करना ज़रूरी है. | ऑर्डर की स्थिति
actionOrderId , userVisibleOrderId , estimatedFulfillmentTime , और अपडेट किए गए orderManagementActions के साथ, Google को OrderUpdate भेजें. |
JSON
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } }, { "type": "CALL_DRIVER", "button": { "title": "Call driver", "openUrlAction": { "url": "tel:+16505554681" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } }
JSON
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "totalPrice": { "type": "ESTIMATE", "amount": { "currencyCode": "USD", "units": "20", "nanos": 500000000 } }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } }, { "type": "CALL_DRIVER", "button": { "title": "Call driver", "openUrlAction": { "url": "tel:+16505554681" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } }
JSON
{ "isInSandbox": true, "customPushMessage": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "CONFIRMED", "label": "Provider confirmed" }, "receipt": { "userVisibleOrderId": "userVisibleId1234" }, "updateTime": "2017-07-17T12:00:00Z", "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL_RESTAURANT", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } }, { "type": "CALL_DRIVER", "button": { "title": "Call driver", "openUrlAction": { "url": "tel:+16505554681" } } } ], "infoExtension": { "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension", "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z" } } } }