Difyで「Slackで利用できるAIチャットボット」を開発する方法について徹底解説!

この記事では、以下のようなAIアプリ開発ツール「Dify(ディファイ)」を用いた、Slackで利用できるAIチャットボットの構築方法を解説します。


弊社Walkersでは、“AIトレンドに乗り遅れたくないけど、具体的な活用法が見えない…”を解決するAI導入支援を行っています。補助金により1/3のコストで導入可能なので、ぜひAI活用にお悩みがある方はお気軽にご相談下さい。⇒AI導入支援サービスの概要はこちら

執筆者:山口 鳳汰
 

執筆者:山口 鳳汰
ノーコード・AI開発会社「Walkers」のCMO。
AIサービス「Prompt Lab」運営。

その他、受託開発や教育など多数のAI事業に参画している。

運営会社:株式会社Walkers

運営会社:株式会社Walkers
ノーコード・AI専門の開発会社。
300件以上の開発/制作実績、200件以上の企業様を支援。
マーケティングやUI/UXと掛け合わせたサービス開発を得意としている。

執筆者:山口 鳳汰

執筆者:山口 鳳汰
ノーコード・AI開発会社「Walkers」のCMO。
AIサービス「Prompt Lab」運営。

運営会社:株式会社Walkers

運営会社:株式会社Walkers
ノーコード・AI専門の開発会社。
これまでに300件以上の開発/制作実績、200件以上の企業様を支援。

クリックできる目次

Dify(ディファイ)とは?

Dify(ディファイ)とは「AI言語モデルを用いてチャットボットなどの独自アプリを開発することができるオープンソースのツール」です。
このツールを使うことで、プログラミングなど専門知識がなくても簡単に高性能なアプリを作成することができます。

「チャットボット」といわれると、企業のホームページなどに配置されている「お問い合わせ対応を行うチャットボット」を連想される方が多いと思われますが、
Difyでは、お問い合わせ対応以外にも複雑な処理を行うチャットボットを簡単に開発できます

Difyには無料プランも用意されているため、「簡単な業務をAIで効率化したいが、本当にできるか不安」という方でも安心して利用することができます。

»関連記事:Dify(ディファイ)とは?事例や使い方、商用利用まで完全解説!

SlackBotの開発方法

ログインなどの面倒な操作を行わずに「ChatGPT」などの生成AIを利用したい。
社内でのみ使用できるAIチャットボットを構築したい。

このようなお悩みを抱えている方は多くいるのではないでしょうか。
この記事では、「社内のSlackにAIチャットボットを導入する方法」を解説します。

社内のSlackにAIチャットボットを導入することによって、AIへの質問をより手軽に行うことができるほか、業務外での利用を防ぐことが可能になります。

【手順①】Difyを構築する

生成AIへのメッセージ送信や、AIからの回答を発行する作業をDifyを用いて行います。

STEP
以下のURLよりDifyの公式サイトに移動する
STEP
アカウントを作成する
Dify公式サイト
Dify公式サイト

「GitHub」または「Google」アカウントを用いてDifyではアカウントを作成します。

手順や複雑さに違いはないため、普段よく使用するアカウントを選んで作成しましょう。
画面の指示に従い「GitHub」または「Google」アカウントでログインを行えば、Difyアカウントの作成は完了です。

STEP
設定を開く
Difyホーム画面
Difyホーム画面

アカウント作成またはログインが完了すると、Difyのトップページに移動します。

この画面右上に表示されている「自身のアカウント名」をクリックし、表示されるメニューから「設定」を選択します。

STEP
ChatGPTまたはClaudeと連携する
Difyのモデルプロパイダー画面
Difyのモデルプロパイダー画面

「モデルプロパイダー」を選択し、LLMの設定画面に移動します。

ChatGPTとClaudeに関しては標準でモデルの組み込みが行われているため、この2つのLLMのどちらかを使用してDifyを利用する場合には、

ChatGPTの場合は、OpenAIタブの横にある「API-KEYセットアップ」
Claudeの場合は、ANTHROPICタブの横にある「API-KEYセットアップ」

をクリックして、APIキーのセットアップ画面を表示します。
表示された画面にそれぞれのAPIキーを入力すると接続が完了し、Difyで使用できるようになります。

※ChatGPTの利用に限り、API接続を行わなくても一定回数無料で使用することが可能です。

STEP
ChatGPTまたはClaude以外のLLMと接続する
Difyのモデルプロパイダー画面
Difyのモデルプロパイダー画面

ステップ2と同様に、「モデルプロパイダー」を選択しLLMの設定画面に移動します。

この画面の下に表示されている、「モデルプロパイダを追加」から、使用したいLLMを探し、カーソルを合わせます。
カーソルを合わせると「モデルを追加」または「セットアップ」という表示が現れるため、そちらをクリックします。

表示された画面の指示に従い、モデルタイプの選択やAPIキーなどの求められた情報を入力すると接続が完了し、Difyで使用できるようになります。

※この設定は必須ではありません。特定のLLMをDifyで使用したい場合のみ設定を行なってください。

STEP
アプリを作成する
Difyホーム画面
Difyホーム画面

LLMの接続を行ったらホーム画面に移動し、「アプリを最初から作成」というボタンを選択します。

STEP
アプリの詳細を入力する
Difyアプリ作成画面
Difyアプリ作成画面

表示される画面で以下のように設定を行い、「作成する」ボタンをクリックします。

アプリタイプ:チャットボット
オーケストレーション:Chatflow
アプリアイコン:任意のものを選択
アプリ名:任意の名前を入力

STEP
アプリを公開する
Difyアプリ構築画面
Difyアプリ構築画面

今回は「AIに質問文を送付して、それに対する回答を得る」という簡単な処理のみ行うSlackBotを作成するため、Difyでのアプリ作成時に標準で構築されている機能をそのまま利用します。
特に編集を行うことなく、画面右上に表示されている「公開する」というボタンからアプリの公開を行いましょう。

※特定の情報からのみ返答を行なって欲しい場合や、画像の生成などを行うSlackBotを作成したい場合には、この画面でDifyの構築を行う必要があります。

STEP
APIの管理画面に移動する
Dify APIアクセス管理画面
Dify APIアクセス管理画面

サイドメニューから「APIアクセス」を選択し、APIの管理画面に移動します。

移動後の画面で、右上に表示されている「APIキー」をいうボタンをクリックします。

STEP
APIキーを取得する
Dify APIキー発行画面
Dify APIキー発行画面

「新しいシークレットキーを作成」というボタンをクリックし、APIキーを取得します。

ここで取得したAPIキーは後ほど使用するため、必ず控えておきましょう。

【手順②】SlackBotを作成する

STEP
以下のURLよりSlack apiのサイトに移動する

URL:https://api.slack.com/apps

ブラウザ上でSlackにログインしていない場合は、その場でログインが求められます。
SlackBotを追加したいワークスペースにログインをしてください。

STEP
アプリ(SlackBot)を作成する
Slackのアプリ作成画面
Slack アプリ作成画面

「Create an App」をクリックして、アプリの作成画面に移動します。

STEP
作成するアプリの種類を選択
Slackのアプリ作成画面
Slack アプリ作成画面

「From scratch」を選択します。

STEP
アプリの名前を決める
Slackのアプリ作成画面
Slack アプリ作成画面

「アプリ名の入力」と「作成するアプリを追加するワークスペースの選択」を行います。

STEP
権限の付与を行う
Slackの権限付与を行う画面
Slack 権限付与画面

サイドメニューから「OAuth & Permissions」を選択します。
選択後に表示される画面で、下の方にスクロールし「Scopes」の設定項目まで移動します。

「Add an OAuth Scope」を選択し、表示されるメニューの中から以下の権限を付与します。
・app_mentions:read
・channels:read
・chat:write

STEP
アプリのユーザー名を変更する
Slackのアプリ名編集画面
Slack アプリ名編集画面

サイドメニューから「App Home」を選択し、App Display Nameの編集ボタンをクリックします。

表示される画面で、アプリの表示名やユーザー名を入力します。

STEP
作成したアプリをSlackにインストールする
Slackのアプリインストール画面
Slack アプリインストール画面

サイドメニューから「Install App」を選択し、「Install to (ワークスペース名)」をクリックします。

STEP
トークンを控える
Slackのトークン取得画面
Slack トークン取得画面

アプリのインストール後に表示される画面に、「Bot User OAuth Token」という項目が表示されます。

トークンは後ほど使用するため、必ず控えておきましょう。

STEP
Slackチャンネルにアプリを追加する
Slackインテグレーション画面
Slackインテグレーション画面

スラックを起動し、アプリを追加したいチャンネルに移動します。
チャンネル設定を開き、インテグレーションの項目から「アプリを追加する」をクリックします。

表示されるアプリ一覧から作成したアプリを選択し、チャンネルに追加します。

【手順③】AWS Lambdaの設定を行う

今回はより簡単・手軽にSlackBotを開発するため、AWS Lambdaの「関数URL」という機能を使用します。

STEP
以下のURLよりAWSの公式サイトに移動する
STEP
アカウントを作成する
AWS公式サイト
AWS公式サイト

「無料で開始する」または「今すぐ無料サインアップ」というボタンをクリックし、会員登録を行います。

会員登録を行う中でメールアドレスや電話番号の認証、クレジットカード情報の登録が必要となります。
スマートフォンやクレジットカードを手元に用意した状態で、アカウントを作成しましょう。

既にアカウントを保有している方は、ログインを行なってください。

STEP
Lambdaを起動する
AWS サービス検索画面
AWS サービス検索画面

会員登録やログインを行うと、AWSのトップページに移動します。

トップページ上部に表示されている検索バーに「Lambda」と入力して、「Lambda」のサービスページに移動します。

STEP
関数を作成する
Lambdaサービスページ
Lambdaサービスページ

「関数の作成」というボタンをクリックして関数を作成します。

STEP
関数の設定を行う①
Lambda設定画面
Lambda設定画面

「関数名」を入力します。
外部に公開されることはないため、自身が管理しやすい名前で設定することをお勧めします。

関数名の入力を終えたら、画面を下にスクロールします。

STEP
関数の設定を行う②
Lambda設定画面
Lambda設定画面

「詳細設定」を選択し、「関数URLを有効化」というボタンにチェックを入れます。
また、「認証タイプの選択」をあわせて行います。

ここでは簡単にアプリを構築するために認証タイプを「NONE」としていますが、不正アクセス等防止の観点からは「AWS_IAM」を選択されることをお勧めします。

「関数名」「関数URL」「認証タイプ」の3つの設定を終えたら、「関数の作成」というボタンをクリックして関数を作成します。

STEP
コードを編集する
Lambdaコード編集画面
Lambdaコード編集画面

関数の作成を終えたら、Lambdaの詳細画面に切り替わります。
この画面を下にスクロールし、「コード」という機能の編集画面まで移動します。

正しくLambda関数が動くことを確認するために既存のコードを以下のものに差し替えて、「Deploy」ボタンをクリックします。

export const handler = async (event) => {
  const body = JSON.parse(event.body);

  if (body && body.challenge) {
    return {
      statusCode: 200,
      body: JSON.stringify({ challenge: body.challenge }),
    };
  }

  return {
    statusCode: 400,
    body: JSON.stringify('Invalid request'),
  };
};
STEP
関数URLを取得する
Lambda関数詳細画面
Lambda関数詳細画面

コードの編集画面から一番上までスクロールし、「関数URL」を取得します。

取得したURLは後ほど使用するため、必ず控えておきましょう。

【手順④】SlackとLambdaを紐づける

STEP
関数URLの入力を行う
Slack EventSubscriptions画面
Slack EventSubscriptions画面

Slack apiのサイトに戻り、サイドバーから「Slack Event Subscriptions」を選択します。

「Enable Events」という機能をオンに切り替えて、Request URLの入力欄に先ほど取得した「Lambdaの関数URL」を入力します。

入力後「Verified」と表示されれば、関数URLの設定が正常に行えています。

STEP
権限の付与を行う
Slack EventSubscriptions画面
Slack EventSubscriptions画面

Request URLの入力欄の下に表示されている「Subscribe to bot events」というタブを開き、「app_mention」という権限を付与します。

この権限付与の操作を行うことによって、SlackBotのメンションが含まれるメッセージのみLLMにテキストデータを送付して回答を求めることが可能になります。

設定を終えたら「Save Changes」をクリックして保存します。

【手順⑤】AWS Lambdaの設定を完了する

STEP
コードを編集する
Lambdaコード編集画面
Lambdaコード編集画面

AWS Lambdaの関数編集画面に戻り、動作確認用のコードを以下のものに差し替え、Deployします。

import https from 'https';

const hasSlackRetryHeader = (event) => {
  const headers = event.headers || {};
  return headers['x-slack-retry-num'] !== undefined;
};

const sendRequest = (hostname, path, postData, token) => {
  return new Promise((resolve, reject) => {
    const req = https.request({
      hostname, path, method: 'POST',
      headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }
    }, res => {
      let data = '';
      res.on('data', chunk => data += chunk);
      res.on('end', () => resolve(JSON.parse(data)));
    });

    req.on('error', reject);
    req.write(JSON.stringify(postData));
    req.end();
  });
};

export const handler = async (event) => {
  if (hasSlackRetryHeader(event)) {
    return { statusCode: 200, body: 'Retry event ignored' };
  }

  try {
    const { text, channel, thread_ts, user } = JSON.parse(event.body).event;

    const difyResponse = await sendRequest('api.dify.ai', '/v1/chat-messages', {
      query: text, response_mode: 'blocking', user, inputs: {}
    }, process.env.DIFY_API_KEY);

    await sendRequest('slack.com', '/api/chat.postMessage', {
      channel, text: difyResponse.answer, thread_ts
    }, process.env.SLACK_TOKEN);

    return { statusCode: 200, body: 'Message sent successfully' };
  } catch (error) {
    console.error('Error occurred:', error.message);
    return { statusCode: 500, body: 'Internal Server Error' };
  }
};

※コードは一例です。必要に応じて編集を行なってください。

STEP
環境変数の入力を行う
Lambda環境変数設定画面
Lambda環境変数設定画面

設定タブから「環境変数」を選択し、表示された画面で「編集」ボタンをクリックします。

STEP
APIキーやトークン情報を入力する
Lambda環境変数設定画面
Lambda環境変数設定画面

表示された画面に、以下を参考に環境変数を入力します。

キー
DIFY_API_KEYDifyのAPIキーを入力
SLACK_TOKENSlackのトークンを入力

入力を終えたら、設定はすべて完了です。

【手順⑥】テストを行う

STEP
メッセージを送信し、回答を確認する
Slack チャット画面
Slack チャット画面

作成したアプリを追加したチャンネルで、アプリをメンションした状態でAIに確認したい内容を送信します。
送信後、チャットやスレッドに返答が届いたら動作テストは完了です。

このままSlackBotとして利用することができます。

STEP
タイムアウトの時間を変更する
Lambda設定画面
Lambda設定画面

AIからの返答文が長い場合には処理がタイムアウトしてしまい、返答が届かないことがあります。

タイムアウトを防ぐにはLambdaの関数設定画面で「一般設定」を開き、タイムアウトの秒数を変更する必要があります。
デフォルトでは「3秒」となっているため、「5~10秒程度」に変更することをお勧めします。

このタイムアウトの設定を変更してもAIから返答が届かない場合には、もう一度開発手順の確認を行うことをお勧めします。


Difyを用いた「Slackで使用できるAIチャットボット」の構築方法の解説は以上です。この情報がDifyへの理解促進や業務の効率化につながれば嬉しく思います。

弊社Walkersでは、“AIトレンドに乗り遅れたくないけど、具体的な活用法が見えない…”を解決するAI導入支援を行っています。補助金により1/3のコストで導入可能なので、ぜひAI活用にお悩みがある方はお気軽にご相談下さい。

AI導入支援サービスの概要はこちら>>

Walkersに無料で相談する>>

  • URLをコピーしました!

この記事を書いた人

ノーコード・AI開発会社「Walkers」のCMO。
AIサービス「Prompt Lab」運営。
その他、受託開発や教育など多数のAI事業に参画している。

クリックできる目次