Bir müşteri siparişi gönderdikten sonra, müşteriyi siparişi güncelleme mesajı göndererek sipariş vermesini sağlar. Google daha sonra mesajı gönderebilirsiniz.
Sipariş güncellemelerinin gönderilmesiyle ilgili yaygın nedenler şunlardır:
- Siparişin tahmini sipariş karşılama süresi kullanılabilir hale gelir veya sipariş değişir.
- Siparişin durumu değişir.
- Sipariş artık yerine getirilemiyor.
- Siparişe dahil edilen bir menü öğesinin fiyatı değişti.
- Müşteri, siparişini yönetebileceği yeni bir yönteme (ör. müşteri desteği) sahip olur veya restoranın telefon numarası.
- Siparişin makbuzu hazır hale gelir.
Örneğin, aşağıdaki örnekte
restoran onayladıktan sonra, müşterinin CREATED
adlı satıcıya verdiği sipariş CONFIRMED
sipariş:
Kullanım alanı | Nasıl uygulanır? |
---|---|
1. kullanım alanı: Restoran siparişi onaylar | CONFIRMED durumunda bir OrderUpdate gönderildi
Google'a otomatik olarak gönderin. actionOrderId olmalıdır.
userVisibleOrderId , orderManagementActions ve
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" } } } }
Projenizde sipariş güncellemelerini uygulamanın temelleri için kılavuzu okuyun Eşzamansız sipariş güncellemeleri.
Sonraki bölümlerde, daha gelişmiş sipariş güncelleme senaryolarına ilişkin örnekler sağlanmaktadır.
Reddedildi durumu
Aşağıdaki örneklerde şunun için bir AsyncOrderUpdateRequestMessage
gösterilmektedir:
çeşitli nedenlerle reddedilen siparişler. Reddedilmeyle ilgili bazı örnekler
bunun nedeni restoranın siparişi karşılayamaması veya
Siparişle ilişkili teslimat adresi izin verilen aralığın dışında.
Kullanım alanı | Nasıl uygulanır? |
---|---|
Kullanım alanı 1: Sağlayıcı, sizinle iletişime geçemediği için sipariş reddedildi Restoran ya da restoran siparişi karşılayamıyor. | Şu kişiye REJECTED durumundaki bir OrderUpdate gönder:
Google'a dokunun. actionOrderId olmalıdır.
userVisibleOrderId orderManagementActions ,
rejectionInfo ve foodOrderError hata türü
NO_CAPACITY . |
Kullanım alanı 2: Sürücü müsait olmadığı için sipariş reddedildi veya teslimat adresi izin verilen aralığın dışında. | Şu kişiye REJECTED durumundaki bir OrderUpdate gönder:
Google'a dokunun. actionOrderId olmalıdır.
userVisibleOrderId orderManagementActions ,
rejectionInfo ve foodOrderError hata türü
OUT_OF_SERVICE_AREA . |
Kullanım alanı 3: Restoran kapalı olduğu için sipariş reddedildi veya kapanıyor olabilir. | Şu kişiye REJECTED durumundaki bir OrderUpdate gönder:
Google'a dokunun. actionOrderId olmalıdır.
userVisibleOrderId orderManagementActions ,
rejectionInfo ve foodOrderError hata türü
CLOSED . |
Kullanım alanı 4: Bazı öğeler tükendiği için sipariş reddedildi /stokta. | Şu kişiye REJECTED durumundaki bir OrderUpdate gönder:
Google'a dokunun. actionOrderId olmalıdır.
userVisibleOrderId orderManagementActions ,
rejectionInfo ve foodOrderError hata türü
AVAILABILITY_CHANGED . |
Kullanım alanı 5: Sipariş, bilinmeyen veya kategorize edilmemiş olduğu için reddedilmiştir neden. | Şu kişiye REJECTED durumundaki bir OrderUpdate gönder:
Google'a dokunun. actionOrderId olmalıdır.
userVisibleOrderId , orderManagementActions ve
UNKNOWN hata türü için rejectionInfo . |
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" } } } ] } } }
İptal edildi durumu
Aşağıdaki örnekte şunun için bir AsyncOrderUpdateRequestMessage
gösterilmektedir:
Müşteri talebi üzerine iptal edilen siparişler.
Kullanım alanı | Nasıl uygulanır? |
---|---|
Kullanım alanı 1: Sipariş, müşteri talebi üzerine iptal edilir | Şu kişiye CANCELLED durumundaki bir OrderUpdate gönder:
Google'a dokunun. actionOrderId olmalıdır.
userVisibleOrderId , orderManagementActions ve
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" } } } ] } } }
Tamamlandı durumu
Aşağıdaki örnekte şunun için bir AsyncOrderUpdateRequestMessage
gösterilmektedir:
sipariş edilir.
Kullanım alanı | Nasıl uygulanır? |
---|---|
Kullanım alanı 1: Sipariş karşılandı | Şu kişiye FULFILLED durumundaki bir OrderUpdate gönder:
Google'a dokunun. actionOrderId olmalıdır.
userVisibleOrderId ve 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" } } } ] } } }
Taşıma durumu
Aşağıdaki örnekte şunun için bir AsyncOrderUpdateRequestMessage
gösterilmektedir:
teslimat siparişlerini ifade eder.
Kullanım alanı | Nasıl uygulanır? |
---|---|
Kullanım alanı 1: Teslimat siparişi gönderim sürecinde. | IN_TRANSIT durumuna sahip bir OrderUpdate gönder
Google'a otomatik olarak gönderin. actionOrderId olmalıdır.
userVisibleOrderId , orderManagementActions ve
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" } } } }
Teslim alma için hazır durumu
Aşağıdaki örnekte şunun için bir AsyncOrderUpdateRequestMessage
gösterilmektedir:
teslim almaya hazır siparişler.
Kullanım alanı | Nasıl uygulanır? |
---|---|
Kullanım alanı 1: Sipariş teslim alınmaya hazırdır. | READY_FOR_PICKUP ile OrderUpdate gönderin
durumu Google'a bildirir. actionOrderId olmalıdır.
userVisibleOrderId , orderManagementActions ve
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" } } } }
Hazır gıda durumu
Aşağıdaki örnekte şunun için bir AsyncOrderUpdateRequestMessage
gösterilmektedir:
sipariş ettiğini görebilirsiniz.
Kullanım alanı | Nasıl uygulanır? |
---|---|
Kullanım alanı 1: Sipariş restoran tarafından hazırlanıyor. | IN_PREPARATION ile OrderUpdate gönderin
durumu Google'a bildirir. actionOrderId olmalıdır.
userVisibleOrderId , orderManagementActions ve
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" } } } }
Sipariş değiştirildi durumu
Aşağıdaki örneklerde şunun için bir AsyncOrderUpdateRequestMessage
gösterilmektedir:
Müşterinin siparişinde yapılan çeşitli değişiklikler.
1. kullanım alanı: Tahmini sipariş karşılama süresinin güncellenmesi gerekiyor. | Google'a sipariş durumunu içeren bir OrderUpdate gönderin.
actionOrderId userVisibleOrderId ,
orderManagementAction ve güncellenen
estimatedFulfillmentTime . |
Kullanım alanı 2: Siparişin toplam fiyatının güncellenmesi gerekiyor. | Google'a sipariş durumunu içeren bir OrderUpdate gönderin.
actionOrderId userVisibleOrderId ,
orderManagementAction , estimatedFulfillmentTime ,
ve totalPrice güncellendi. |
Kullanım alanı 3: Siparişle ilgili sipariş yönetimi işlemlerinin güncellendi. | Google'a sipariş durumunu içeren bir OrderUpdate gönderin.
actionOrderId userVisibleOrderId ,
estimatedFulfillmentTime ve güncellenen
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" } } } }