LoginSignup
0
0

More than 1 year has passed since last update.

(Slackアプリを作ってみて)Viewをsubmit → 即、別のViewをopenするのは無謀っぽい(追記:回避方法あり)

Last updated at Posted at 2022-03-09

Bolt For Javascriptを使用しました。

ざっくり言うと、以下のようなアプリを作りたかったのです。
①スラッシュコマンドやショートカットから登録画面を表示
②入力してもらって登録ボタンをぽち
③登録結果をユーザーに返す

登録画面で登録ボタンぽちっとするのだから、登録結果もViewで返した方がいいと思ったのです。
でも無理だったのでMessageで返しました。
なにが無理だったのか。

※無理と思っていたのですが、コメントでできる方法を教えていただきました!!

Viewをsubmit → 続けて別のViewをopenするのは無謀っぽい

まずは素直に「登録画面でサブミット → 登録処理 → 登録結果画面表示」を考えました。
でもViewオープンには3秒ルールがあり、登録処理には3秒以上かかることが見込まれていたので、

①登録画面で登録ボタンを押す
②サーバでview_submissionを受け取り、処理中画面をview.openする。登録処理を実行する。
③登録処理が終わったら、処理中画面を登録結果返却画面にview.updateしてユーザーに結果を通知する。

としました。
これは一見うまくいったように見えました。

ですが

ですが処理中画面が表示されなかったり、登録結果画面への更新が失敗することがあります。サイレントで失敗する時と、Slackからエラー画面(なんか亀さんがいるエラー画面)を出された時がありました。
でも毎回じゃないし、view.openやview.updateのAPIレスポンスは正常となっているのに「なぜ??」と唸っていました。

結果

同じように困っている人はいないのかな?とネット検索してみたのですが同志は見つからず、「Viewサブミットの結果をユーザーに返したいのであれば、Messageで返す」のサンプルは見つかりました。思えば公式でもこの方法で紹介してたな、この方法が無難なんだな…という結果になりました。

多分

「Viewサブミット→即Viewオープン」は想定されていなくて、Slack側で描画が追いついてないとかそういうことなのかなあ、と想像しています

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0