ストーリー設計
ストーリー名
GW-6450 [Bot with Proxy] relation に、各 GROWI の対応可能コマンドを記録しリクエストを制御する external_link
前提
- 本体がコマンドの可否を定める情報を持つ
TODO
BotType 共通
- 管理画面で各種スラッシュコマンドの有効無効を切り替えることができる
- slackAppIntegration collection に有効なスラッシュコマンドを保持する。
- GROWI 本体がコマンドハンドル時に無効のコマンドはコマンドが来たら適切なメッセージを返す(全Bot Type共通)
With Proxy 向け対応
本体側にcommand を持つ実装
- Proxy 側が command を受け取った時に、relation を持つ 各GROWI にリクエストを飛ばし、コマンドの可否を集める
- 集めた情報を参照して該当のコマンドが有効な GROWI に対してリクエストを送信する
本体側と Proxy 側両方に command を持つ実装(速度があまりにも遅いなら実装)
- Proxy サーバーがコマンドハンドル時に relation に該当コマンドが含まれているかを確認する
- singlePostCommands の場合、受け入れ可能 GROWI のリストを slack に返しユーザーは選択した GROWI にリクエストを送ることができる
- 一度に複数遅れるコマンドの場合、relation に含まれるコマンド可否情報を元に許可されている GROWI にのみおくる
- アコーディオンで slackAppIntegration collection の値を更新すると同時に proxy の relation のカラムに simple array で許可されているコマンドを更新する
GROWI 側の更新と Proxy 側の更新を合わせてトランザクションにする必要あり- relation作成時にproxy側にcacheを作るときはexpireを0にすることで、ユーザーがはじめにコマンドを打ったときは必ずGROWIに確認しにいく。これで仮にgrowiとproxyに差異があったとしても初回の設定値だけは確実に反映できる
- GROWI本体側での2回目以降の更新時には48時間のexpireをつける
memo
GROWI 本体の設定が主で、Proxy の relation の内容は従であることを鑑みると、 GW-6451 テスト通過時に対応可能コマンドを生成される relation に保存できる テスト通過時だけで十分かどうかの議論が必要 GW-6894 管理画面にアクセスしたときに Proxy Server が持つ各種 command の情報を取得、表示できる 従である Proxy の情報と差異があったとしてそれを表示することにあまり意味はなさそう それよりも差異があったら是正したい 是正できなかったらエラーを表示するのは親切でいいと思う