पहले से ऑर्डर करने की सुविधा

ग्राहकों के पिकअप और डिलीवरी की सुविधा को पहले से शेड्यूल करने की सुविधा जोड़ी जा सकती है. इस सहायता को पूरा करने के लिए लागू करने से पहले, एक सेवा इन्वेंट्री फ़ीड बनाएं. इससे उपयोगकर्ताओं को पहले से ऑर्डर करने के समय की जानकारी मिलती है, जैसा कि इन्वेंट्री फ़ीड स्कीमा (AdvanceServiceDeliveryHoursSpecification) में बताया गया है.

पहले से ऑर्डर के स्लॉट

Google, किसी रेस्टोरेंट या सेवा (जैसा कि AdvanceServiceDeliveryHoursSpecification में बताया गया है) के ऑर्डर पूरे करने में लगने वाले समय के हिसाब से, 15 मिनट के हिसाब से सात दिन तक के लिए ऑर्डर स्लॉट को पहले से बढ़ाने का सुझाव देता है.

पहले से सुझाए गए ऑर्डर के स्लॉट को फिर से पाने के लिए, चेकआउट के समय FoodCartExtension ऑब्जेक्ट के fulfillmentPreference फ़ील्ड में दी गई वैल्यू का इस्तेमाल करें:

  • PickupInfo.pickupTimeIso8601
  • DeliveryInfo.deliveryTimeIso8601

चेकआउट के समय पहले से ऑर्डर करना

इस टेबल में बताया गया है कि जब खरीदार ऑर्डर देने की कोशिश करते हैं, तब चेकआउट के समय, ऑर्डर पूरा करने के लिए दिए गए अपने रिस्पॉन्स को लागू किया जा सकता है.

स्थिति ऑर्डर पूरा करने का व्यवहार
जिस स्लॉट का अनुरोध किया गया है उसी से पहले से ऑर्डर किया जा सकता है. इसी स्लॉट का इस्तेमाल करके, ProposedOrder बनाकर P0M ("जल्द से जल्द") या FUTURE_SLOT कार्ट को स्वीकार करें. स्लॉट स्वीकार करने वाले चेकआउट रिस्पॉन्स के उदाहरण के लिए, यह कोड स्निपेट देखें.
जिस स्लॉट का अनुरोध किया गया है उसका पहले से ऑर्डर करने का अनुरोध पूरा नहीं किया जा सकता. ऑर्डर पूरा करने के लिए, ये काम किए जाने चाहिए:
  1. अनुरोध किए गए P0M या FUTURE_SLOT कार्ट को अस्वीकार करें. साथ ही, FoodErrorExtension ऑब्जेक्ट में, ऑर्डर पूरा न होने की वजह बताएं.
    • अगर ऑर्डर की सीमा की वजह से पूरा ऑर्डर नहीं दिया जा सकता, तो NO_CAPACITY की गड़बड़ी वाला FoodOrderError बताएं.
    • अगर रेस्टोरेंट के बंद होने की वजह से ऑर्डर पूरा नहीं किया जा सकता, तो FoodOrderError गड़बड़ी CLOSED बताएं.
    • अगर किसी दूसरी वजह से ऑर्डर पूरा नहीं किया जा सकता, तो FoodOrderError की गड़बड़ी UNAVAILABLE_SLOT बताएं.
  2. अगर हो सके, तो correctedProposedOrder में P0M या FUTURE_SLOT की वैकल्पिक वैल्यू दें. ये वैल्यू, मौजूदा समय से अगले सात दिनों के लिए, ऑर्डर पूरा करने के लिए उपलब्ध सभी स्लॉट होनी चाहिए. जहां भी लागू हो, P0M स्लॉट शामिल करें.

विकल्प के तौर पर स्लॉट दिखाने वाले चेकआउट रिस्पॉन्स के उदाहरण के लिए, यह कोड स्निपेट देखें.

ऑर्डर पूरा करने के लिए वैकल्पिक स्लॉट

चेकआउट के समय, अगर Google के सुझाए गए ऑर्डर के लिए स्लॉट सही नहीं हैं, तो ऑर्डर पूरा करने के लिए CheckoutResponseMessage ऑब्जेक्ट का इस्तेमाल करके, ऑर्डर के कुछ विकल्प दिए जा सकते हैं.

ऐडवांस ऑर्डर के किसी दूसरे स्लॉट की जानकारी देने के लिए, FoodErrorExtension की मदद से चेकआउट के अनुरोध का जवाब दें और ये वैल्यू सेट करें:

  1. foodOrderErrors पैरामीटर में, गड़बड़ी का टाइप बताएं, जैसे कि UNAVAILABLE_SLOT, NO_CAPACITY या CLOSED.
  2. correctedProposedOrder पैरामीटर में, availableFulfillmentOptions के ज़रिए P0M या FUTURE_SLOT के विकल्प दें.

वैकल्पिक स्लॉट, ऑर्डर प्लेसमेंट के समय से अगले 7 दिनों के लिए होने चाहिए और इसमें वे सभी स्लॉट शामिल होने चाहिए जिनमें उपयोगकर्ता के अनुरोध किए गए कार्ट को पूरा किया जा सकता है.

उदाहरण के लिए, मान लीजिए कि लंच का विशेष मौका सिर्फ़ सोमवार से शुक्रवार सुबह 11 बजे से दोपहर 1 बजे तक उपलब्ध है. फिर उपयोगकर्ता अपने कार्ट में लंच स्पेशल जोड़ने की कोशिश करता है, लेकिन उनका चुना गया स्लॉट उपलब्ध नहीं होता. इस मामले में, ऑर्डर को पूरा करने के लिए, कार्ट में

आपको अपने जवाब में correctedProposedOrder.Cart.fulfillmentPreference ऑब्जेक्ट को छोड़ देना चाहिए.

अगर कोई स्लॉट उपलब्ध नहीं है या रेस्टोरेंट या सेवा के लिए, पहले से ऑर्डर करने की सुविधा उपलब्ध नहीं है, तो आपको correctedProposedOrder देने की ज़रूरत नहीं है.

चेकआउट के अनुरोध के दौरान और पहले से ऑर्डर करने के लिए रिस्पॉन्स फ़्लो के दौरान और पहले से ऑर्डर करने के लिए रेस्टोरेंट या सेवा उपलब्ध होने पर, Google को मिले JSON मैसेज के उदाहरण यहां देखें.

उदाहरण: डिलीवरी स्लॉट के साथ चेकआउट अनुरोध

नीचे दिए गए स्निपेट में, पहले से ऑर्डर किए गए डिलीवरी स्लॉट के साथ चेकआउट के अनुरोध का उदाहरण दिया गया है.

{
  "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": {
                ...
              }
            }
          }
        }
      ]
    }
  ]
}

उदाहरण: स्लॉट स्वीकार करने वाला चेकआउट रिस्पॉन्स

नीचे दिया गया स्निपेट चेकआउट रिस्पॉन्स का एक उदाहरण दिखाता है, जिसमें आपका ऑर्डर, पहले से किए गए ऑर्डर के स्लॉट स्वीकार करता है.

{
  "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": {
                ...
              }
            }
          }
        }
      ]
    }
  }
}

उदाहरण: दूसरे स्लॉट के साथ चेकआउट रिस्पॉन्स

नीचे दिया गया स्निपेट, चेकआउट के जवाब का एक उदाहरण दिखाता है. इसमें बताया गया है कि ऑर्डर पूरा करने के बाद, पहले से ऑर्डर के स्लॉट का अनुरोध किया जा सकता है. ध्यान दें कि आपके जवाब में 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 को RejectionInfo ऑब्जेक्ट में वजह (जैसे कि UNAVAILABLE_SLOT या UNKNOWN) शामिल करनी चाहिए.

सेवा देने वाली कंपनी के ऑर्डर स्वीकार कर लेने पर, OrderState ऑब्जेक्ट में, ऑर्डर की स्थिति को CREATED से CONFIRMED में अपडेट करें. उपयोगकर्ता को पुष्टि करने वाले ईमेल में, चुने गए टाइम स्लॉट को शामिल करें.

अगर ऑर्डर को बाद में रेस्टोरेंट को भेजा जाता है, तो Google को एसिंक्रोनस ऑर्डर अपडेट कार्रवाई का इस्तेमाल करके अपडेट भेजें.

ग्राहक को आइटम भेजने के लिए सबमिट किए गए ऑर्डर के जवाब के OrderUpdate ऑब्जेक्ट में या उसके बाद एसिंक्रोनस ऑर्डर अपडेट में, एक estimatedFulfillmentTimeIso8601 शामिल करें जिसकी वैल्यू इस तरह सेट की गई हो:

  • ऑर्डर की स्थिति CREATED या CONFIRMED होने पर, वैल्यू को उस डिलीवरी या पिकअप के समय पर सेट करें जिसे उपयोगकर्ता ने पहले से ऑर्डर करने के लिए शेड्यूल किया है.
  • जब रेस्टोरेंट या सेवा देने वाली कंपनी किसी सामान की डिलीवरी का अनुमानित समय ज़्यादा सटीक तरीके से बता रही हो, तो वैल्यू को डिलीवरी या पिकअप के लिए अनुमानित समय पर सेट करें.

उदाहरण: डिलीवरी स्लॉट के साथ सबमिटOrderRequest

नीचे दिए गए स्निपेट में 'ऑर्डर सबमिट करने के अनुरोध' का उदाहरण दिखाया गया है. इसमें बताया गया है कि उपयोगकर्ता ने एडवांस ऑर्डर स्लॉट का जो विकल्प चुना है.

{
  "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": {
                ...
              }
            }
          }
        }
      ]
    }
  ]
}

उदाहरण: ऑर्डर को स्वीकार करने के लिए, SubscriptionOrderResponse

नीचे दिया गया स्निपेट, 'ऑर्डर जवाब सबमिट करें' का एक उदाहरण दिखाता है, जिसमें आपका ऑर्डर यह पुष्टि करता है कि उसने उपयोगकर्ता के पहले से किए गए ऑर्डर को स्वीकार कर लिया है.

{
  "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"
              }
            }
          }
        }
      ]
    }
  }
}

उदाहरण: स्लॉट उपलब्ध न होने की वजह से ऑर्डर अस्वीकार करने वाले सबमिट ऑर्डर का जवाब

नीचे दिए गए स्निपेट में, 'ऑर्डर जवाब सबमिट करें' का एक उदाहरण दिखाया गया है. इसमें स्लॉट उपलब्ध न होने की वजह से, ऑर्डर पूरा करने के बाद उपयोगकर्ता का पहले से ऑर्डर करने पर पाबंदी लगा दी जाती है.

{
  "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 दिसंबर को ऑर्डर वाले दिन ही डिलीवरी कर सकते हैं.
  • उपयोगकर्ता 27 दिसंबर के लिए शेड्यूल की गई डिलीवरी के लिए, 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 दिसंबर को उसी दिन डिलीवरी के लिए ऑर्डर नहीं कर सकते.
  • उपयोगकर्ता 27 दिसंबर के लिए शेड्यूल की गई डिलीवरी के लिए, 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"
    }
  ]
}

नीचे दी गई सेवा का नमूना, ऑर्डर 24x7 स्वीकार करता है और सोमवार से शुक्रवार तक, सुबह 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 तक खुलता है. ऑर्डर हर समय स्वीकार नहीं किए जाते.

...
{
  // 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"
      }
    }
  ]
}
...