> For the complete documentation index, see [llms.txt](https://docs-embed.anyflow.jp/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs-embed.anyflow.jp/trial-tour/start-intermediate/step2.md).

# STEP2 | Resposeステップ

## **概要**

中級STEP1では、Requestトリガーを使ったSlackへのメッセージ投稿に成功しました。\
中級STEP2ではさらにレスポンスを取得して活用する方法を紹介します。

STEP1とSTEP2の連携の流れは下記のとおりです。STEP2ではこの流れを成功するソリューションを作成していきます。

***

## 1.メッセージ投稿をスキップする

Slackからユーザーの一覧を取得部分のテストに成功するまで、スキップを設定してみましょう。

ソリューションでは作成したソリューションをスキップする設定が可能です。

メッセージを投稿のステップにある三点リーダーをクリックしてスキップします。

同様にレスポンスもスキップしてください。

<figure><img src="/files/tCGvWmqG8eiSSEn2puMi" alt="" width="375"><figcaption></figcaption></figure>

***

## 2.ペイロードの設定を追加する

STEP1ではmessageを動的に投稿するために\[リクエストが送信された際に実行]のリクエストペイロードに\[message]を設定しました。

それに加え、Slackからユーザー一覧を取得できるようにRequest＆Responseトリガーを設定していきましょう。

### 2-1.リクエストペイロードの追加

* \[リクエストが送信された際に実行]をクリックします。
* リクエストペイロードを追加します。JSONまたは手動で追加できます。

{% tabs %}
{% tab title="{}JSONで追加" %}
まず、messageがペイロードに存在しているため削除してください。\
JSONで追加を選択すると、JSONを入力するモーダルが表示されるので、以下のJSONをコピーして貼り付けます。任意項目にするにチェックを入れてください。

```
{
"message": "こんにちは",
"mention_id": "1",
"email": "test@anyflow.co.jp",
"action": "search"
}
```

{% endtab %}

{% tab title="手動追加" %}
すでにmessageのスキーマは設定されているので、追加で下記3つを追加します。

* 名前\[mention\_id]、型\[String]で、任意項目にするにチェックを入れて追加します。
* 名前\[email]、型\[String]で、任意項目にするにチェックを入れて追加します。
* 名前\[action]、型\[String]で、追加します。
  {% endtab %}
  {% endtabs %}

<figure><img src="/files/WTzi6gqZeQeg0FlCbjwm" alt="" width="545"><figcaption></figcaption></figure>

### 2-2.レスポンスペイロードの設定

レスポンスペイロード追加を選択します。

* レスポンス名は自由です。今回は\[user\_list]とします。
* レスポンスペイロードを追加します。JSONまたは手動で追加できます。

{% tabs %}
{% tab title="{}JSONで追加" %}
JSONを入力するモーダルが表示されるので、以下のJSONをコピーして貼り付けます。

```
{  
  "users": [  
    {  
      "id": "1",  
      "email": "test@anyflow.co.jp"  
    }  
  ]  
}
```

{% endtab %}

{% tab title="手動追加" %}
追加するペイロードは下記の4つです。

* 名前\[users]、型\[Array]で、追加します。
* 名前\[element]、型\[Object]で、任意項目にするにチェックを入れて追加します。
* 名前\[id]、型\[String]で、任意項目にするにチェックを入れて追加します。
* 名前\[email]、型\[string]で、任意項目にするにチェックを入れて追加します。

階層を設定します。\
`elemenet`を`users`の配下に移動します。\
左側にマウスを持っていくと手のカーソルになるので、ドラック&ドロップで移動させます。\
同様に`id`と`email`を`element`配下に移動させます。これにより`users`は3階層となりました。
{% endtab %}
{% endtabs %}

<figure><img src="/files/y1BhVOqwpDpPlRRCBjz2" alt=""><figcaption></figcaption></figure>

***

## 3.ユーザーの一覧を取得する

### 3-1.\[if]を設定する

{% hint style="success" %}

### ifロジックについて

今回はトライアルツアーで設定するための必要な情報のみをご紹介しております。\
ifロジックの詳細については、[こちら](/solution-editor/logic/if.md)をご確認ください。
{% endhint %}

スキップしたステップの上に新たなステップを追加します。

トリガーとアクションの間にカーソルを合わせ、\[+]ボタンから、\[if]を選択します。

<figure><img src="/files/binHe4wl1rINCxGxOnQM" alt="" width="563"><figcaption></figcaption></figure>

リクエストペイロードで設定した`action`が`search`という値と等しいか？をチェックします。

* データ：変数のStep1にある`action`を選択します。
* 状態：`等しい`を選択します。
* 値：\[search]と入力します。

<figure><img src="/files/lDZu7LBdsPFS9qBRTz78" alt="" width="557"><figcaption></figcaption></figure>

### 3-2.Slack Bot ユーザー一覧を取得を設定する

Yes側の\[+]ボタンをクリックし、\[アクション]から\[Slack Bot]を選択します。

* \[ユーザー一覧を取得]を選択します。
  * 取得件数：Slackの仕様上、200以下が推奨です。今回は200と設定します。
  * カーソルとロケールを含む：今回は設定不要です。

<figure><img src="/files/kp8pNmzW6k3kOOuZCi3d" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}

### ページネーションをしたい場合は

複数回APIを呼び出しをして全件のデータを呼び出すにはこちらを確認してください。\
カーソルの設定については[こちら](/solution-editor/logic/pagination.md)ページをご確認ください。
{% endhint %}

### 3-3.レスポンスを設定する

<figure><img src="/files/jWPxH2lGM5FdPvoH8DG1" alt="" width="563"><figcaption></figcaption></figure>

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

<figure><img src="/files/9wd8geRTgh7oMIsRxvSs" alt=""><figcaption></figcaption></figure>

***

## 4.ユーザー一覧を取得できるかテストする

ここまでの設定ができたらユーザー一覧が取得できるかテストしてみましょう。\
ウィザードは現在設定している状態のままで大丈夫です。

* テストに進むと認証の画面が表示されます。\
  任意のチャンネルを指定して、完了ボタンを押してください。\
  ※ユーザー一覧の取得のテストですので、チャンネルにメッセージの投稿はされません。
* cURLをコピーし、ご自身の環境からリクエストを送信してテストを実行してください。
* 今回はユーザー一覧を取得するテストです。\
  actionにsearchを指定する必要があります。下記のサンプルを参考に実行してください。

```jsx
curl https://embed-vender-api.anyflow.jp/request_trigger \
  --request POST \
  --header "Authorization: Bearer [API_TOKEN]" \
  --header "Content-Type: application/json" \
  --data '{
    "solution_instance_id": "[solution_instance_id]",
    "payload": {
      "message": "",
      "mention_id": "",
      "email": "",
      "action": "search"
    }
  }'
```

成功すると、ユーザー一覧を取得ができレスポンスとしてidがアプリ側に返って返ってきていることが分かります。

<figure><img src="/files/jmj9xuzGeGpjeJ2BXqUP" alt=""><figcaption></figcaption></figure>

***

## 5.メンションを付けてメッセージを投稿する

上記によってSlackからユーザー一覧を取得することに成功しました。

次にユーザー一覧から取得したIDを活用して、メンションをつけてメッセージを送付してみましょう。

### 5-1.メッセージを送信する設定をする

actionがsearchだった場合は、ユーザー一覧を取得するように設定しました。\
次に、actionがsearch以外だった場合は、メッセージを投稿するように設定しましょう。

この場合、elseを活用します。\
ifステップの3点リーダをクリックし、elseを選択します。\
選択するとNoの先にelseが追加されます。これによりactionがsearch以外だった時の動きを設定できるようになりました。

<figure><img src="/files/OxRNy4YJueRR6ui553Ok" alt="" width="324"><figcaption></figcaption></figure>

### 5-2.動的なメンションを付けてメッセージ投稿してみる

トリガーのリクエストペイロードに\[mention\_id]と\[action]を追加します。

トリガーの下にアクション、\[if]を追加します。

ifは以下の通り設定します。 データは変数から\[action]を選択、状態は\[等しい]を選択、値は\[search]と入力します。

ifの分岐、Yesの方に\[ユーザー一覧を取得]と\[レスポンス]を移動させます。

※これによりactionがsearchだったら、Slackのユーザー一覧から、idを取得し、自社アプリにidを保存するという動きを取れるようになります。

次にifのステップから\[else]をクリックし、Noだった時の動きを設定します。

\[メッセージを投稿]と\[レスポンス]をelseの配下に移動させます。

\[メッセージを投稿]のステップのメッセージ内容を変数の\[mention\_id]に変更します。

<figure><img src="/files/ZvlD989aYXRAZJdJtzxB" alt="" width="375"><figcaption></figcaption></figure>

※これによりactionがsearch以外だったら、slackにメッセージを投稿する(searchで取得したidを活用した)動きを取れるようになります。

テストに成功すればSlackのユーザー一覧をアプリに保存し、アプリからSlackにメンション付きでメッセージを送信するソリューションの完成です。

### 追記：ソリューションを複製しておく

今回の中級編STEP2で作成したソリューションをStep3で活用しますので、ソリューションを複製しておきましょう。

[ソリューション一覧](https://embed.anyflow.jp/solutions)から、今回作成したソリューションの複製を行ってください。

***

## **まとめ**

今回のセクションでは、RequestトリガーのResponseを活用するソリューションの作り方を学ぶことができました。

リクエストペイロードに、if/elseの分岐を組み合わせることで、1つのソリューション内でSlackのユーザー一覧取得とメンション付きメッセージ投稿を使い分けることができました。また、レスポンスペイロードを設定することで、取得したユーザーIDをアプリ側に返す仕組みも実現できました。

STEP3では、異なるコミュニケーションツールのソリューションを作り、Slackとの違いを見ていきましょう。

***

## **ネクストステップ**

次は、Teamsのソリューションを作成する方法をご紹介します。

[STEP3 | スキーマの共通化](/trial-tour/start-intermediate/step3.md)

にお進みください。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs-embed.anyflow.jp/trial-tour/start-intermediate/step2.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
