選擇可用性格式
有兩種方式可以指定供應情形資料:(1)「開放時段」或 (2)「週期性」。請只選擇一個用於所有商家與服務的方法。選取方法後,您必須繼續採用該方法,整個整合作業 (動態饋給、預訂伺服器和即時更新) 都必須採用這種方式。
請參閱下列指南,瞭解如何判斷何種可用性格式較適合:
- 你是否將供應情形儲存為明確的運算單元,例如上午 8:00 到上午 8:30?
- 使用 Spots Open
- 在您的系統中,您是否以週期性格式儲存供應情形,代表商家提供的服務頻率不穩定,但差異不大?舉例來說,運算單元的時間為上午 9:00 到下午 5:00,每 15 分鐘會重複一次,而且每 15 分鐘以每 15 分鐘為收費單位,就只有一個座位。
- 使用重複週期
- 商家提供的服務是否一次有多個空位?例如,課程有 30 個開啟名額
- 使用 Spots Open
- 以上情況都不適用嗎?
- 使用 Spots Open
- 注意:雖然使用重複週期更有效率,並可能使動態饋給大小更小,但如果您的資料模型本身不支援重複週期,則不建議使用重複週期,因為每次即時更新時,都必須重新計算一整天的週期性運算單元。
時段開放
參數定義:
- spot_open:這個供應項目目前可用的名額數量。
- spot_total:商家具備這項設定的地點總數,包括無法使用的時段。
「Spots 開放」方法會明確指出每個時段是否可用,並支援同一服務擁有多個地點的模型。這兩個參數會搭配運作,以以數位方式呈現服務能力。
進行預訂時,Spot_open 的數量應透過即時更新,減少 1 (Spot_total 的數量應維持不變)。當 spot_open = 0 時,版位不再顯示。
服務範例
瑜伽課或美容院有下列平面圖,且沒有有效的預約要求
這些商家有 2 個版位的供應情形動態饋給看起來可能像這樣:
JSON
{ "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", } ] }
包含預訂的服務範例
現在,有位使用者預訂了其中一個地點。有預訂時,系統會發布即時更新以更新供應情形。在下一個每日供應情形動態饋給中,應反映這筆預訂。在 2018 年 9 月 1 日下午 4:00:00 (格林威治標準時間) 時段中,這些商家的供應情形動態饋給會讓 spot_open 減少 1。2018 年 9 月 1 日下午 8:00:00 (格林威治標準時間) 的時段維持不變。
具有預訂的動態饋給程式碼片段
JSON
{ "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 都會重複出現。
- 注意:您不需要指定 spot_open 和 spot_total,但除非有 schedule_exception ,否則兩者都會是 1
週期方法會指出每日的可用性,例如以每天凌晨 9:00 至下午 5:00 之間每 30 分鐘進行一次的服務。使用週期,您可以指定時段的持續時間、當天第一次出現的時間、該時段應重複的頻率,以及當天應停止重複的時間。注意:每天必須分別指定一組新的週期性運算單元。如果時段已預訂在時間範圍內,您可以指定排程例外狀況。例如,您可以重複每半小時 (上午 9 點到晚上 9 點,但上午 11:00 到 11:30 除外)。個別服務將有各自的週期和排程例外狀況。
服務範例
美容院的樓層平面圖如下,沒有人可供預約
這些商家有 1 個版位的供應情形動態饋給看起來可能像這樣:
動態饋給摘要:
JSON
{ "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 } } ] }
包含預訂的服務範例
假設某位使用者在下午 12:30 和小莎一起預約理髮,有預訂時,系統會發布即時更新以更新供應情形。在下一個每日供應情形動態饋給內,應反映這筆預訂。在 12:30 下午 1:00 至 1:00 期間,這些商家的供應情形動態饋給會因為服務持續時間為 30 分鐘而有例外狀況。
具有預訂的動態饋給程式碼片段:
JSON
{ "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 } } ], } ] }