หลังจากที่ลูกค้าส่งคำสั่งซื้อแล้ว คุณสามารถแจ้งลูกค้าถึงการเปลี่ยนแปลง โดยส่งข้อความอัปเดตคำสั่งซื้อไปยัง Google จากนั้น Google จะส่งต่อ ถึงลูกค้าภายใน UI การสั่งซื้อ
สาเหตุทั่วไปในการส่งการอัปเดตคำสั่งซื้อมีดังนี้
- เวลาดำเนินการโดยประมาณสำหรับคำสั่งซื้อจะพร้อมใช้งานหรือมีการเปลี่ยนแปลง
- สถานะของคำสั่งซื้อมีการเปลี่ยนแปลง
- ไม่สามารถดำเนินการตามคำสั่งซื้อนี้ได้อีกต่อไป
- ราคาของรายการในเมนูที่รวมอยู่ในคำสั่งซื้อมีการเปลี่ยนแปลง
- ลูกค้ามีวิธีใหม่ในการจัดการคำสั่งซื้อ เช่น การสนับสนุนลูกค้า หรือหมายเลขโทรศัพท์ร้านอาหาร
- เห็นใบเสร็จของคำสั่งซื้อแล้ว
ตัวอย่างเช่น ตัวอย่างต่อไปนี้ใช้การอัปเดตคำสั่งซื้อเพื่อเปลี่ยนสถานะของคำสั่งซื้อ
คำสั่งซื้อของลูกค้าจาก CREATED
ถึง CONFIRMED
หลังจากที่ร้านอาหารยืนยัน
คำสั่งซื้อ:
กรณีการใช้งาน | วิธีติดตั้งใช้งาน |
---|---|
กรณีการใช้งาน 1: ร้านอาหารยืนยันคำสั่งซื้อ | ส่ง OrderUpdate ที่มีสถานะ CONFIRMED แล้ว
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
สำหรับ
คำสั่งซื้อที่ถูกปฏิเสธด้วยเหตุผลหลายประการ ตัวอย่างการปฏิเสธ
คือเมื่อร้านอาหารไม่สามารถดำเนินการตามคำสั่งซื้อได้อีกต่อไป หรือเมื่อ
ที่อยู่สำหรับจัดส่งที่เชื่อมโยงกับคำสั่งซื้ออยู่นอกช่วง
กรณีการใช้งาน | วิธีติดตั้งใช้งาน |
---|---|
กรณีการใช้งาน 1: คำสั่งซื้อถูกปฏิเสธเนื่องจากผู้ให้บริการติดต่อไม่ได้ ร้านอาหารไม่สามารถดำเนินการตามคำสั่งซื้อ | ส่ง OrderUpdate ที่มีสถานะ REJECTED ไปยัง
Google ต้องมี actionOrderId
userVisibleOrderId orderManagementActions
rejectionInfo และ foodOrderError ของประเภทข้อผิดพลาด
NO_CAPACITY |
Use Case 2: ปฏิเสธคำสั่งซื้อเนื่องจากคนขับไม่พร้อมให้บริการ หรือที่อยู่สำหรับจัดส่งอยู่นอกระยะ | ส่ง OrderUpdate ที่มีสถานะ REJECTED ไปยัง
Google ต้องมี actionOrderId
userVisibleOrderId orderManagementActions
rejectionInfo และ foodOrderError ของประเภทข้อผิดพลาด
OUT_OF_SERVICE_AREA |
กรณีการใช้งาน 3: ปฏิเสธคำสั่งซื้อเนื่องจากร้านอาหารปิดอยู่ โดยไม่คาดคิดหรือกำลังจะปิด | ส่ง OrderUpdate ที่มีสถานะ REJECTED ไปยัง
Google ต้องมี actionOrderId
userVisibleOrderId orderManagementActions
rejectionInfo และ foodOrderError ของประเภทข้อผิดพลาด
CLOSED |
กรณีการใช้งาน 4: คำสั่งซื้อถูกปฏิเสธเนื่องจากสินค้าบางรายการหมด ของสต็อก | ส่ง OrderUpdate ที่มีสถานะ REJECTED ไปยัง
Google ต้องมี actionOrderId
userVisibleOrderId orderManagementActions
rejectionInfo และ foodOrderError ของประเภทข้อผิดพลาด
AVAILABILITY_CHANGED |
กรณีการใช้งาน 5: คำสั่งซื้อถูกปฏิเสธเนื่องจากไม่ทราบหรือไม่จัดอยู่ในหมวดหมู่ใดๆ เหตุผล | ส่ง OrderUpdate ที่มีสถานะ REJECTED ไปยัง
Google ต้องมี 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
สำหรับ
คำสั่งซื้อถูกยกเลิกตามคำขอของลูกค้า
กรณีการใช้งาน | วิธีติดตั้งใช้งาน |
---|---|
กรณีการใช้งาน 1: คำสั่งซื้อถูกยกเลิกตามคำขอของลูกค้า | ส่ง OrderUpdate ที่มีสถานะ CANCELLED ไปยัง
Google ต้องมี 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
สำหรับ
คำสั่งซื้อที่ดำเนินการแล้ว
กรณีการใช้งาน | วิธีติดตั้งใช้งาน |
---|---|
กรณีการใช้งาน 1: ดําเนินการตามคําสั่งซื้อแล้ว | ส่ง OrderUpdate ที่มีสถานะ FULFILLED ไปยัง
Google ต้องมี 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
สำหรับ
คำสั่งซื้อการนำส่งที่อยู่ระหว่างการขนส่งไปยังลูกค้า
กรณีการใช้งาน | วิธีติดตั้งใช้งาน |
---|---|
กรณีการใช้งาน 1: คำสั่งซื้อที่นำส่งอยู่ระหว่างการขนส่ง | ส่ง OrderUpdate ที่มีสถานะ IN_TRANSIT
Google โดยอัตโนมัติ ต้องมี 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
สำหรับ
คำสั่งซื้อที่พร้อมให้ลูกค้าไปรับ
กรณีการใช้งาน | วิธีติดตั้งใช้งาน |
---|---|
กรณีการใช้งาน 1: พร้อมให้ไปรับแล้ว | ส่ง OrderUpdate พร้อม READY_FOR_PICKUP
สถานะไปยัง Google ต้องมี 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
สำหรับ
คำสั่งซื้อที่ร้านอาหารจัดเตรียมไว้
กรณีการใช้งาน | วิธีติดตั้งใช้งาน |
---|---|
กรณีการใช้งาน 1: ร้านอาหารจัดเตรียมอาหารตามคำสั่งซื้อ | ส่ง OrderUpdate พร้อม IN_PREPARATION
สถานะไปยัง Google ต้องมี 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
สำหรับ
การเปลี่ยนแปลงต่างๆ ที่เกิดขึ้นกับคำสั่งซื้อของลูกค้า
กรณีการใช้งาน 1: ต้องอัปเดตเวลาดำเนินการโดยประมาณ | ส่ง OrderUpdate ให้ Google พร้อมสถานะการสั่งซื้อ
actionOrderId userVisibleOrderId
orderManagementAction และอัปเดต
estimatedFulfillmentTime |
กรณีการใช้งาน 2: ต้องอัปเดตราคารวมของคำสั่งซื้อ | ส่ง OrderUpdate ให้ Google พร้อมสถานะการสั่งซื้อ
actionOrderId userVisibleOrderId
orderManagementAction estimatedFulfillmentTime
และ totalPrice ที่อัปเดตแล้ว |
กรณีการใช้งาน 3: การดำเนินการจัดการคำสั่งซื้อของคำสั่งซื้อจะต้อง อัปเดตแล้ว | ส่ง OrderUpdate ให้ Google พร้อมสถานะการสั่งซื้อ
actionOrderId userVisibleOrderId
estimatedFulfillmentTime และอัปเดต
orderManagementActions |
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" } } } }