खरीदारों को पिकअप शेड्यूल करने में मदद करने के लिए, ऑर्डर पूरा करने में उनकी मदद की जा सकती है
खाने के ऑर्डर की डिलीवरी पहले से करनी होगी. इस सहायता को
ग्राहक को आइटम भेजने के बाद, एक ऐसा सेवा इन्वेंट्री फ़ीड बनाएं जो उपयोगकर्ताओं के लिए, कारोबार के खुले होने के समय की जानकारी देता हो
पहले से ऑर्डर करने के लिए, जैसा कि इन्वेंट्री फ़ीड स्कीमा में बताया गया है
(AdvanceServiceDeliveryHoursSpecification
).
पहले से ऑर्डर करने के लिए स्लॉट
Google, 7 दिनों तक के लिए 15 मिनट के हिसाब से ऐडवांस ऑर्डर स्लॉट उपलब्ध कराता है
ग्राहक, रेस्टोरेंट या सेवा को कितने समय तक डिलीवर करेगा (जैसा कि
AdvanceServiceDeliveryHoursSpecification
).
आगे दिए गए ऑर्डर स्लॉट को फिर से पाने के लिए, नीचे दी गई वैल्यू का इस्तेमाल करें
चेकआउट के समय FoodCartExtension
ऑब्जेक्ट का fulfillmentPreference
फ़ील्ड:
PickupInfo.pickupTimeIso8601
DeliveryInfo.deliveryTimeIso8601
चेकआउट के समय एडवांस ऑर्डर लागू करना
नीचे दी गई टेबल में बताया गया है कि आप जब उपयोगकर्ता ऑर्डर करने की कोशिश करते हैं, तब चेकआउट के समय रिस्पॉन्स मिलता है.
स्थिति | ग्राहक को आइटम भेजने का व्यवहार |
---|---|
अनुरोध किए गए स्लॉट के लिए पहले से ऑर्डर किया जा सकता है. | P0M ("जल्द से जल्द") स्वीकार करें या
FUTURE_SLOT कार्ट की मदद से एक ProposedOrder बनाएं और
एक ही स्लॉट है. स्लॉट स्वीकार करने वाले चेकआउट रिस्पॉन्स के उदाहरण के लिए, यह देखें
कोड स्निपेट में बदल दिया जाएगा. |
अनुरोध किए गए स्लॉट के लिए पहले से किया गया ऑर्डर पूरा नहीं किया जा सकता. | ग्राहक को प्रॉडक्ट भेजने में ये चीज़ें होनी चाहिए:
वैकल्पिक स्लॉट का प्रस्ताव देने वाले चेकआउट रिस्पॉन्स के उदाहरण के लिए, यह देखें कोड स्निपेट में बदल दिया जाएगा. |
ऑर्डर पूरा करने के लिए दूसरे स्लॉट
चेकआउट के समय, अगर Google के सुझाए गए ऑर्डर अराउंड स्लॉट ठीक नहीं हैं, तो
CheckoutResponseMessage
का इस्तेमाल करके, ग्राहक को आइटम के दूसरे विकल्पों के सुझाव मिल सकते हैं
ऑब्जेक्ट है.
ऐडवांस ऑर्डर के स्लॉट तय करने के लिए, चेकआउट के अनुरोध का जवाब
FoodErrorExtension
और ये वैल्यू सेट करें:
foodOrderErrors
पैरामीटर में, गड़बड़ी का टाइप बताएं (जैसेUNAVAILABLE_SLOT
,NO_CAPACITY
याCLOSED
).correctedProposedOrder
पैरामीटर में, विकल्प के तौर परP0M
या उपलब्ध कराएंavailableFulfillmentOptions
के ज़रिएFUTURE_SLOT
की वैल्यू.
दूसरे स्लॉट, ऑर्डर करने के बाद अगले सात दिनों के लिए होने चाहिए प्लेसमेंट और इसमें वे सभी स्लॉट शामिल कर सकते हैं जिनमें उपयोगकर्ता का अनुरोध किया गया कार्ट पूरा किया जाना चाहिए.
उदाहरण के लिए, मान लें कि लंच स्पेशल सिर्फ़ सोमवार से शुक्रवार तक उपलब्ध है सुबह 11 बजे से दोपहर 1 बजे तक. इसके बाद उपयोगकर्ता अपने कार्ट में खास लंच जोड़ने की कोशिश करता है, लेकिन उनका चुना हुआ स्लॉट उपलब्ध नहीं है. इस मामले में, ग्राहक को प्रॉडक्ट बेचने के लिए ज़रूरी है कि कार्ट में सिर्फ़ दोपहर के खाने का समय बनाए रखें और सिर्फ़ सुबह 11 बजे से दोपहर 1 बजे के स्लॉट ही दिखाएं अगले सात दिनों के लिए
आपको correctedProposedOrder.Cart.fulfillmentPreference
ऑब्जेक्ट को छोड़ देना चाहिए
पढ़ें.
अगर स्लॉट उपलब्ध नहीं हैं या रेस्टोरेंट या सेवा में स्लॉट उपलब्ध नहीं हैं
के लिए ऐडवांस ऑर्डर का इस्तेमाल किया जाता है, तो आपको
correctedProposedOrder
.
ऑर्डर पूरा करने और Google के बीच होने वाले JSON मैसेज के लिए, नीचे दिए गए उदाहरण देखें चेकआउट के अनुरोध और ऐडवांस ऑर्डर के लिए रिस्पॉन्स फ़्लो के दौरान, जब रेस्टोरेंट या सेवा पहले से ऑर्डर करने के लिए उपलब्ध है.
उदाहरण: डिलीवरी स्लॉट के साथ CheckoutRequest
नीचे दिए गए स्निपेट में, ऐडवांस ऑर्डर के साथ चेकआउट के अनुरोध का एक उदाहरण दिया गया है डिलीवरी स्लॉट.
{
"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": "Cucina Venti"
},
"lineItems": [
{
"name": "Sizzling Prawns Dinner",
"type": "REGULAR",
"id": "sample_item_offer_id_1",
"offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
"quantity": 1,
"price": {
"type": "ESTIMATE",
"amount": {
"currencyCode": "USD",
"units": "16",
"nanos": 750000000
}
},
}
],
"extension": {
"@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
"fulfillmentPreference": {
"fulfillmentInfo": {
"delivery": {
// Deliver at 6:30PM.
"deliveryTimeIso8601": "2017-12-14T18:30:00-07:00"
}
}
},
"location": {
...
}
}
}
}
]
}
]
}
उदाहरण: स्लॉट स्वीकार करना CheckoutResponse में है
नीचे दिया गया स्निपेट, चेकआउट रिस्पॉन्स का एक उदाहरण दिखाता है, जिसमें आपके वाहन की बिक्री की जानकारी दी गई है यह विकल्प, ऐडवांस ऑर्डर के लिए सुझाए गए स्लॉट स्वीकार करता है.
{
"expectUserResponse": false,
"finalResponse": {
"richResponse": {
"items": [
{
"structuredResponse": {
"checkoutResponse": {
"proposedOrder": {
"id": "sample_proposed_order_id_1",
"cart": {
"merchant": {
"id": "https://www.exampleprovider.com/merchant/id1",
"name": "Falafel Bite"
},
"lineItems": [
{
"name": "Sizzling Prawns Dinner",
"type": "REGULAR",
"id": "sample_item_offer_id_1",
"offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
"quantity": 1,
"price": {
"type": "ESTIMATE",
"amount": {
"currencyCode": "USD",
"units": "16",
"nanos": 750000000
}
},
}
],
"extension": {
"@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
"fulfillmentPreference": {
"fulfillmentInfo": {
"delivery": {
// Same as the time in the request.
"deliveryTimeIso8601": "2017-12-14T18:30:00-07:00"
}
}
},
"location": {
...
}
}
},
"totalPrice": {
"type": "ESTIMATE",
"amount": {
// Represents $16.75
"currencyCode": "USD",
"units": "16",
"nanos": 750000000
}
},
"extension": {
"@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
// Send whole proposed order back.
"availableFulfillmentOptions": [
"fulfillmentInfo": {
"delivery": {
// Same as the time in the request.
"deliveryTimeIso8601": "2017-12-14T18:30:00-07:00"
}
}
]
}
},
"paymentOptions": {
...
}
}
}
}
]
}
}
}
उदाहरण: वैकल्पिक स्लॉट के साथ CheckoutResponse
नीचे दिया गया स्निपेट, चेकआउट रिस्पॉन्स का एक उदाहरण दिखाता है, जिसमें आपके वाहन की बिक्री की जानकारी दी गई है
ऐडवांस ऑर्डर स्लॉट का सुझाव देता है. ध्यान दें कि
correctedProposedOrder.Cart.fulfillmentPreference
ऑब्जेक्ट को इसमें छोड़ा जाना चाहिए
आपका जवाब.
{
"expectUserResponse": false,
"finalResponse": {
"richResponse": {
"items": [
{
"structuredResponse": {
"error": {
"@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension",
"foodOrderErrors": [
{
"error": "UNAVAILABLE_SLOT", // Cart level error
"description": "The restaurant is closed."
}
],
"correctedProposedOrder": {
// Send whole original cart back,
// without the fulfillmentPreference.
"cart": {
...
},
"otherItems": {
...
},
"totalPrice": {
...
},
"extension": {
"@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
"availableFulfillmentOptions": [
"fulfillmentInfo": {
"delivery": {
"deliveryTimeIso8601": "2017-12-14T19:00:00-07:00"
}
},
"fulfillmentInfo": {
"delivery": {
"deliveryTimeIso8601": "2017-12-14T19:30:00-07:00"
}
},
"fulfillmentInfo": {
"delivery": {
"deliveryTimeIso8601": "2017-12-14T20:00:00-07:00"
}
}
]
}
},
"paymentOptions": {
...
}
}
}
}
]
}
}
}
सबमिट करने के दौरान एडवांस ऑर्डर लागू करना
ऑर्डर सबमिट करते समय, अगर पहले से ऑर्डर करने के स्लॉट में कोई समस्या आती है, तो
SubmitOrderResponseMessage
में वजह शामिल होनी चाहिए (जैसे
UNAVAILABLE_SLOT
या UNKNOWN
) के लिए RejectionInfo
ऑब्जेक्ट में.
इसमें ऑर्डर की स्थिति को CREATED
से CONFIRMED
में अपडेट करें
OrderState
ऑब्जेक्ट तब दिखाएं, जब सेवा देने वाली कंपनी ऑर्डर स्वीकार कर ले. यह शामिल करें
उपयोगकर्ता को भेजे जाने वाले आपके ईमेल में समय स्लॉट चुना गया है.
अगर आपका ऑर्डर पूरा होने पर, ऑर्डर बाद में रेस्टोरेंट को भेजा जाता है, तो Google को एसिंक्रोनस ऑर्डर अपडेट कार्रवाई का इस्तेमाल करके अपडेट करें.
ऑर्डर का जवाब सबमिट करने के लिए, OrderUpdate
ऑब्जेक्ट में या
बाद के एसिंक्रोनस ऑर्डर अपडेट में,
estimatedFulfillmentTimeIso8601
का मान इस तरह सेट किया गया है:
- जब ऑर्डर की स्थिति
CREATED
याCONFIRMED
हो, तो वैल्यू को डिलीवरी या पिकअप का समय, जिसे उपयोगकर्ता ने ऐडवांस ऑर्डर के लिए शेड्यूल किया है. - जब रेस्टोरेंट से, डिलीवरी का अनुमानित समय ज़्यादा सटीक हो या सेवा के लिए, मान को डिलीवरी या पिकअप के समय के अनुमानित समय पर सेट करें.
उदाहरण: डिलीवरी स्लॉट के साथ SendOrderRequest
नीचे दिया गया स्निपेट सबमिट करें आदेश अनुरोध का एक उदाहरण दिखाता है, जो एडवांस ऑर्डर स्लॉट जिसे उपयोगकर्ता ने चुना है.
{
"inputs": [
{
"intent": "actions.intent.TRANSACTION_DECISION",
"arguments": [
{
"transactionDecisionValue": {
"order": {
"finalOrder": {
"cart": {
"notes": "Guest prefers their food to be hot when it is delivered.",
"merchant": {
"id": "https://www.exampleprovider.com/merchant/id1",
"name": "Cucina Venti"
},
"lineItems": [
{
"name": "Sizzling Prawns Dinner",
"type": "REGULAR",
"id": "sample_item_offer_id_1",
"offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
"quantity": 1,
"price": {
"type": "ESTIMATE",
"amount": {
"currencyCode": "USD",
"units": "16",
"nanos": 750000000
}
}
}
],
"extension": {
"@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
"fulfillmentPreference": {
"fulfillmentInfo": {
"delivery": {
"deliveryTimeIso8601": "2017-12-14T18:30:00-07:00"
}
}
}
"contact": {
...
}
}
},
"totalPrice": {
"type": "ESTIMATE",
"amount": {
"currencyCode": "USD",
"units": "16",
"nanos": 750000000
}
},
"id": "sample_final_order_id",
"extension": {
// Send whole proposed order back.
"availableFulfillmentOptions": [
"fulfillmentInfo": {
"delivery": {
"deliveryTimeIso8601": "2017-12-14T18:30:00-07:00"
}
]
}
},
"googleOrderId": "sample_google_order_id",
"orderDate": "2017-07-17T12:00:00Z",
"paymentInfo": {
...
}
}
}
}
]
}
]
}
उदाहरण: सबमिट करने का अनुरोध स्वीकार करने से जुड़ा ऑर्डर
नीचे दिया गया स्निपेट सबमिट किए गए ऑर्डर के जवाब का एक उदाहरण दिखाता है, जहां आपके ग्राहक को ऑर्डर पूरा करने पर, इस बात की पुष्टि की जाती है कि उसने उपयोगकर्ता का ऐडवांस ऑर्डर स्वीकार कर लिया है.
{
"expectUserResponse": false,
"finalResponse": {
"richResponse": {
"items": [
{
"structuredResponse": {
"orderUpdate": {
"actionOrderId": "sample_action_order_id",
"orderState": {
"state": "CREATED",
"label": "Order placed"
},
"receipt": {
"userVisibleOrderId": "userVisibleId1234"
},
"updateTime": "2017-07-17T12:00:00Z",
"orderManagementActions": [
...
],
"infoExtension": {
"@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
// Same as the user selected time.
"estimatedFulfillmentTimeIso8601": "2017-12-14T18:30:00-07:00"
}
}
}
}
]
}
}
}
उदाहरण: स्लॉट उपलब्ध न होने की वजह से, SendOrderResponse पर ऑर्डर अस्वीकार हो गया
नीचे दिया गया स्निपेट सबमिट किए गए ऑर्डर के जवाब का एक उदाहरण दिखाता है, जहां आपके स्लॉट उपलब्ध न होने की वजह से, उपयोगकर्ता के ऐडवांस ऑर्डर को पूरा नहीं किया जा सकता.
{
"expectUserResponse": false,
"finalResponse": {
"richResponse": {
"items": [
{
"structuredResponse": {
"orderUpdate": {
"actionOrderId": "sample_action_order_id",
"orderState": {
"state": "REJECTED",
"label": "Unavailable slot"
},
"rejectionInfo": {
// Note that this UNAVAILABLE_SLOT is different from the enum
// with the same name proposed for FoodOrderError.
"state": "UNAVAILABLE_SLOT",
"label": "Unavailable slot"
},
"updateTime": "2017-07-17T12:00:00Z",
"orderManagementActions": [
...
]
}
}
}
]
}
}
}
पहले से किए जाने वाले ऑर्डर के उदाहरण
AdvanceServiceDeliveryHoursSpecification
टाइप का इस्तेमाल, यह बताने के लिए किया जा सकता है
डिलीवरी या पिक अप के समय की जानकारी दें, ताकि लोग अपना ऑर्डर पहले से शेड्यूल कर सकें.
ध्यान दें: दो अलग-अलग टाइम विंडो हैं, जिनके बारे में आपको बताना होगा
सेवा पूरी करने के लिए: ऑर्डर करने की विंडो. इससे पता चलता है कि उपयोगकर्ता
ऑर्डर और ऑर्डर पूरा करने की विंडो से जुड़ी जानकारी मिलती है. इससे पता चलता है कि ऑर्डर कब पूरा किया जाएगा. कॉन्टेंट बनाने
ऑब्जेक्ट तय करता है कि उपयोगकर्ता कब
ऑर्डर दे सकता है. इस प्रॉडक्ट के लिए, ऑर्डर पूरा करने में लगने वाला समय (OpeningHoursSpecification
या ServiceDeliveryHoursSpecification
) तय करें कि ऑर्डर कब
पूरा किया गया.AdvanceServiceDeliveryHoursSpecification
नीचे दिए गए उदाहरण में, ऐडवांस ऑर्डर स्वीकार करने के लिए किसी सेवा के खुले होने का समय बताया गया है. इसमें 15 मिनट का सर्विस इंटरवल मिलेगा.
{ "hoursAvailable": [ { "@type": "OpeningHoursSpecification", "opens": "T00:00:00", // Ordering available 24 hours "closes": "T23:59:59", "deliveryHours": [ { "@type": "ServiceDeliveryHoursSpecification", "opens": "T09:00:00", // ASAP orders b/w 9am and 8:59:59pm "closes": "T21:00:00", "deliveryLeadTime": { "value": "60", "unitCode": "MIN" } }, { "@type": "AdvanceServiceDeliveryHoursSpecification", "opens": "T10:00:00", // Delivery between 10AM and 7:59:59PM "closes": "T20:00:00", "serviceTimeInterval": "PT15M", // in slots spaced 15 minutes apart (ISO8601) "advanceBookingRequirement": { "minValue": 60, // The slot should be at least 60 mins away "maxValue": 8640, // but not more than 6 days away "unitCode": "MIN" } } ] } ] }
नीचे दिए गए उदाहरण में बताया गया है कि आप यह कैसे तय कर सकते हैं कि यह सेवा क्रिसमस के दिन ऑर्डर वाले दिन ही ऑर्डर किया जा सकता है. हालांकि, इस तारीख के लिए ऐडवांस ऑर्डर के लिए बंद कर दिया गया है उस दिन. यह उदाहरण इन स्थितियों में काम करता है:
- उपयोगकर्ता, 25 दिसंबर को ऑर्डर वाले दिन ही डिलीवरी पाने का ऑर्डर कर सकते हैं.
- उपयोगकर्ता 25 दिसंबर को पहले से ऑर्डर कर सकते हैं, ताकि डिलीवरी शेड्यूल की गई हो के लिए चुना गया है.
- उपयोगकर्ता 22 दिसंबर को डिलीवरी शेड्यूल करने के लिए, पहले से ऑर्डर नहीं कर सकते शामिल होने का समय है.
{ "specialOpeningHoursSpecification": { "@type": "AdvanceServiceDeliveryHoursSpecification", "validFrom": "2018-12-25T00:00:00-07:00", "validThrough": "2018-12-26T00:00:00-07:00", "opens": "T00:00:00", // No advance ordering "closes": "T00:00:00" } }
नीचे दिया गया उदाहरण दिखाता है कि आप किस तरह से यह तय कर सकते हैं कि यह सेवा ऑर्डर वाले दिन ही ऑर्डर करें या क्रिसमस के लिए एडवांस ऑर्डर दें, लेकिन बाद के लिए शेड्यूल किए गए ऐडवांस ऑर्डर. इस उदाहरण में, इन दो सुविधाओं का इस्तेमाल किया जा सकता है स्थितियां:
- उपयोगकर्ता, 25 दिसंबर को ऑर्डर वाले दिन ही डिलीवरी पाने के लिए, ऑर्डर नहीं कर सकते.
- उपयोगकर्ता 25 दिसंबर को पहले से ऑर्डर कर सकते हैं, ताकि डिलीवरी शेड्यूल की गई हो के लिए चुना गया है.
- उपयोगकर्ता 22 दिसंबर को डिलीवरी शेड्यूल करने के लिए, पहले से ऑर्डर नहीं कर सकते करने का सुझाव दिया है.
{ "specialOpeningHoursSpecification": [ { "@type": "ServiceDeliveryHoursSpecification", "validFrom": "2018-12-25T00:00:00-07:00", "validThrough": "2018-12-26T00:00:00-07:00", "opens": "T00:00:00", // No ASAP ordering on Christmas "closes": "T00:00:00" }, { "@type": "AdvanceServiceDeliveryHoursSpecification", "validFrom": "2018-12-25T00:00:00-07:00", "validThrough": "2018-12-26T00:00:00-07:00", "opens": "T00:00:00", // Orders cannot be scheduled for Christmas "closes": "T00:00:00" } ] }
नीचे दी गई सेवा का नमूना, किसी भी समय ऑर्डर स्वीकार करता है और डिलीवरी की सुविधा देता है सोमवार से शुक्रवार, सुबह 10 बजे से दोपहर 2:59:59 बजे तक:
... { "@type": "OpeningHoursSpecification", "opens": "T00:00:00", "closes": "T23:59:59", "deliveryHours": { "@type": "AdvanceServiceDeliveryHoursSpecification", "opens": "T10:00:00", // Delivery starts at 10:00AM "closes": "T15:00:00", // Delivery ends at 3:00PM. Delivery from 10AM-2:59:59PM. "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "serviceTimeInterval": "PT15M", // in slots spaced 15 minutes apart "advanceBookingRequirement": { "minValue": 60, // The slot should be at least 60 mins away "maxValue": 8640, // but not more than 6 days away "unitCode": "MIN" } } } ...
यहां दी गई सेवा का सैंपल हर दिन सुबह 8 बजे से रात 4:59:59 बजे तक ऑर्डर स्वीकार करती है और ग्राहक एक घंटे के अंदर डिलीवरी का विकल्प चुन सकते हैं या स्लॉट:
... { "@type": "OpeningHoursSpecification", "opens": "T08:00:00", // Ordering opens at 8:00AM "closes": "T17:00:00", // Ordering closes at 5:00PM, last order at 4:59:59PM "deliveryHours": [ { "@type": "ServiceDeliveryHoursSpecification", "opens": "T08:00:00", "closes": "T17:00:00", "deliveryLeadTime": { "@type": "QuantitativeValue", "value": "60", // If no exact deliveryLeadTime, put a maximum time "unitCode": "MIN" } }, { "@type": "AdvanceServiceDeliveryHoursSpecification", "opens": "T08:00:00", "closes": "T17:00:00", "serviceTimeInterval": "PT15M", // in slots spaced 15 minutes apart "advanceBookingRequirement": { "minValue": 90, // The slot should be at least 90 mins away "maxValue": 8640, // but not more than 6 days away "unitCode": "MIN" } } ] } ...
नीचे दिए गए सैंपल में, एक ऐसा केस दिखाया गया है जिसमें स्टोर सुबह 8 बजे से शाम 4:59:59 बजे तक खुलता है सोमवार से शुक्रवार तक, सुबह 8 बजे से शाम 6:59 बजे तक. ऑर्डर 24x7 स्वीकार नहीं किए जाते.
... { // On weekdays, ordering open from 8AM-4:59:59PM. "@type": "OpeningHoursSpecification", "opens": "T08:00:00", "closes": "T17:00:00", "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "deliveryHours": [ { // Fulfillment between 8AM-4:59:59PM on weekdays. "@type": "AdvanceServiceDeliveryHoursSpecification", "opens": "T08:00:00", "closes": "T17:00:00", "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "serviceTimeInterval": "PT15M", "advanceBookingRequirement": { "minValue": 60, "maxValue": 8640, "unitCode": "MIN" } }, { // Fulfillment between 8AM-6:59:59PM on weekends (even for orders placed on a // weekday). "@type": "AdvanceServiceDeliveryHoursSpecification", "opens": "T08:00:00", "closes": "T19:00:00", "dayOfWeek": [ "Saturday", "Sunday" ], "serviceTimeInterval": "PT15M", "advanceBookingRequirement": { "minValue": 60, "maxValue": 8640, "unitCode": "MIN" } } ] }, { // On weekends, one can place orders upto 6:59:59PM. "@type": "OpeningHoursSpecification", "opens": "T08:00:00", "closes": "T19:00:00", "dayOfWeek": [ "Saturday", "Sunday" ], "deliveryHours": [ { // But fulfillment on weekdays is only till 4:59:59PM. "@type": "AdvanceServiceDeliveryHoursSpecification", "opens": "T08:00:00", "closes": "T17:00:00", "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "serviceTimeInterval": "PT15M", "advanceBookingRequirement": { "minValue": 60, "maxValue": 8640, "unitCode": "MIN" } }, { // Fulfillment on weekends is till 6:59:59PM. "@type": "AdvanceServiceDeliveryHoursSpecification", "opens": "T08:00:00", "closes": "T19:00:00", "dayOfWeek": [ "Saturday", "Sunday" ], "serviceTimeInterval": "PT15M", "advanceBookingRequirement": { "minValue": 60, "maxValue": 8640, "unitCode": "MIN" } } ] } ...