トッピングの取り扱い店舗の変更を検知する方法
現在レート制限の導入に伴い、
極力アプリ側でスマレジのデータを同期し、APIをコールしなくてもデータをアプリ側で取得することを検討しています。
そのため、Webhookを利用して、スマレジ側でデータの修正があった場合は、即座にアプリ側でもデータを更新する仕組みを検討しています。
・メニューの追加・変更・削除
・トッピングの追加・変更・削除
・お好みオーダーの追加・変更・削除
あたりに関しては、WaiterのWebhookで検知し、同期をとることが可能だと考えています。
・トッピンググループの追加・変更・削除
に関しては、POSのWebhook(pos:option-groups)で検知できそうだと考えています。
現在問題になっているのは
・メニューの提供店舗の変更
・トッピングの提供店舗の変更
です。メニュー、トッピングともに提供店舗を変更すると
POSのWebhook(pos:products, edited)が通知されることを確認していますが、
まず、このPOS側のWebhookでは、productIdsが渡されてくるので、あくまでもPOS側の商品IDで、
そのIDが、メニューなのか、トッピングなのかわかりません。
POS側の商品取得APIでProductを取得し、それがメニューなのかトッピングなのか区別をつけることは可能でしょうか?
また、トッピングの場合、そのトッピングがどのトッピンググループに所属しているのか(Waiter側のAPIで店舗毎のトッピンググループは取得できるが、店舗毎に取り扱っているトッピングが取得できないため、productId からトッピンググループを取得し、その店舗のトッピンググループのトッピング内容を更新したい)を取得できないのでしょうか?
POS側の商品取得APIのレスポンスに、productOptionGroupIdが、共通、もしくは店舗毎にあったのですが、トッピンググループに設定されているトッピングを取得してもnullが入ってました。
ベストアンサー
-
商品取得APIのレスポンスのdivisionが、
・"2"の場合はトッピング、
・"0"の場合は、通常のメニュー
となっていることがわかりました。これは仕様として正しいでしょうか?
ご認識いただいている通りです。
商品取得APIのレスポンスのdivisionが、
・"2"の場合はトッピング
・"0"の場合は通常のメニュー
です。
商品取得APIの仕様書にも記載があるためご確認ください。
◇商品取得APIの仕様書
https://www1.smaregi.dev/apidoc/#operation/getItemId
また、productOptionGroupIdは、トッピングとトッピンググループの関係ではなく、メニューとトッピングの関連付けであることも理解しました。
productOptionGroupIdは大本メニューとトッピンググループIDの紐づけです。
(メニューとトッピングの紐づけではございません。)
以上より、POSのWebhook(pos:products, edited)の検知で、
POS側の商品取得APIを使えば、それがメニューかトッピングのそれぞれが、どの店舗で取り扱っているかを取得できそうな気がしています。
上記についてもご認識いただいている通りです。
Webhook(pos:products)で商品の更新を検知し、productIdをもとに商品取得APIで商品の情報を取得することで、divisionで通常商品かオプション商品か判断可能です。
またwith_storesで店舗情報を取得することも可能です。
答え
その後、いろいろ検討した結果、
商品取得APIのレスポンスのdivisionが、
・"2"の場合はトッピング、
・"0"の場合は、通常のメニュー
となっていることがわかりました。これは仕様として正しいでしょうか?
また、productOptionGroupIdは、トッピングとトッピンググループの関係ではなく、メニューとトッピングの関連付けであることも理解しました。
以上より、POSのWebhook(pos:products, edited)の検知で、
POS側の商品取得APIを使えば、それがメニューかトッピングのそれぞれが、どの店舗で取り扱っているかを取得できそうな気がしています。