kintoneとDifyの連携でFAQチャットボットを開発!

kintoneのFAQ情報をDifyのチャットボットで活用しよう!
kintoneは、業務データを一元管理できるノーコードツールとして、多くの企業で活用されています。特にFAQをアプリ化すれば、社内外の問い合わせ対応を効率化できます。しかし、こんな課題に悩んでいませんか?
「FAQに載っているのに、同じ問い合わせが何度も来る」
「結局、担当者が対応しなければならず、負担が減らない」
そのお悩み、Difyのチャットボットが解決します!
Difyなら、kintoneのFAQ情報をもとにAIが自動で回答。しかも、ノーコードで簡単に作成できるので、24時間365日、スムーズに対応が可能です。
私たちフルバックは、これまでに中小企業の最後の砦として、多くの企業のIT課題を支援してきました。
そして今回、どの企業でも発生するFAQ対応を、Dify×kintoneのチャットボットで自動化する事例を本記事でご紹介したいと思います。
是非、試してみてください!
1. kintoneとDifyを連携するメリット
✅ 問い合わせ対応の負担を軽減
kintone内のFAQ情報をチャットボットから回答できるようになることで、よくある質問に自動回答が可能になります。これにより、問い合わせ対応の負担が軽減し、業務効率が向上します。
✅ 24時間対応可能
Difyに限らず、チャットボットは24時間365日稼働するため、営業時間外の問い合わせにも対応できます。
✅ ノーコードで簡単設定
kintoneとDifyはどちらもノーコードでの設定が可能なので、プログラミングの知識がなくても簡単に連携できます。
✅ FAQの更新が簡単
kintoneのFAQアプリを更新するだけで、チャットボットの回答内容も自動的に更新されます。そのため、情報の鮮度を保ちやすく、常に最新の回答を提供できます。
2. 連携に必要な準備
必要なツール
kintone(FAQアプリを作成)<kintoneについてはこちら>
Dify(チャットボット作成・連携)<Difyについてはこちら>
事前準備
kintoneのFAQアプリを作成(質問・回答フィールドを作る)
kintone APIトークンを発行(読み取り権限を設定)
Difyのアカウント作成
チャットボットの作成(Difyの管理画面で新規作成)
3. 具体的な流れ
①kintone内にFAQを蓄積するアプリを用意する
kintone上でFAQを管理するためのアプリを作成し、質問と回答のフィールドを設定します。カテゴリを追加すると、より細かい分類が可能です。適切なカテゴリ分けを行うことで、Difyがより正確に回答できるようになります。


②kintone側でAPIトークンを発行する
外部ツールと連携するために、kintoneのAPIトークンを発行します。FAQアプリの設定画面から「APIトークン」を生成し、必要な読み取り権限を付与します。
今回は「レコード閲覧」に✔︎が入っていれば、OKです。

③Difyでチャットボットのフローを作成する
Difyの管理画面でチャットボットを作成し、会話の流れを設計します。

配置したブロックについて解説します。
【開始ブロック】
ユーザーの最初の問い合わせを受け付けるブロック。オープナーを設定し、選択肢を表示させ、ユーザーが適切な質問を選びやすいようにします。


【IF/ELSEブロック】
問い合わせ内容をカテゴリごとに振り分けるための条件分岐を設定。ユーザーが選択した内容に応じて適切な回答に誘導します。

開始ブロックでボタンを期待通りにクリックすると、「自動化装置」のようにキーワードのみが出力されます。そのキーワードが条件のカテゴリ名と一致する場合、後続の変数代入ブロックで会話中のカテゴリを記録し、さらに具体的な質問を引き出す回答を出力します。

【変数代入ブロック(カテゴリ名と一致した場合)】
このブロックは、どのカテゴリについて会話しているのかを記録するために使用します。あらかじめ「会話変数」で変数を設定しておくことで、ワークフロー内で上書きやクリアが可能になります。今回は、質問のカテゴリを登録するための "Category" という変数を用意しました。
開始ブロックでカテゴリの選択ボタンを期待通りに押した場合、Category にカテゴリ名が代入されます。

【回答ブロック(カテゴリ名と一致した場合)】
回答ブロックでは、チャット画面で回答される内容を設定します。

前ブロックに格納したカテゴリ名を変数として代入しているので、下記のように回答されます。

【質問分類器ブロック(カテゴリ名と一致なかった場合)】
前述の IF/ELSE ブロックで条件が一致しなかった場合、処理は 質問分類器ブロック に進みます。
質問分類器ブロック は、ユーザーからの入力(質問)を、あらかじめ定義した複数の分類クラスに基づいて自動的に振り分ける機能です。具体的には、大規模言語モデル(LLM)の自然言語理解能力を活用し、ユーザーの質問内容を解析して、事前に設定した分類クラス(例:FAシステム、自動化装置、省エネルギー など)の中から最も適切なものを推論します。
このブロックを用いることで、質問の内容を絞り込み、システム全体の応答精度を向上させるとともに、処理負荷の軽減を図ることができます。
また、質問分類器 の分類基準は「高度な設定」に入力することで調整可能です。これにより、質問と回答のズレを防ぎます。今回の場合、Category 変数には既に質問のカテゴリが格納されているため、質問分類器が不要なくらい明確な内容ですが、「高度な設定」に適切な指示を与えないと、例えば 「コストはどれくらいかかる?」 という質問があった際に、どのカテゴリのコストについて尋ねているのかが不明確になってしまいます。
そこで、Category の情報を質問分類器に添えることで、AIが 「これは自動化装置のことだな。コストがどれくらいかかるのかを聞いているのだな」 と適切に判断できるようにしました。

【変数代入ブロック】
後続の変数代入ブロックは必須ではありません。
ただし、万が一ユーザーの聞きたい内容が変わった場合に、Category 変数を質問分類器の結果で上書きするために配置しました。

【HTTPリクエストブロック】
このブロックでは、kintone 内の FAQアプリ に保存されたレコードを取得します。
リクエストの形式については、kintone APIドキュメントをご参照ください。
※画像ではブロック内にAPIトークン情報などを記載していますが、実際の運用では環境変数などを活用し、安全に管理してください。
⚠ 本記事では kintone のお試し環境を使用しています。
<URL>
GET https://{あなたのサブドメイン}.com/k/v1/records.json<ヘッダー>
キー | 値 |
|---|---|
X-Cybozu-API-Token | 発行したAPIトークン |
Content-Type | application/json |
<パラメータ>
なし
<ボディ>
JSON形式 で以下のように指定します。
{
"app": 5,
"query": "カテゴリ in (\"{Categoryを指定}\")",
"fields": [ "質問", "回答"]
} 
カテゴリを絞り込んで取得することで、トークン使用量を抑え、不要な情報が出力されないようにしています。
今回は、HTTPリクエストブロック に直接 ドメイン情報 や APIトークン を入力しましたが、これらの情報は 「環境変数」 内で管理することも可能です。

【LLMブロック】
このブロックは、kintone の FAQアプリ に登録された情報をもとに、文章を生成するためのブロックです。
SYSTEM 内にプロンプトを入力し、適切な回答を生成します。
<プロンプト例>
あなたの役割は、事前情報をもとに適切な回答を提供すること です。
ただし、事前情報に含まれていない場合は、一定のルールに従い対応してください。
【ルール】
事前情報に基づく回答を優先する。
事前情報にない場合は、以下の形式で回答する:
まず、「準備した情報には記載がありません」と伝える。
その後、「私の見解では…」と一般的な回答を提供する。
最後に、「これは私の見解であり、準備している情報ではありません」と明記する。
回答は簡潔かつ明確にする。
【事前情報】
{{#context#}}
【テンプレートブロック】
このテンプレートブロックでは、回答時にユーザーが次のアクションを選択できるボタンを作成します。
以下のコードを使用し、各ボタンには対応するデータメッセージを設定しています。
<button data-message="FAシステム">FAシステム</button>
<button data-message="電装システム">電装システム</button>
<button data-message="自動化装置">自動化装置</button>
<button data-message="省エネルギー">省エネルギー</button>
<button data-message="IotとAI">IotとAI</button>
<button data-message="アフターサポート">アフターサポート</button>
【回答ブロック】
LLMブロックから生成された文章に、テンプレートブロックのボタンを追加して出力します。


【LLMブロック(質問分類器で"その他"だった場合)】
最後に、User から FAQ に全く関係のない質問 が来た場合の対応について簡単に解説します。
質問分類器 で "その他" を設定し、質問内容がカテゴリとは関係ない場合に "その他" として処理。
"その他" に分類された質問は、後続の LLM ブロック に渡される。
LLM ブロック では、準備できていない旨を回答するように指示。
変数代入ブロック をクリアし、回答ブロック に渡す。


以上、kintone と Dify を連携した FAQチャットボットの作成 について解説しました!
今回のブロックでは、会話の内容が FAQ から大きくズレないようにするため、会話中に選択肢を表示させたり、会話変数を活用したり しました。そのため、少し複雑な構造になりましたが、以下のようなシンプルな構成でも十分に機能するでしょう。

kintoneとDifyを連携して業務効率化を実現!
今回はkintoneとDifyを連携させてAIチャットボットの開発方法をご紹介しました。
「問い合わせ対応がパンクしそう…」
「AIを使って業務を効率化したいけれど、何から始めればいいのかわからない…」
そんな方は是非、Difyを使ってAI導入への第一歩を踏み出してみませんか?
フルバックでは、中小企業の「最後の砦」として、「もう手が回らない…」「何をどうすればいいのかわからない…」 というIT環境の課題を解決するために、さまざまな技術を組み合わせた最適なソリューションを提供しています!
「kintone を導入してみたい!」
「Dify を活用して AI を業務に取り入れたい!」
そんな方は、ぜひ フルバック にご相談ください!
最適な業務改善ソリューションを一緒に考え、導入をサポートいたします。
まずはお気軽にお問い合わせください!
