「LINE公式アカウントの自動応答、キーワード反応しかできなくて使えない…」
「Difyで作った賢いAIを、LINEのお客様対応に使いたい!」
その願い、Google Apps Script(GAS)を使えば無料で実現できます。
通常、AIをLINEに繋ぐには複雑なプログラミングが必要ですが、DifyのAPIを使えば驚くほど簡単です。
本記事では、「文脈(会話の流れ)を記憶して返信する」高性能なLINE Botを、コピペだけで実装する手順を解説します。
【結論】GASを「翻訳機」として間に挟む
LINEとDifyは直接会話できません。そこで、Googleが提供する無料のスクリプト実行環境「GAS」を仲介役(ブリッジ)にします。
全体のデータの流れ:
- お客様: LINEでメッセージ送信
- LINE: GASに「メッセージ来たよ」と通知(Webhook)
- GAS: Difyにその文章を転送(API)
- Dify: AIが考えて回答を作成
- GAS: 回答をLINEに返送
難しそうに見えますが、やることは「3つのキーをコピーして、コードを貼り付けるだけ」です。
【完全ガイド】実践!連携ステップ
Step 1: DifyでAPIキーを発行する
- Difyで連携させたい「チャットボット」アプリを開きます(エージェントではなくチャットボット推奨)。
- 左メニューの [APIアクセス] をクリックします。
- 右上の [APIキー] をクリックし、[新しいシークレットキーを作成] してコピーします。
- 同じ画面にある [APIサーバーのURL](例:
https://api.dify.ai/v1)も確認しておきます。
Step 2: LINE Developersでチャネルを作る
- LINE Developers にログインします。
- プロバイダーを作成し、[Messaging API] チャネルを新規作成します。
- 作成後、以下の2つを取得してメモ帳に控えます。
- チャネルアクセストークン(長期): [Messaging API設定] タブの一番下で発行。
- チャネルシークレット: [チャネル基本設定] タブにあります。
- 同画面で [応答メッセージ] を「無効」、[Webhook] を「有効」に設定しておきます。
Step 3: GASに「神コード」をコピペする
ここが山場ですが、コピペするだけです。
- Google Apps Script を開き、[新しいプロジェクト] を作成します。
- エディタにあるコードを全て消し、以下のコードを貼り付けます。
// ▼▼▼ 設定エリア(ここだけ書き換える) ▼▼▼
const LINE_CHANNEL_ACCESS_TOKEN = ‘ここにLINEのアクセストークンを貼る’;
const DIFY_API_KEY = ‘ここにDifyのAPIキーを貼る’;
const DIFY_BASE_URL = ‘
// ▲▲▲ 設定エリア終了 ▲▲▲
function doPost(e) {
const json = JSON.parse(e.postData.contents);
const events = json.events;
events.forEach(event => {
if (event.type === ‘message’ && event.message.type === ‘text’) {
const userId = event.source.userId;
const userMessage = event.message.text;
const replyToken = event.replyToken;
try {
// 1. 文脈IDをキャッシュから取得
const cache = CacheService.getScriptCache();
const conversationId = cache.get(userId) || “”;
// 2. Difyに質問を投げる
const difyResponse = callDifyApi(userMessage, userId, conversationId);
const aiMessage = difyResponse.answer;
const newConversationId = difyResponse.conversation_id;
// 3. 新しい文脈IDを保存(有効期限10分)
if (newConversationId) {
cache.put(userId, newConversationId, 600);
}
// 4. LINEに返信
replyToLine(replyToken, aiMessage);
} catch (err) {
// エラー時はログに残す
console.error(err);
}
}
});
return ContentService.createTextOutput(JSON.stringify({content: “post ok”})).setMimeType(ContentService.MimeType.JSON);
}
function callDifyApi(query, user, conversationId) {
const url = `${DIFY_BASE_URL}/chat-messages`;
const payload = {
“inputs”: {},
“query”: query,
“response_mode”: “blocking”,
“conversation_id”: conversationId,
“user”: user
};
const options = {
“method”: “post”,
“contentType”: “application/json”,
“headers”: {
“Authorization”: `Bearer ${DIFY_API_KEY}`
},
“payload”: JSON.stringify(payload)
};
const response = UrlFetchApp.fetch(url, options);
return JSON.parse(response.getContentText());
}
const url = ‘
const payload = {
“replyToken”: replyToken,
“messages”: [{ “type”: “text”, “text”: text }]
};
const options = {
“method”: “post”,
“contentType”: “application/json”,
“headers”: {
“Authorization”: `Bearer ${LINE_CHANNEL_ACCESS_TOKEN}`
},
“payload”: JSON.stringify(payload)
};
UrlFetchApp.fetch(url, options);
}
- コード上部の
LINE_CHANNEL_ACCESS_TOKENとDIFY_API_KEYを、Step 1・2で取得したものに書き換えます。 - 右上の [デプロイ] > [新しいデプロイ] をクリック。
- 歯車アイコンから [ウェブアプリ] を選択。
- [アクセスできるユーザー] を [全員] に変更して [デプロイ] します。
- 発行された [ウェブアプリURL] をコピーします。
Step 4: LINEとGASを繋ぐ
- LINE Developersに戻り、[Webhook URL] に先ほどのGASのURLを貼り付けます。
- [更新] を押し、その下の [検証] ボタンを押します。「成功」と出れば接続完了です!
- [Webhookの利用] スイッチをONにするのを忘れないでください。
テスト実行と感動の瞬間
あなたのLINE公式アカウントを友達追加し、メッセージを送ってみてください。
「こんにちは」→「こんにちは!今日はどうされましたか?」
「おすすめの商品は?」→「どのようなジャンルをお探しですか?」
このように、前の会話の内容を覚えた状態でラリーが続けば成功です。
よくあるトラブル (Q&A)
Q: 既読スルーされます(返信が来ません)
A: 以下の3点を確認してください。
- LINE Developersで「Webhookの利用」がONになっているか?
- LINE Official Account Manager(管理画面)の設定で、「応答メッセージ」がOFF、「Webhook」がONになっているか?
- GASの「アクセスできるユーザー」が「全員(Anyone)」になっているか?(「自分のみ」だと動きません)
Q: Difyのナレッジ(PDF)の内容を答えてくれますか?
はい。Dify側でナレッジベースを連携させたチャットボットアプリを使っていれば、LINEからの質問に対してもマニュアルに基づいて回答します。
まとめ
これで、あなたのLINE公式アカウントは「24時間365日、文脈を理解して接客するAIスタッフ」になりました。
- Dify: 頭脳(ナレッジ検索・文章生成)
- LINE: 接客窓口
- GAS: 通訳
この構成はコスト0円(Dify無料枠内)で始められ、最強の業務効率化につながります。ぜひ今日中に実装してみてください。


コメント