ฟีเจอร์การสั่งซื้อล่วงหน้าเวอร์ชัน 1

คุณสามารถเพิ่มการรองรับในการดำเนินการตามคำสั่งซื้อเพื่อให้ผู้ใช้นัดหมายเวลารับและจัดส่งคำสั่งซื้ออาหารล่วงหน้าได้ ก่อนใช้การสนับสนุนนี้ในการดำเนินการตามคำสั่งซื้อ ให้สร้างฟีดสินค้าคงคลังของบริการที่ระบุเวลาสำหรับผู้ใช้ในการสั่งซื้อล่วงหน้า ตามที่อธิบายไว้ในสคีมาฟีดสินค้าคงคลัง (AdvanceServiceDeliveryHoursSpecification)

ช่วงเวลาที่สะดวกสำหรับสั่งจองล่วงหน้า

Google จะเสนอช่วงเวลาที่รับคำสั่งซื้อล่วงหน้าเป็นช่วงๆ ละ 15 นาที โดยไม่เกิน 7 วันล่วงหน้า โดยอิงตามเวลาในการดำเนินการสำหรับร้านอาหารหรือบริการ (ตามที่ระบุไว้ในAdvanceServiceDeliveryHoursSpecification)

หากต้องการเรียกข้อมูลช่วงเวลาที่แนะนำสำหรับการสั่งซื้อล่วงหน้า ให้ใช้ค่าต่อไปนี้จากช่อง fulfillmentPreference ของออบเจ็กต์ FoodCartExtension ที่จุดชำระเงิน

  • PickupInfo.pickupTimeIso8601
  • DeliveryInfo.deliveryTimeIso8601

ใช้การสั่งจองล่วงหน้าที่จุดชำระเงิน

ตารางด้านล่างแสดงวิธีต่างๆ ที่คุณใช้คำตอบของการดำเนินการตามคำสั่งซื้อได้เมื่อผู้ใช้พยายามสั่งซื้อ

สถานการณ์ ลักษณะการดำเนินการตามคำสั่งซื้อ
คำสั่งซื้อล่วงหน้าสามารถดำเนินการได้สำหรับช่วงเวลาที่ขอ ยอมรับรถเข็น P0M ("โดยเร็วที่สุด") หรือ FUTURE_SLOT โดยสร้าง ProposedOrder ที่มีช่วงเวลาเดียวกัน ดูตัวอย่างการตอบกลับการชำระเงินที่ยอมรับช่องได้ที่ข้อมูลโค้ดนี้
ไม่สามารถดำเนินการตามคำสั่งซื้อล่วงหน้าสำหรับช่วงเวลาที่ขอได้ การดำเนินการตามคำสั่งซื้อควรทำดังนี้
  1. ปฏิเสธรถเข็น P0M หรือ FUTURE_SLOT ที่ขอ และระบุเหตุผลที่ดำเนินการตามคำสั่งซื้อไม่ได้ในออบเจ็กต์ FoodErrorExtension
    • หากดำเนินการตามคำสั่งซื้อไม่ได้เนื่องจากความจุไม่เพียงพอ ให้ระบุ FoodOrderError ของข้อผิดพลาดประเภท NO_CAPACITY
    • หากดำเนินการตามคำสั่งซื้อไม่ได้เนื่องจากร้านอาหารปิด ให้ระบุ FoodOrderError ของประเภทข้อผิดพลาด CLOSED
    • หากดำเนินการตามคำสั่งซื้อไม่ได้เนื่องจากเหตุผลอื่น ให้ระบุ FoodOrderError ของประเภทข้อผิดพลาด UNAVAILABLE_SLOT
  2. หากเป็นไปได้ ให้ระบุค่า P0M หรือ FUTURE_SLOT อื่นใน correctedProposedOrder ค่าเหล่านี้ควรเป็นช่วงเวลาที่พร้อมจำหน่ายทั้งหมดในช่วง 7 วันข้างหน้าโดยเริ่มจากเวลาปัจจุบัน ใส่ช่อง P0M ทุกครั้งที่มี

ดูตัวอย่างการตอบกลับการชำระเงินที่เสนอช่วงเวลาอื่นได้ที่ข้อมูลโค้ดนี้

ช่วงเวลาอื่นสำหรับการดำเนินการตามคำสั่งซื้อ

เมื่อชำระเงิน หาก Google เสนอช่วงเวลาที่สะดวกสำหรับสั่งจองล่วงหน้าที่ไม่เหมาะสม ทีมการดำเนินการของคุณจะแนะนำทางเลือกอื่นๆ ได้โดยใช้ออบเจ็กต์ CheckoutResponseMessage

หากต้องการระบุช่วงเวลาที่สะดวกสำหรับสั่งจองล่วงหน้าทางเลือก ให้ตอบกลับคำขอชำระเงินด้วย FoodErrorExtension และตั้งค่าต่อไปนี้

  1. ในพารามิเตอร์ foodOrderErrors ให้ระบุประเภทข้อผิดพลาด (เช่น UNAVAILABLE_SLOT, NO_CAPACITY หรือ CLOSED)
  2. ในพารามิเตอร์ correctedProposedOrder ให้ระบุค่า P0M หรือ FUTURE_SLOT อื่นผ่าน availableFulfillmentOptions

ช่วงเวลาที่แนะนำควรเป็นช่วงเวลา 7 วันนับจากเวลาที่สั่งซื้อ และควรรวมช่วงเวลาทั้งหมดที่ดำเนินการตามคำขอในรถเข็นของผู้ใช้

ตัวอย่างเช่น สมมติว่าอาหารพิเศษสำหรับมื้อกลางวันมีให้บริการเฉพาะวันจันทร์ถึงศุกร์ตั้งแต่เวลา 11:00 น. ถึง 13:00 น. จากนั้นผู้ใช้พยายามเพิ่มอาหารกลางวันพิเศษลงในรถเข็น แต่พบว่าช่วงเวลาที่เลือกไม่พร้อมให้บริการ ในกรณีนี้ การดำเนินการตามคำสั่งซื้อควรเก็บโปรโมชันอาหารกลางวันไว้ในรถเข็น และแสดงเฉพาะช่วงเวลา 11:00 น. - 13:00 น. เป็นเวลา 7 วัน

คุณควรละเว้นออบเจ็กต์ correctedProposedOrder.Cart.fulfillmentPreference ในการตอบกลับ

หากไม่มีช่วงเวลาที่สะดวก หรือหากร้านอาหารหรือบริการไม่รองรับการจองล่วงหน้า คุณก็ไม่จำเป็นต้องระบุcorrectedProposedOrder

ดูตัวอย่างด้านล่างสำหรับข้อความ JSON ระหว่างผู้ดำเนินการตามคำสั่งซื้อกับ Google ในระหว่างขั้นตอนการส่งคำขอชำระเงินและการตอบกลับสำหรับคำสั่งซื้อล่วงหน้า เมื่อร้านอาหารหรือบริการพร้อมสำหรับการสั่งจองล่วงหน้า

ตัวอย่าง: 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 ให้ตั้งค่าเป็นเวลานำส่งหรือรับสินค้าตามที่ผู้ใช้กำหนดเวลาไว้สำหรับคำสั่งซื้อล่วงหน้า
  • เมื่อร้านอาหารหรือบริการมีเวลานำส่งโดยประมาณที่แม่นยำยิ่งขึ้น ให้ตั้งค่าเป็นเวลานำส่งหรือเวลารับสินค้าโดยประมาณ

ตัวอย่าง: SubmitOrderRequest ที่มีช่วงเวลาการนำส่ง

ตัวอย่างข้อมูลโค้ดด้านล่างแสดงคำขอส่งคำสั่งซื้อที่ระบุช่วงเวลาการสั่งซื้อล่วงหน้าที่ผู้ใช้เลือก

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

ตัวอย่าง: SubmitOrderResponse ยอมรับคำสั่งซื้อ

ตัวอย่างด้านล่างแสดงการตอบกลับคำสั่งซื้อที่ส่งมา ซึ่งการดำเนินการตามคำสั่งซื้อของคุณยืนยันว่าได้ยอมรับคำสั่งซื้อล่วงหน้าของผู้ใช้แล้ว

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

ตัวอย่าง: SubmitOrderResponse ปฏิเสธคำสั่งซื้อเนื่องจากไม่มีช่วงเวลาที่สะดวก

ข้อมูลโค้ดด้านล่างแสดงตัวอย่างการตอบกลับคำสั่งซื้อที่ส่งเข้ามา ซึ่งการดำเนินการตามคำสั่งซื้อของคุณปฏิเสธคำสั่งซื้อล่วงหน้าของผู้ใช้เนื่องจากไม่มีช่วงเวลาที่สะดวก

{
  "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 เพื่อระบุเวลานำส่งหรือรับสินค้าเพื่อให้ผู้ใช้กำหนดเวลาสั่งซื้อล่วงหน้าได้

หมายเหตุ: คุณจะต้องระบุกรอบเวลา 2 กรอบเวลาแยกกันสำหรับการนำส่งบริการ ได้แก่ กรอบเวลาการสั่งซื้อซึ่งระบุเวลาที่ผู้ใช้สามารถสั่งซื้อได้ และกรอบเวลาการจำหน่ายซึ่งระบุเวลาที่ระบบจะดำเนินการตามคำสั่งซื้อ ออบเจ็กต์ 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 ธันวาคมสำหรับการนำส่งที่กำหนดเวลาไว้ในวันที่ 27 ธันวาคม
  • ผู้ใช้ไม่สามารถสั่งซื้อล่วงหน้าในวันที่ 22 ธันวาคมสำหรับการนำส่งที่กำหนดไว้ในวันที่ 25 ธันวาคม
{
  "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 ธันวาคมสำหรับการนำส่งที่กำหนดเวลาไว้ในวันที่ 27 ธันวาคม
  • ผู้ใช้ไม่สามารถสั่งซื้อล่วงหน้าในวันที่ 22 ธันวาคมสำหรับการนำส่งที่กำหนดไว้ในวันที่ 25 ธันวาคม
{
  "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"
    }
  ]
}

ตัวอย่างบริการต่อไปนี้จะรับคำสั่งซื้อทุกวันตลอด 24 ชั่วโมงและนำส่งตั้งแต่เวลา 10:00-22: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"
    }
  }
}
...

ตัวอย่างบริการต่อไปนี้จะรับคำสั่งซื้อทุกวันตั้งแต่ 08:00-16:59:59 น. และลูกค้าสามารถเลือกการนำส่งภายใน 1 ชั่วโมงหรือเลือกช่วงเวลาใดช่วงเวลาหนึ่งต่อไปนี้ก็ได้

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

ตัวอย่างต่อไปนี้แสดงกรณีที่ร้านค้าเปิด 08:00-16:59:59 น. ในวันธรรมดา แต่เปิด 08:00-18:59 น. ในวันสุดสัปดาห์ ระบบไม่รับคำสั่งซื้อทุกวันตลอด 24 ชั่วโมง

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