n8nのAIエージェント機能をベースにSlack、GWSと連携する方法

n8nのAIエージェント機能を用いて、Slack・GWSと連携する手順をまとめました。
普段コードなどに触れていない方向けに説明を記載しています。


### ステップ①：Slackとn8nの連携

利用するツール

n8n：https://n8n.io/
Slack
GoogleWorkspace（個人も可）

上記の3つのツールを組み合わせ、エージェントを作成します。Googleとの連携は一瞬で終わりますが、初期設定のSlackとn8nの連携がやや大変に感じるかもしれません。ですので、手順をしっかりと案内しますね。


<h3>n8nのアカウントを開設する</h3>

n8nのページにアクセスしてアカウントを開設します。14日は無料トライアル（上限あり）で利用可能です。ローカルで動かす方法もありますが、難しいので興味のある方は調べてみていただけると。

最終的に完成するエージェントは以下のようになります。何よりも見た目がカッコイイ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/ea2c98cf-23a7-438b-8c79-aa7b3144e4e8.png)

<h3>まずはSlackと連携する</h3>
最初のステップを追加からSlackを選択します。なんか物騒な日本語が映っているのはブラウザ翻訳を使っているからです（本当は全て英語）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/39b28b00-c9bf-42f9-a3e0-4adb3c8fae47.png)

アクションを「Slackに新しいメッセージが投稿されたとき」にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/864b5adc-b716-4e60-9223-7c360890a7ae.png)


設定画面が表示されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/846a88e1-b21e-4bd0-a2db-8e779bf2280b.png)

僕の場合はすでに連携済みですが、まずは認証設定を行いましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/add7b134-5652-4c9f-ae16-8544d45bbd43.png)


すると以下のような画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/b3075f5e-f0b0-4f8f-bd28-6e4e61d151d3.png)


この時点で、抵抗感のある方はいるかもしれませんが大丈夫です、解説します。アクセストークンと呼ばれている「鍵」を入れてやる必要があります。

人で言うところの家の鍵みたいなものです。誰でも彼でもSlackに入ってこられたら困りますからね。n8nの場合には「ドキュメント」などのリンクが貼られているので、すぐに参照できます。

Slackのアプリページに移動してアプリを作成します。注意点は管理者でないとアプリが作成できないので、アラートが出た場合は管理者に相談するか自分個人で開設したSlackアカウントを使いましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/809d461d-6560-4f2b-af31-63b4103019d6.png)


「ゼロから」を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/80c27ad8-d76f-4ef6-829b-3065cb66e6ca.png)


アプリ名と接続するワークスペースを指定します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/962aaa0a-506e-4946-b952-e6ef21f972af.png)


<h3>Slackアプリの権限設定</h3>
左のメニューの「OAuthと権限」からSlackアプリケーションに対する権限を付与します。実際に付与した権限は下記の通りです。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/0123d1a8-b1b0-4e0f-91bf-d2a6ec0ee737.png)


「アプリホーム」からアプリに名前とユーザー名を付けます。これをしないとSlackにアプリインストールができません。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/9d231f5c-2fd7-43dc-8dc6-db394b989b53.png)


OAuthと権限からアプリインストールを実施、許可ボタンを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/c19e936f-e121-4451-8bc0-a9161896aa2f.png)


うまくいくとSlackのAppタブに該当のアプリが追加されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/69ca9ac9-83ca-4508-b2e8-56525d08d58f.png)



OAuthと認証に戻り、OAuthトークンをコピーします。機密情報なので、ネットへの公開や他人への共有はしないようにしましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/f8360c39-6bee-4146-89e5-29389c2c0c72.png)


n8nに戻り、Slackとの連携フローのアクセストークンに先ほどのトークンをコピペして保存します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/1498c2f6-7ebf-4808-9e63-207a363b7e2e.png)


その際に、SlackトリガーのWebhookURLをクリックしてコピーします。これのアドレスでSlack側からn8nにデータの受け渡しを行います。n8nはテストと本番でWebhookURLが異なりますが、まずはテストURLをコピーします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/dedb2d7f-8886-4418-8c5e-4bd96b8ba9b0.png)


Slackアプリに戻り、OAuthと権限のリダイレクトURLに先ほどコピーしたURLを添付します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/6cb24fa5-436d-4103-ac01-9a2e9a918d81.png)


続けて「イベント・サブスクリプション」メニューのRequest URLに同じくコピーしたURLを追加。ボットイベントにアプリメンションやmessege:groupを追加します。※この画面だけは、翻訳画面で保存するとエラーになるため英語表記にしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/811c8814-8d75-42e3-9444-fe01c006b3fa.png)



最終的にはn8nで以下のようにSlackとの連携設定を実施します。対象となるチャンネルはID指定でも、リストから選ぶでもOKです。トリガーは「ボット／アプリの言及（メンション）」にしておきましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/fa73eaf5-14f2-4b1b-9d9e-74770cf0328e.png)

続けて「テストステップ」をクリックするとテストモードになります。Slack上から追加したアプリをメンションしましょう（チャンネルにアプリが参加していない場合は招待します）

例えば、以下のように入力すると

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/a03e9891-9ced-4a82-a023-88dda8470ac3.png)


ちゃんと情報として反映されていますね。これでSlackとn8nの連携が完了しました。続けて、AIエージェントのベースを構築します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/252251f5-5289-4fc5-9617-3db067c681a2.png)

<h3>AIエージェントの中枢を構築する</h3>
続けてSlackの次の項目に「フィードを編集」を追加します。Slackから飛んできたデータのうち、メッセージデータを部分のみを抽出します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/ff3ba6bc-8ba7-4ac9-a189-7683c289a772.png)


画面左の入力の「文章」をドラッグして、右のtext項目にセットします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/640fa0cd-4136-47e6-80a8-94e1418a2a44.png)


続けて「AIエージェント」の項目をセットします。その上で、まずはモデルを設定します。今回は「OpenAIチャットモデル」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/aed9bcf7-eb2c-4540-bbcd-31b97f206196.png)

以下のように利用するモデルを選択します。今回はOpenAIで選択していますが、geminiやClaudeなど利用しているモデルをセットしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/7872425e-fd2d-4da0-aa16-10f1b45374a1.png)


連携にあたり、OpenAIのAPIキーが必要になります。[公式サイト](https://openai.com/index/openai-api/)からログインしてAPIプラットフォームからAPIキーを発行します（[こちらのページ](https://platform.openai.com/api-keys)）※発行に当たってはクレジットカードの登録が必要です。発行したAPIキーは先ほどのSlack認証と同じように、GPTの認証欄にセットします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/dd1858a0-d246-4d11-be66-22c3ba89ca2f.png)


AIエージェント欄ではプロンプトを設定できます。プロンプトは後述するものを参考に構築していただければと思います。
ツール（道具）から連携対象のアプリケーションを選択します。今回はGoogleカレンダーとタスクです。認証はGoogleアカウントにログインするだけですので省略しますが、クリックするだけで完了します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/20df8c4c-33ea-4c23-a0b2-61eb717409ab.png)


Googleカレンダーの連携項目は下記のように設定しています。カレンダーは自分のカレンダーを指定、その上で日付は「モデルによって自動的に定義される」＝生成AIで判断するようにしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/3de350b5-4b08-43df-add1-feff633b3132.png)


最後にアウトプット先のSlackを設定します。認証は先ほど完了しているので、アウトプットを設定していきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/b253f65c-9e68-4249-95e7-9873a0b29730.png)



アウトプットでは、生成AIから帰ってきた回答データをドラッグして、「メッセージテキスト」に配置します。その際に、Slackのスレッドtsをタイムスタンプとして指定しておくとスレッドにちゃんと返信してくれるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4066572/d0e40cd8-e3d0-4b47-bd1c-70f979f1f431.png)