DifyはノーコードでAIチャットボットを構築できるプラットフォームですが、その真の力はAPI連携によってさらに引き出されます。DifyのREST APIを使うことで、既存のCRMやSlack・メールシステムとシームレスに統合し、AIの能力をビジネスプロセス全体に組み込むことが可能です。
本記事では、Dify APIの基本的な使い方から、実際の外部サービス連携の実装方法まで、実践的に解説します。
Dify APIの基本概念
Dify APIとは
Dify APIは、DifyプラットフォームのAIアプリケーション機能をプログラムから呼び出すためのREST APIです。チャット・テキスト生成・画像分析などの機能を、HTTPリクエストを通じて任意のアプリケーションから利用できます。
主要なAPIエンドポイント
Dify APIには、用途に応じた複数のエンドポイントが用意されています。
チャットアプリケーション向け
POST /v1/chat-messages: メッセージを送信してAIからの応答を取得GET /v1/conversations: 会話一覧の取得GET /v1/conversations/{conversation_id}/messages: 特定会話のメッセージ履歴取得
テキスト生成アプリケーション向け
POST /v1/completion-messages: プロンプトに対するテキスト生成
ファイル管理
POST /v1/files/upload: ファイルアップロード(画像・PDF等)
認証方式
Dify APIはAPIキー認証を採用しています。管理画面の「API Keys」から発行したAPIキーを、リクエストヘッダーに設定します。
Authorization: Bearer {YOUR_API_KEY}
APIキーはアプリケーションごとに発行され、権限管理が可能です。本番環境と開発環境で別のキーを使い分けることを推奨します。
基本的なAPIの呼び出し方
チャットメッセージの送信
最も基本的なAPI呼び出しは、チャットメッセージの送信です。
リクエスト例
curl -X POST 'https://api.dify.ai/v1/chat-messages' \
-H 'Authorization: Bearer {YOUR_API_KEY}' \
-H 'Content-Type: application/json' \
-d '{
"inputs": {},
"query": "製品の返品ポリシーについて教えてください",
"response_mode": "blocking",
"user": "user-001"
}'
レスポンス例(抜粋)
{
"message_id": "abc123",
"conversation_id": "conv-456",
"answer": "返品ポリシーについてご説明します...",
"created_at": 1709123456
}
ストリーミングレスポンスの活用
response_modeをstreamingに設定すると、AIの回答をリアルタイムで受け取れます。長い回答の場合、ユーザーがすべての生成完了を待たずに読み始められるため、体感速度が大幅に向上します。
curl -X POST 'https://api.dify.ai/v1/chat-messages' \
-H 'Authorization: Bearer {YOUR_API_KEY}' \
-H 'Content-Type: application/json' \
-d '{
"inputs": {},
"query": "詳しい説明をお願いします",
"response_mode": "streaming",
"user": "user-001"
}'
Server-Sent Events(SSE)形式でレスポンスが返ってくるため、JavaScriptのEventSourceやPythonのsseclientライブラリで受け取れます。
外部サービスとの連携実装
CRM(Salesforce・HubSpot)との連携
チャットボットで取得した問い合わせ情報をCRMに自動登録する連携は、BtoBビジネスで特に価値があります。
実装フロー
- ユーザーがチャットボットで問い合わせを送信
- Dify APIがAIによる回答を生成・返却
- Webhookまたはバックエンドサーバーが会話データを受信
- CRM APIを呼び出してリード情報を作成
- 担当者にSlackやメールで通知
Node.jsでの実装例
const express = require('express');
const axios = require('axios');
const app = express();
app.use(express.json());
app.post('/webhook/dify', async (req, res) => {
const { conversation_id, user_id, message } = req.body;
// Dify APIから会話詳細を取得
const conversation = await axios.get(
`https://api.dify.ai/v1/conversations/${conversation_id}/messages`,
{ headers: { 'Authorization': `Bearer ${process.env.DIFY_API_KEY}` } }
);
// HubSpot CRMにコンタクトとして登録
await axios.post('https://api.hubapi.com/crm/v3/objects/contacts', {
properties: {
email: extractEmail(conversation.data),
hs_lead_status: 'NEW',
message: message
}
}, {
headers: { 'Authorization': `Bearer ${process.env.HUBSPOT_API_KEY}` }
});
res.json({ status: 'success' });
});
Slack連携による通知自動化
新しい問い合わせが発生した際に、担当者のSlackチャンネルへ自動通知する仕組みを構築できます。
Slack Incoming Webhookを使った通知
import requests
import json
def notify_slack(conversation_id: str, user_message: str, ai_response: str):
webhook_url = "https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK"
message = {
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "新規チャット問い合わせ"
}
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": f"*会話ID:*\n{conversation_id}"
},
{
"type": "mrkdwn",
"text": f"*ユーザーメッセージ:*\n{user_message}"
}
]
}
]
}
requests.post(webhook_url, data=json.dumps(message))
メール自動送信との連携
問い合わせ内容に応じてフォローアップメールを自動送信する連携も実装できます。SendGrid・Amazon SES・MailchimpなどのメールAPIと組み合わせます。
SendGrid APIとの連携例
import sendgrid
from sendgrid.helpers.mail import Mail
def send_followup_email(to_email: str, conversation_summary: str):
sg = sendgrid.SendGridAPIClient(api_key=os.environ.get('SENDGRID_API_KEY'))
message = Mail(
from_email='support@yourcompany.com',
to_emails=to_email,
subject='お問い合わせいただきありがとうございます',
html_content=f'''
<p>この度はお問い合わせいただきありがとうございます。</p>
<p>内容を確認し、担当者より改めてご連絡いたします。</p>
<hr>
<h3>お問い合わせ概要</h3>
<p>{conversation_summary}</p>
'''
)
sg.send(message)
Dify Workflowによる高度な自動化
ワークフロー機能の概要
DifyのWorkflow機能を使うと、複数のAI処理ステップや外部API呼び出しをグラフィカルに組み合わせた複雑な自動化フローを構築できます。
実用的なワークフロー例
- 問い合わせ分類 → ルーティング: ユーザーの問い合わせを「技術サポート」「請求」「一般質問」に分類し、担当部署に振り分け
- ドキュメント解析 → 要約 → 回答生成: PDFや契約書をアップロードし、内容を要約した上でQAに対応
- 多言語対応: 入力言語を検出し、適切な言語で回答生成
ワークフローAPIの呼び出し
curl -X POST 'https://api.dify.ai/v1/workflows/run' \
-H 'Authorization: Bearer {YOUR_API_KEY}' \
-H 'Content-Type: application/json' \
-d '{
"inputs": {
"document_url": "https://example.com/contract.pdf",
"question": "契約の解約条件は何ですか?"
},
"response_mode": "blocking",
"user": "user-001"
}'
ボットマによるAPI連携の簡便化
DifyのAPI連携は強力ですが、バックエンドサーバーの構築・Webhook設定・APIの認証管理など、エンジニアリングのリソースが必要です。
ボットマが提供するノーコード連携機能
ボットマはDifyのAPIと連携し、以下の機能をコードなしで実現します。
メール通知の自動設定
新規会話の開始・特定キーワードの検出・会話の未対応状態が続いた場合などのトリガーでメール通知を送信します。バックエンドサーバーを構築することなく、管理画面から通知条件を設定できます。
会話スレッド管理
すべての会話を一覧で確認でき、対応状況(未対応・対応中・完了)を管理できます。チームでの運用では、担当者を割り当てたり、対応メモを記録したりすることも可能です。
入力フォームによるデータ収集
チャット開始前にユーザー情報(名前・メールアドレス・会社名・問い合わせカテゴリ)を収集するフォームを設定できます。収集したデータはCSVでエクスポートも可能です。
アクセス制限
パスワード保護機能により、特定のユーザーのみにチャットボットへのアクセスを限定できます。社内向けチャットボットや限定公開のサービスに活用できます。
API連携のベストプラクティス
エラーハンドリングを必ず実装する
API呼び出しは失敗する可能性があります。ネットワークエラー・タイムアウト・レート制限などに対応したリトライ処理と適切なエラーメッセージをユーザーに表示する仕組みが必要です。
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
def create_session_with_retries():
session = requests.Session()
retry = Retry(
total=3,
backoff_factor=1,
status_forcelist=[500, 502, 503, 504]
)
adapter = HTTPAdapter(max_retries=retry)
session.mount('https://', adapter)
return session
APIキーのセキュリティ管理
APIキーはソースコードにハードコードせず、環境変数や秘密管理サービス(AWS Secrets Manager・HashiCorp Vault等)で管理します。GitHubなどの公開リポジトリにAPIキーを含むコードをコミットすることは絶対に避けてください。
レート制限への対応
DifyのAPIにはレート制限があります。大量のリクエストを送る場合は、キューイング・バッチ処理・キャッシュ戦略を組み合わせて効率的にAPIを活用しましょう。
まとめ
Dify APIを活用することで、AIチャットボットをCRM・Slack・メールシステムなど既存のビジネスインフラに統合し、業務の自動化・効率化を実現できます。基本的なAPI呼び出しからワークフロー自動化まで、段階的に活用範囲を広げることをおすすめします。
一方で、API連携の構築にはエンジニアリングリソースが必要です。ボットマを活用することで、よく使われる連携パターン(通知・フォーム・アクセス制限)をノーコードで即座に実装でき、エンジニアの工数を本質的な業務ロジックの開発に集中させることができます。
ボットマでDifyチャットボットをもっと便利に
ボットマは、DifyのチャットボットにUI/UXカスタマイズ・会話スレッド管理・メール通知・入力フォーム・アクセス制限機能を追加できるSaaSプラットフォームです。