STEP2 | Resposeステップ
概要
中級STEP1では、Requestトリガーを使ったSlackへのメッセージ投稿に成功しました。 中級STEP2ではさらにレスポンスを取得して活用する方法を紹介します。
STEP1とSTEP2の連携の流れは下記のとおりです。STEP2ではこの流れを成功するソリューションを作成していきます。
1.メッセージ投稿をスキップする
Slackからユーザーの一覧を取得部分のテストに成功するまで、スキップを設定してみましょう。
ソリューションでは作成したソリューションをスキップする設定が可能です。
メッセージを投稿のステップにある三点リーダーをクリックしてスキップします。
同様にレスポンスもスキップしてください。

2.ペイロードの設定を追加する
STEP1ではmessageを動的に投稿するために[リクエストが送信された際に実行]のリクエストペイロードに[message]を設定しました。
それに加え、Slackからユーザー一覧を取得できるようにRequest&Responseトリガーを設定していきましょう。
2-1.リクエストペイロードの追加
[リクエストが送信された際に実行]をクリックします。
リクエストペイロードを追加します。JSONまたは手動で追加できます。
まず、messageがペイロードに存在しているため削除してください。 JSONで追加を選択すると、JSONを入力するモーダルが表示されるので、以下のJSONをコピーして貼り付けます。任意項目にするにチェックを入れてください。
すでにmessageのスキーマは設定されているので、追加で下記3つを追加します。
名前[mention_id]、型[String]で、任意項目にするにチェックを入れて追加します。
名前[email]、型[String]で、任意項目にするにチェックを入れて追加します。
名前[action]、型[String]で、追加します。

2-2.レスポンスペイロードの設定
レスポンスペイロード追加を選択します。
レスポンス名は自由です。今回は[user_list]とします。
レスポンスペイロードを追加します。JSONまたは手動で追加できます。
JSONを入力するモーダルが表示されるので、以下のJSONをコピーして貼り付けます。
追加するペイロードは下記の4つです。
名前[users]、型[Array]で、追加します。
名前[element]、型[Object]で、任意項目にするにチェックを入れて追加します。
名前[id]、型[String]で、任意項目にするにチェックを入れて追加します。
名前[email]、型[string]で、任意項目にするにチェックを入れて追加します。
階層を設定します。
elemenetをusersの配下に移動します。
左側にマウスを持っていくと手のカーソルになるので、ドラック&ドロップで移動させます。
同様にidとemailをelement配下に移動させます。これによりusersは3階層となりました。

3.ユーザーの一覧を取得する
3-1.[if]を設定する
ifロジックについて
今回はトライアルツアーで設定するための必要な情報のみをご紹介しております。 ifロジックの詳細については、こちらをご確認ください。
スキップしたステップの上に新たなステップを追加します。
トリガーとアクションの間にカーソルを合わせ、[+]ボタンから、[if]を選択します。

リクエストペイロードで設定したactionがsearchという値と等しいか?をチェックします。
データ:変数のStep1にある
actionを選択します。状態:
等しいを選択します。値:[search]と入力します。

3-2.Slack Bot ユーザー一覧を取得を設定する
Yes側の[+]ボタンをクリックし、[アクション]から[Slack Bot]を選択します。
[ユーザー一覧を取得]を選択します。
取得件数:Slackの仕様上、200以下が推奨です。今回は200と設定します。
カーソルとロケールを含む:今回は設定不要です。

ページネーションをしたい場合は
複数回APIを呼び出しをして全件のデータを呼び出すにはこちらを確認してください。 カーソルの設定についてはこちらページをご確認ください。
3-3.レスポンスを設定する

[+]ボタンからレスポンスを追加します。
実行ステータス:
成功にするを選択します。レスポンス名:[リクエストが送信された際の実行]で作成した
user_listを選択します。リストソース:変数からステップ3の[ユーザー一覧を取得]にある
Membersを選択します。オブジェクトは下記の通り設定してください。
id:変数にあるステップ3の[ユーザー一覧を取得]にある[
i番目のMember]を展開してIdを選択します。email:変数にあるステップ3の[ユーザー一覧を取得]にある
i番目のNemberを展開し、さらにProfileを展開してEmailを選択します。

4.ユーザー一覧を取得できるかテストする
ここまでの設定ができたらユーザー一覧が取得できるかテストしてみましょう。 ウィザードは現在設定している状態のままで大丈夫です。
テストに進むと認証の画面が表示されます。 任意のチャンネルを指定して、完了ボタンを押してください。 ※ユーザー一覧の取得のテストですので、チャンネルにメッセージの投稿はされません。
cURLをコピーし、ご自身の環境からリクエストを送信してテストを実行してください。
今回はユーザー一覧を取得するテストです。 actionにsearchを指定する必要があります。下記のサンプルを参考に実行してください。
成功すると、ユーザー一覧を取得ができレスポンスとしてidがアプリ側に返って返ってきていることが分かります。

5.メンションを付けてメッセージを投稿する
上記によってSlackからユーザー一覧を取得することに成功しました。
次にユーザー一覧から取得したIDを活用して、メンションをつけてメッセージを送付してみましょう。
5-1.メッセージを送信する設定をする
actionがsearchだった場合は、ユーザー一覧を取得するように設定しました。 次に、actionがsearch以外だった場合は、メッセージを投稿するように設定しましょう。
この場合、elseを活用します。 ifステップの3点リーダをクリックし、elseを選択します。 選択するとNoの先にelseが追加されます。これによりactionがsearch以外だった時の動きを設定できるようになりました。

5-2.動的なメンションを付けてメッセージ投稿してみる
トリガーのリクエストペイロードに[mention_id]と[action]を追加します。
トリガーの下にアクション、[if]を追加します。
ifは以下の通り設定します。 データは変数から[action]を選択、状態は[等しい]を選択、値は[search]と入力します。
ifの分岐、Yesの方に[ユーザー一覧を取得]と[レスポンス]を移動させます。
※これによりactionがsearchだったら、Slackのユーザー一覧から、idを取得し、自社アプリにidを保存するという動きを取れるようになります。
次にifのステップから[else]をクリックし、Noだった時の動きを設定します。
[メッセージを投稿]と[レスポンス]をelseの配下に移動させます。
[メッセージを投稿]のステップのメッセージ内容を変数の[mention_id]に変更します。

※これによりactionがsearch以外だったら、slackにメッセージを投稿する(searchで取得したidを活用した)動きを取れるようになります。
テストに成功すればSlackのユーザー一覧をアプリに保存し、アプリからSlackにメンション付きでメッセージを送信するソリューションの完成です。
追記:ソリューションを複製しておく
今回の中級編STEP2で作成したソリューションをStep3で活用しますので、ソリューションを複製しておきましょう。
ソリューション一覧から、今回作成したソリューションの複製を行ってください。
まとめ
今回のセクションでは、RequestトリガーのResponseを活用するソリューションの作り方を学ぶことができました。
リクエストペイロードに、if/elseの分岐を組み合わせることで、1つのソリューション内でSlackのユーザー一覧取得とメンション付きメッセージ投稿を使い分けることができました。また、レスポンスペイロードを設定することで、取得したユーザーIDをアプリ側に返す仕組みも実現できました。
STEP3では、異なるコミュニケーションツールのソリューションを作り、Slackとの違いを見ていきましょう。
ネクストステップ
次は、Teamsのソリューションを作成する方法をご紹介します。
にお進みください。
最終更新