選擇可用性格式
您可以透過兩種方式指定供應情形資料:(1) Spots Open 或 (2) Recurrence。請只為所有商家和服務選擇一種方法。一旦選取方法,就必須在整個整合作業 (動態饋給、預訂伺服器和即時更新) 中使用該方法。
請參考下列指南,判斷哪種供應情形格式較為合適:
- 在您的系統中,您是否將可用時間儲存為明確的時段,例如上午 8:00 到 8:30 點?
- 使用時段開放
- 在您的系統中,您是否以週期性格式儲存可預訂時段,也就是商家提供的服務會以固定頻率出現,且幾乎不受影響?舉例來說,時段會從上午 9:00 到下午 5:00 每 15 分鐘重複一次,且每 15 分鐘的間隔只提供一個座位。
- 使用重複事件
- 商家服務是否可以同時開放多個空缺?例如,課程有 30 個空缺
- 使用時段開放
- 以上皆非?
- 使用時段開放
- 注意:雖然使用週期性資料可提高效率,並可縮減動態饋給大小,但如果資料模型本身不支援週期性資料,則不建議使用週期性資料,因為您必須針對每項即時更新重新計算整個一天的週期性時段。
時段開放
參數定義:
- spots_open:這個可預訂時段目前開放的數量。
- spots_total:商家針對此設定擁有的總名額數量,包括無法使用的名額。
Spots Open 方法會明確指出每個時段的可用性,並支援同一項服務有多個時段的模式。這兩個參數會共同建構服務容量的數位表示法。
預訂發生時,spots_open 的數量應透過即時更新功能減少 1 (spots_total 的數量應保持不變)。當 spots_open = 0 時,廣告版位就不會再顯示。
服務範例
瑜珈課程或美容院有下列平面圖,且沒有有效預約
圖 1:沒有有效預訂的平面圖 這些商家 2 個時段的預訂情形動態饋給如下所示:
{ "availability": [ { "spots_total": 6, "spots_open": 6, "duration_sec": 3600, "service_id": "1001", "start_sec": 1535817600, # Sept 1, 2018 4:00:00 PM GMT "merchant_id": "1001" }, { "spots_total": 6, "spots_open": 6, "duration_sec": 3600, "service_id": "1001", "start_sec": 1535832000, # Sept 1, 2018 8:00:00 PM GMT "merchant_id": "1001", } ] }
含有預訂資訊的服務範例
圖 2:含有一個有效預訂的平面圖 使用者現在預訂其中一個地點。預訂發生時,系統會發出即時更新,以便更新可用性。在下一個每日空房數動態饋給中,這筆預訂應會顯示。這些商家的可用性動態饋給會將 spots_open 減少 1,以便在 2018 年 9 月 1 日下午 4 點整 (格林威治標準時間) 的時間間隔中使用。2018 年 9 月 1 日 20:00:00 (GMT) 的時間區塊保持不變。
含有預訂資訊的動態饋給摘要
{ "availability": [ { "spots_total": 6, "spots_open": 5, "duration_sec": 3600, "service_id": "1001", "start_sec": 1535817600, # Sept 1, 2018 4:00:00 PM GMT "merchant_id": "1001" }, { "spots_total": 6, "spots_open": 6, "duration_sec": 3600, "service_id": "1001", "start_sec": 1535832000, # Sept 1, 2018 8:00:00 PM GMT "merchant_id": "1001", } ] }
重複週期
參數定義
- recurrence:代表持續重複發生的可預訂時段。
- repeat_until_sec:供應時段重複到最後一個時段的結束時間,以世界標準時間的時間戳記表示。
- repeat_every_sec:連續可預訂時段之間的秒數。舉例來說,如果 repeat_every_sec = 1800 (30 分鐘),且 start_sec 從上午 9:00 開始,則時段會在每 30 分鐘的上午 9:00、上午 9:30、上午 10:00 等時間重複。
- 注意:無須指定 spots_open 和 spots_total,系統會假設這兩個值皆為 1,除非有 schedule_exception
週期方法會指出服務每天的供應情形,例如每天上午 9:00 到下午 5:00 之間每 30 分鐘提供的服務。您可以使用週期性指定時段的持續時間、時段在一天中發生的第一次時間、時段重複的頻率,以及在同一天應停止重複的時間。注意:您必須為每個日子分別指定一組新的週期性時段。如果在指定時間範圍內已預訂時段,您必須指定排程例外狀況。舉例來說,從上午 9 點到晚上 9 點每半小時重複一次,但上午 11 點到上午 11 點 30 分除外。每項個別服務都會有自己的週期和排程例外狀況。
服務範例
美容院的平面圖如下,且沒有有效的預約
圖 3:沒有有效預訂的平面圖。假設每項服務只開放 1 個名額 (例如莎莉每 30 分鐘提供一次理髮服務,但每次只能為 1 位客戶服務)。 這些商家 1 個時段的預訂情形動態饋給如下所示:
動態饋給文字片段:
{ "availability": [ { "merchant_id": "1001", "service_id": "1001", # haircut "start_sec": 1493888400, # May 4, 2017 9:00:00 AM GMT "duration_sec": 1800, "recurrence": { "repeat_every_sec": 1800, "repeat_until_sec": 1493915400 # May 4, 2017 4:30:00 PM GMT } } ] }
含有預訂資訊的服務範例
圖 4:含有一個有效預訂的平面圖。假設每項服務只開放 1 個名額 (例如莎莉每 30 分鐘提供一次理髮服務,但一次只能為 1 位客戶服務)。 假設使用者在下午 12 點 30 分預約與莎莉的理髮服務。預訂發生時,系統會發出即時更新,以便更新可用性。在下一個每日空房動態饋給中,這筆預訂應會顯示。這些商家的預訂情形動態饋給會在下午 12 點 30 分至 1 點,為持續 30 分鐘的服務建立排程例外狀況。
含有預訂資訊的動態饋給摘要:
{ "availability": [ { "merchant_id": "1001", "service_id": "1001", "start_sec": 1493888400, # May 4, 2017 9:00:00 AM GMT "duration_sec": 1800, "recurrence": { "repeat_every_sec": 1800, "repeat_until_sec": 1493915400 # May 4, 2017 4:30:00 PM GMT }, "schedule_exception": [ { "time_range": { "begin_sec": 1493901000, # May 4, 2017 12:30:00 PM GMT "end_sec": 1493902800 # May 4, 2017 1:00:00 PM GMT } } ], } ] }