> 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/solution-editor/actions/api-call/http.md).

# HTTPアクション

## **概要**

HTTP コネクタは任意のエンドポイントに対して HTTP リクエストを送信できるコネクタです。Anyflow Embed がコネクタとして提供していない外部ツールの API を利用します。

HTTP コネクタは、Anyflow Embed のほとんどのコネクタのサポートでサポートされているカスタムアクションを、特定のコネクタに縛られることなく、柔軟に利用できるようにしたものになります。

[カスタムアクション](/solution-editor/actions/api-call/custom.md)のドキュメントも必要に応じて参照ください。

***

{% hint style="warning" %}

#### リクエストのタイムアウト

「リクエストを送信」アクションで外部APIへリクエストを送信する際、レスポンスを待つタイムアウト値は`180秒`です。\
外部APIが`180秒`以内に応答を返さない場合、アクションはタイムアウトしエラーになります。\
応答に時間がかかるAPIを呼び出す場合は、この上限を考慮して設計してください。
{% endhint %}

## **HTTP コネクタで利用可能なアクション**

HTTP コネクタでは、現在以下のアクションを利用可能です。

* リクエストを送信
  * HTTP リクエストで独自のアクションを構築します。

***

## **「リクエストを送信」アクションの入力フィールド**

カスタムアクションの設定入力フィールドの詳細について説明します。

<table><thead><tr><th width="234.99609375"></th><th></th></tr></thead><tbody><tr><td><strong>入力フィールド</strong></td><td><strong>説明</strong></td></tr><tr><td>表示名</td><td>作成するアクションに名前をつけます。</td></tr><tr><td>HTTPメソッド</td><td>呼び出す API エンドポイントの HTTP メソッドです。</td></tr><tr><td>リクエストURI</td><td>呼び出す API エンドポイントの URI です。</td></tr><tr><td>リクエストURLパラメーター</td><td>URL パラメーターを渡すことが可能です。</td></tr><tr><td>リクエストヘッダー</td><td>HTTP リクエストヘッダーを指定。</td></tr><tr><td>レスポンスヘッダー定義</td><td>API が返すと期待される HTTP レスポンスヘッダーを Anyflow Embed に説明します。これは出力値のデータツリーを生成するために使用します。</td></tr><tr><td>レスポンスタイプ</td><td>API が返すと期待される出力スキーマを Anyflow Embed に説明します。これは、出力値のデータツリーを生成するために使用します。</td></tr><tr><td>レスポンスボディ定義</td><td>API が返すレスポンスをソリューション内で利用したいフィールドを定義します。</td></tr></tbody></table>

## **レスポンスタイプの違い**

<figure><img src="https://files.readme.io/deab66c-image.png" alt=""><figcaption></figcaption></figure>

* json：多くの場合はこちらを選択します。レスポンスはAnyflowによりツリー構造として解釈され、ソリューション内で利用できます。
* raw：レスポンスとしてファイルが返却されるAPIなどで、レスポンスがツリー構造ではない場合やAnyflowとしての解釈が不要な場合はこちらを選択します。デフォルトでは、rawのレスポンスは`文字列型`の変数に格納されます。

<figure><img src="https://files.readme.io/e4793c4-image.png" alt="" width="375"><figcaption></figcaption></figure>

> ### 📘ヒント
>
> rawのレスポンス実態が文字列ではない場合、は変数アクションを使って適切な型の変数を作成し、そこにrawのレスポンスを格納することで、ソリューション内で正しく扱うことができます。

{% hint style="success" %}

### ヒント

rawのレスポンス実態が文字列ではない場合、は[変数アクション](/solution-editor/actions/data-transform/variable.md)を使って適切な型の変数を作成し、そこにrawのレスポンスを格納することで、ソリューション内で正しく扱うことができます。
{% endhint %}

<figure><img src="https://files.readme.io/fca13f6-image.png" alt="例：rawの実態がFile型なので、File型の変数に格納する" width="563"><figcaption><p>例：rawの実態がFile型なので、File型の変数に格納する</p></figcaption></figure>

<br>

***

## **利用例**

### **Slack チャンネルのメンバー情報一覧を取得する「リクエストを送信」アクション例**

Slack チャンネルに参加しているメンバーの一覧を取得する「リクエストを送信」アクションを構築してみましょう。

{% hint style="success" %}

### ヒント

この例では独自のSlackBotを作成したうえで、そのBotのTokenを使ってAPIを呼び出します。\
独自のSlackBotを用意されていない方は[こちら](/recipe/communication/slackbot-custom-original-bot.md)を参照してください。
{% endhint %}

選択したアクションに名前を付けます。\
今回は「メンバー一覧取得」というカスタムアクション名を入力します。\
この名前は、アクション名の下部分に表示されます。

<figure><img src="https://files.readme.io/1b7c812-CleanShot_2023-11-11_at_11.22.47.gif" alt=""><figcaption></figcaption></figure>

呼び出す API のエンドポイントに基づいて、リクエストの HTTP メソッドを選択します。\
Slack API のドキュメントを確認すると、HTTP メソッドが記載されています。\
今回の場合、`conversations.members`がGET メソッドを使用することを示しています。

<figure><img src="https://files.readme.io/a938ace-CustomAction5.png" alt="1439"><figcaption><p>Slack APIドキュメント:conversations.members</p></figcaption></figure>

HTTP メソッドを選択すると、アクションに関連する入力フィールドが表示されます。

<figure><img src="https://files.readme.io/64b07c1-CleanShot_2023-11-11_at_11.39.39.gif" alt=""><figcaption></figcaption></figure>

リクエスト URI には`https://slack.com/api/conversations.members`と入力します。

<figure><img src="https://files.readme.io/aae1894-CleanShot_2023-11-11_at_11.42.422x.png" alt="&#x60;conversations.members&#x60; のURLエンドポイントを追加します"><figcaption><p><code>conversations.members</code> の URL エンドポイントを追加します</p></figcaption></figure>

送信するリクエストを定義します。\
この API エンドポイントでは、`token`の他に`channel`をパラメーターとして渡す必要があります。

<figure><img src="https://files.readme.io/4d6587c-CustomAction8.png" alt="734"><figcaption><p>Slack APIドキュメント:conversations.membersのArguments</p></figcaption></figure>

リクエスト URL パラメーターを設定します。

<figure><img src="https://files.readme.io/5a89cf4-CleanShot_2023-11-14_at_23.21.302x.png" alt="キーと値を入力します。"><figcaption><p>キーと値を入力します。</p></figcaption></figure>

リクエストヘッダーに Slack Botの認証トークンを設定します。

Slack Bot の認証トークンはSlackBotの`OAuth Tokens`の項目から取得できます。

<figure><img src="https://files.readme.io/bf6aa6f04edf163a6b8848973e0a1ec5cfa79af415c6b4e0e26cd157da793051-image.png" alt=""><figcaption></figcaption></figure>

取得したトークンをヘッダーに設定します。

<figure><img src="https://files.readme.io/9434972-CleanShot_2023-11-14_at_23.24.132x.png" alt="キーと値を入力します。"><figcaption><p>キーと値を入力します。</p></figcaption></figure>

レスポンスタイプを選択します。\
選択後、レスポンスボディを定義する入力フィールドが表示されます。

<figure><img src="https://files.readme.io/cb4bdf9-CleanShot_2023-11-14_at_23.26.462x.png" alt="レスポンスタイプを選択すると、入力フィールドが表示されます。"><figcaption><p>レスポンスタイプを選択すると、入力フィールドが表示されます。</p></figcaption></figure>

レスポンスボディを定義します。\
まず、 Slack API のドキュメントにて、どんなレスポンス構造になっているかを確認します。

<figure><img src="https://files.readme.io/eda48d0-CustomAction12.png" alt="734"><figcaption><p>Slack APIドキュメント:conversations.membersのExample responses</p></figcaption></figure>

次に、Common successful response のJSON をコピーし、Anyflow Embed で「JSONで追加」を選択します。

<figure><img src="https://files.readme.io/cb401af-image.png" alt="「JSONで追加」のモーダル"><figcaption><p>「JSONで追加」のモーダル</p></figcaption></figure>

<figure><img src="https://files.readme.io/2c5362d-image.png" alt="「JSONで追加」を行った後の状態"><figcaption><p>「JSONで追加」を行った後の状態</p></figcaption></figure>

{% hint style="warning" %}

### 定義する項目について

後続の処理の中で使用したい項目のみを定義します。\
ドキュメントに明記されている項目を全て定義する必要はありません。\
ここで定義した項目は、後続の処理で利用可能です。
{% endhint %}

これでHTTP コネクタの「リクエストを送信」アクションが完成したので、テスト実行をしてみましょう。\
トリガーなしでアクションを迅速にテストしたい場合は、Click トリガーを使用してテストします。

上記アクションをテスト実行した際、アクションに渡された入力をテスト履歴から確認可能です。

<figure><img src="https://files.readme.io/7514ca6-CleanShot_2023-11-14_at_23.39.312x.png" alt="テスト履歴: 入力値"><figcaption><p>テスト履歴: 入力値</p></figcaption></figure>

また、Slack APIから返された詳細な出力値を確認し、APIコールが成功したかがどうか確認可能です。

<figure><img src="https://files.readme.io/72d061f-CleanShot_2023-11-14_at_23.40.572x.png" alt=":テスト履歴: 出力値"><figcaption><p>テスト履歴: 出力値</p></figcaption></figure>

こちらの呼び出しは成功したようです。


---

# 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/solution-editor/actions/api-call/http.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.
