Müşteri sipariş gönderdikten sonra Google'a sipariş güncellemesi mesajı göndererek müşteriyi siparişte yapılan değişiklikler hakkında bilgilendirebilirsiniz. Ardından Google, bu mesajı sipariş arayüzünde müşteriye gönderir.
Sipariş güncellemeleri göndermenin yaygın nedenleri şunlardır:
- Siparişin tahmini sipariş karşılama zamanı kullanılabilir veya değişir.
- Siparişin durumu değişir.
- Sipariş artık karşılanamıyor.
- Siparişe dahil olan menü öğesinin fiyatı değişti.
- Müşterinin, siparişini yönetmenin yeni bir yolu (ör. müşteri desteği veya restoran telefon numarası) vardır.
- Siparişin makbuzu hazır olur.
Aşağıdaki örnekte, restoran siparişi onayladıktan sonra bir müşterinin siparişinin durumunu CREATED
yerine CONFIRMED
olarak değiştirmek için bir sipariş güncellemesi kullanılmaktadır:
Kullanım alanı | Nasıl uygulanır? |
---|---|
Kullanım alanı 1: Restoran siparişi onaylar | CONFIRMED durumundaki bir OrderUpdate Google'a gönderilir. actionOrderId , userVisibleOrderId , orderManagementActions ve estimatedFulfillmentTime içermelidir. |
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 uygulama ile ilgili temel bilgiler için Sipariş güncellemelerini senkronize etme başlıklı kılavuzu okuyun.
Sonraki bölümlerde, daha gelişmiş sipariş güncelleme senaryolarına örnekler verilmiştir.
Reddedildi durumu
Aşağıdaki örneklerde, çeşitli nedenlerle reddedilmiş siparişler için AsyncOrderUpdateRequestMessage
gösterilmektedir. Restoranın siparişi artık yerine getirememesi veya siparişle ilişkili teslimat adresinin aralığın dışında olması, ret nedenlerine örnek gösterilebilir.
Kullanım alanı | Nasıl uygulanır? |
---|---|
1. kullanım alanı: Sağlayıcı restoranla iletişime geçemediği veya restoran siparişi yerine getiremediği için sipariş reddedildi. | Google'a REJECTED durumunda olan bir OrderUpdate gönderin. actionOrderId , userVisibleOrderId , orderManagementActions ,
rejectionInfo ve foodOrderError
NO_CAPACITY hata türüne sahip olmalıdır. |
Kullanım alanı 2: Sürücü uygun olmadığı veya teslimat adresi aralığın dışında olduğu için sipariş reddedildi. | Google'a REJECTED durumunda olan bir OrderUpdate gönderin. actionOrderId , userVisibleOrderId , orderManagementActions ,
rejectionInfo ve foodOrderError
OUT_OF_SERVICE_AREA hata türüne sahip olmalıdır. |
Kullanım alanı 3: Restoran beklenmedik bir şekilde kapatıldığı veya kapatıldığı için sipariş reddedildi. | Google'a REJECTED durumunda olan bir OrderUpdate gönderin. actionOrderId , userVisibleOrderId , orderManagementActions ,
rejectionInfo ve foodOrderError
CLOSED hata türüne sahip olmalıdır. |
Kullanım alanı 4: Öğelerden bazıları stokta olmadığından sipariş reddedilir. | Google'a REJECTED durumunda olan bir OrderUpdate gönderin. actionOrderId , userVisibleOrderId , orderManagementActions ,
rejectionInfo ve foodOrderError
AVAILABILITY_CHANGED hata türüne sahip olmalıdır. |
5. kullanım alanı: Sipariş, bilinmeyen veya kategorize edilmemiş nedenlerle reddedildi. | Google'a REJECTED durumunda olan bir OrderUpdate gönderin. actionOrderId ,
userVisibleOrderId , orderManagementActions ve rejectionInfo
UNKNOWN hata türünde olmalıdır. |
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, müşteri isteği tarafından iptal edilen siparişler için AsyncOrderUpdateRequestMessage
gösterilmektedir.
Kullanım alanı | Nasıl uygulanır? |
---|---|
1. kullanım alanı: Müşteri isteği üzerine sipariş iptal edilir | Google'a CANCELLED durumunda olan bir OrderUpdate gönderin. actionOrderId , userVisibleOrderId , orderManagementActions ve cancellationInfo içermelidir. |
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" } } } ] } } }
Tamamlanma durumu
Aşağıdaki örnekte, yerine getirilen siparişler için bir AsyncOrderUpdateRequestMessage
gösterilmektedir.
Kullanım alanı | Nasıl uygulanır? |
---|---|
1. kullanım alanı: Sipariş karşılanıyor | Google'a FULFILLED durumunda olan bir OrderUpdate gönderin. actionOrderId , userVisibleOrderId ve orderManagementActions içermelidir. |
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" } } } ] } } }
Toplu taşıma durumu
Aşağıdaki örnekte müşteriye iletilen teslimat siparişleri için bir AsyncOrderUpdateRequestMessage
gösterilmektedir.
Kullanım alanı | Nasıl uygulanır? |
---|---|
Kullanım alanı 1: Teslimat siparişi nakliye aşamasındadır. | Google'a IN_TRANSIT durumunda
OrderUpdate gönderin. actionOrderId , userVisibleOrderId , orderManagementActions ve estimatedFulfillmentTime içermelidir. |
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 alınmaya hazır durum
Aşağıdaki örnekte, müşteri tarafından teslim alınmaya hazır olan siparişler için AsyncOrderUpdateRequestMessage
gösterilmektedir.
Kullanım alanı | Nasıl uygulanır? |
---|---|
1. kullanım alanı: Sipariş teslim alınmaya hazırdır. | Google'a READY_FOR_PICKUP durumunda olan bir OrderUpdate gönderin. actionOrderId , userVisibleOrderId , orderManagementActions ve estimatedFulfillmentTime içermelidir. |
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ırlık durumu
Aşağıdaki örnekte, restoran tarafından hazırlanan siparişler için bir AsyncOrderUpdateRequestMessage
gösterilmektedir.
Kullanım alanı | Nasıl uygulanır? |
---|---|
Kullanım alanı 1: Sipariş restoran tarafından hazırlanıyor. | Google'a IN_PREPARATION durumunda olan bir OrderUpdate gönderin. actionOrderId , userVisibleOrderId , orderManagementActions ve estimatedFulfillmentTime içermelidir. |
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şin durumu değişti
Aşağıdaki örneklerde, müşterinin siparişinde yapılan çeşitli değişiklikler için bir AsyncOrderUpdateRequestMessage
gösterilmektedir.
1. Kullanım alanı: Tahmini sipariş karşılama süresinin güncellenmesi gerekir. | Google'a sipariş durumu,
actionOrderId , userVisibleOrderId ,
orderManagementAction ve güncellenen estimatedFulfillmentTime ile birlikte bir OrderUpdate gönderin. |
2. kullanım alanı: Siparişin toplam fiyatının güncellenmesi gerekir. | Google'a sipariş durumu,
actionOrderId , userVisibleOrderId ,
orderManagementAction , estimatedFulfillmentTime ve güncellenen totalPrice ile bir OrderUpdate gönderin. |
Kullanım alanı 3: Siparişin sipariş yönetimi işlemlerinin güncellenmesi gerekir. | Google'a sipariş durumu,
actionOrderId , userVisibleOrderId ,
estimatedFulfillmentTime ve güncellenen orderManagementActions ile birlikte bir OrderUpdate gönderin. |
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" } } } }