LINEチャンネルの設定と使用
学習完了後にできること
本チュートリアルを完了すると、以下のことができるようになります:
- ✅ LINE Messaging APIチャンネルを作成し、認証情報を取得する
- ✅ ClawdbotのLINEプラグインとWebhookを設定する
- ✅ DMペアリング、グループアクセス制御、メディア制限を設定する
- ✅ リッチメディアメッセージを送信する(Flexカード、クイックリプライ、位置情報)
- ✅ LINEチャンネルの一般的な問題をトラブルシューティングする
現在の課題
あなたは以下のようなことを考えているかもしれません:
- 「LINEでAIアシスタントと会話したい、どう統合すればいい?」
- 「LINE Messaging APIのWebhookはどう設定する?」
- 「LINEはFlexメッセージやクイックリプライをサポートしている?」
- 「LINEを通じてAIアシスタントにアクセスできるユーザーを制御したい」
良いニュース:Clawdbotは完全なLINEプラグインを提供しており、Messaging APIのすべての主要機能をサポートしています。
この機能を使用するタイミング
以下のニーズがある場合:
- 📱 LINE上でAIアシスタントと対話したい
- 🎨 リッチメディアメッセージを使用したい(Flexカード、クイックリプライ、Rich Menu)
- 🔒 アクセス権限を制御したい(DMペアリング、グループホワイトリスト)
- 🌐 LINEを既存のワークフローに統合したい
基本的な仕組み
LINEチャンネルはLINE Messaging APIを通じて統合され、Webhookを使用してイベントを受信しメッセージを送信します。
LINEユーザー
│
▼ (メッセージ送信)
┌──────────────────┐
│ LINE Platform │
│ (Messaging API)│
└────────┬─────────┘
│ (Webhook POST)
▼
┌──────────────────┐
│ Clawdbot │
│ Gateway │
│ /line/webhook │
└────────┬─────────┘
│ (AI呼び出し)
▼
┌────────┐
│ Agent │
└───┬────┘
│ (応答)
▼
LINEユーザー重要な概念:
| 概念 | 役割 |
|---|---|
| Channel Access Token | メッセージ送信用の認証トークン |
| Channel Secret | Webhook署名検証用の秘密鍵 |
| Webhook URL | ClawdbotがLINEイベントを受信するエンドポイント(HTTPS必須) |
| DM Policy | 不明な送信者のアクセスポリシー(pairing/allowlist/open/disabled) |
| Rich Menu | LINEの固定メニュー、ユーザーがクリックして素早く操作をトリガー |
🎒 開始前の準備
必要なアカウントとツール
| 項目 | 要件 | 取得方法 |
|---|---|---|
| LINE Developersアカウント | 無料登録 | https://developers.line.biz/console/ |
| LINE Provider | ProviderとMessaging APIチャンネルの作成 | LINE Console |
| HTTPSサーバー | WebhookはHTTPS必須 | ngrok、Cloudflare Tunnel、Tailscale Serve/Funnel |
推奨される公開方法
ローカル開発の場合、以下を使用できます:
- ngrok:
ngrok http 18789 - Tailscale Funnel:
gateway.tailscale.mode = "funnel" - Cloudflare Tunnel:無料で安定
実践ガイド
ステップ1:LINEプラグインのインストール
理由 LINEチャンネルはプラグインで実装されており、先にインストールする必要があります。
clawdbot plugins install @clawdbot/line期待される出力:
✓ Installed @clawdbot/line pluginローカル開発
ソースコードから実行している場合、ローカルインストールが可能です:
clawdbot plugins install ./extensions/lineステップ2:LINE Messaging APIチャンネルの作成
理由Channel Access TokenとChannel Secretを取得してClawdbotを設定する必要があります。
2.1 LINE Developers Consoleにログイン
アクセス:https://developers.line.biz/console/
2.2 Providerの作成(まだの場合)
- 「Create new provider」をクリック
- Provider名を入力(例:
Clawdbot) - 「Create」をクリック
2.3 Messaging APIチャンネルの追加
- Providerの下で「Add channel」→「Messaging API」を選択
- チャンネル情報を設定:
- Channel name:
Clawdbot AI Assistant - Channel description:
Personal AI assistant powered by Clawdbot - Category:
Communication - Subcategory:
Bot
- Channel name:
- 「Agree」にチェック→「Create」をクリック
2.4 Webhookの有効化
- チャンネル設定ページで「Messaging API」タブを見つける
- 「Use webhook」スイッチをクリック→ONに設定
- 以下の情報をコピー:
| 項目 | 場所 | 例 |
|---|---|---|
| Channel Access Token | Basic settings → Channel access token (long-lived) | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... |
| Channel Secret | Basic settings → Channel secret | 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7 |
認証情報を安全に保管!
Channel Access TokenとChannel Secretは機密情報です。安全に保管し、公開リポジトリに漏らさないでください。
ステップ3:ClawdbotのLINEチャンネルの設定
理由 LINE Messaging APIを使用してメッセージを送受信するためにGatewayを設定します。
方法A:コマンドラインで設定
clawdbot configureウィザードが以下を尋ねます:
- LINEチャンネルを有効にするか
- Channel Access Token
- Channel Secret
- DMポリシー(デフォルト
pairing)
方法B:設定ファイルを直接編集
~/.clawdbot/clawdbot.json を編集:
{
channels: {
line: {
enabled: true,
channelAccessToken: "YOUR_CHANNEL_ACCESS_TOKEN",
channelSecret: "YOUR_CHANNEL_SECRET",
dmPolicy: "pairing",
groupPolicy: "allowlist"
}
}
}環境変数の使用
環境変数でも設定可能(デフォルトアカウントのみ有効):
export LINE_CHANNEL_ACCESS_TOKEN="your_token_here"
export LINE_CHANNEL_SECRET="your_secret_here"方法C:ファイルで認証情報を保存
より安全な方法は認証情報を別のファイルに保存することです:
{
channels: {
line: {
enabled: true,
tokenFile: "/path/to/line-token.txt",
secretFile: "/path/to/line-secret.txt",
dmPolicy: "pairing"
}
}
}ステップ4:Webhook URLの設定
理由 LINEはClawdbotにメッセージイベントをプッシュするためにWebhook URLを必要とします。
4.1 Gatewayが外部からアクセス可能であることを確認
ローカル開発の場合、トンネルサービスを使用する必要があります:
# ngrokを使用
ngrok http 18789
# 出力にHTTPS URLが表示されます。例:
# Forwarding: https://abc123.ngrok.io -> http://localhost:187894.2 LINE ConsoleでWebhook URLを設定
- Messaging API設定ページで「Webhook settings」を見つける
- Webhook URLを入力:
https://your-gateway-host/line/webhook- デフォルトパス:
/line/webhook channels.line.webhookPathでカスタマイズ可能
- デフォルトパス:
- 「Verify」をクリック→LINEがGatewayにアクセスできることを確認
期待される出力:
✓ Webhook URL verification succeeded4.3 必要なイベントタイプを有効にする
Webhook settingsで以下のイベントにチェックを入れます:
| イベント | 用途 |
|---|---|
| Message event | ユーザーが送信したメッセージを受信 |
| Follow event | ユーザーがBotを友だち追加 |
| Unfollow event | ユーザーがBotを削除 |
| Join event | Botがグループに参加 |
| Leave event | Botがグループを退出 |
| Postback event | クイックリプライとボタンクリック |
ステップ5:Gatewayの起動
理由 LINEのWebhookイベントを受信するためにGatewayを実行する必要があります。
clawdbot gateway --verbose期待される出力:
✓ Gateway listening on ws://127.0.0.1:18789
✓ LINE webhook server started on /line/webhook
✓ LINE plugin initializedステップ6:LINEチャンネルのテスト
理由 設定が正しいか、AIアシスタントが正常に応答するかを検証します。
6.1 Botを友だちに追加
- LINE Console → Messaging API → Channel settings
- 「Basic ID」または「QR Code」をコピー
- LINEアプリで検索またはQRコードをスキャンしてBotを友だち追加
6.2 テストメッセージを送信
LINEでBotにメッセージを送信:
こんにちは、今日の天気をまとめてください。期待される出力:
- Botが「typing」状態を表示(typing indicatorsを設定している場合)
- AIアシスタントがストリームで応答を返す
- メッセージがLINEに正しく表示される
ステップ7:DMペアリングの検証(オプション)
理由 デフォルトの dmPolicy="pairing" を使用している場合、不明な送信者は最初に承認される必要があります。
承認待ちのペアリングリクエストを表示
clawdbot pairing list line期待される出力:
Pending pairing requests for LINE:
CODE: ABC123 - User ID: U1234567890abcdef1234567890abペアリングリクエストを承認
clawdbot pairing approve line ABC123期待される出力:
✓ Approved pairing request for LINE user U1234567890abcdef1234567890abDMポリシーの説明
pairing(デフォルト):不明な送信者はペアリングコードを受け取り、承認されるまでメッセージは無視されるallowlist:ホワイトリスト内のユーザーのみメッセージ送信を許可open:誰でもメッセージを送信可能(注意して使用)disabled:DMを無効化
チェックポイント ✅
設定が正しいか検証します:
| チェック項目 | 検証方法 | 期待される結果 |
|---|---|---|
| プラグインがインストール済み | clawdbot plugins list | @clawdbot/line が表示される |
| 設定が有効 | clawdbot doctor | LINE関連のエラーがない |
| Webhookが到達可能 | LINE Consoleでの検証 | ✓ Verification succeeded |
| Botがアクセス可能 | LINEで友だち追加してメッセージ送信 | AIアシスタントが正常に応答 |
| ペアリングメカニズム | 新規ユーザーでDM送信 | ペアリングコードを受信(pairingポリシー使用時) |
よくある落とし穴
よくある問題1:Webhook検証失敗
症状:
Webhook URL verification failed原因:
- Webhook URLがHTTPSではない
- Gatewayが実行されていないかポートが正しくない
- ファイアウォールがインバウンド接続をブロックしている
解決方法:
- HTTPSを使用していることを確認:
https://your-gateway-host/line/webhook - Gatewayが実行中か確認:
clawdbot gateway status - ポートを検証:
netstat -an | grep 18789 - トンネルサービスを使用する(ngrok/Tailscale/Cloudflare)
よくある問題2:メッセージを受信できない
症状:
- Webhook検証は成功
- しかしBotにメッセージを送信しても応答なし
原因:
- Webhookパスの設定が間違っている
- イベントタイプが有効化されていない
- 設定ファイルの
channelSecretが一致しない
解決方法:
channels.line.webhookPathがLINE Consoleと一致しているか確認- LINE Consoleで「Message event」が有効になっているか確認
channelSecretが正しくコピーされているか確認(余分なスペースなし)
よくある問題3:メディアダウンロード失敗
症状:
Error downloading LINE media: size limit exceeded原因:
- メディアファイルがデフォルト制限(10MB)を超えている
解決方法: 設定で制限を増やす:
{
channels: {
line: {
mediaMaxMb: 25 // LINE公式制限 25MB
}
}
}よくある問題4:グループメッセージに応答なし
症状:
- DMは正常
- グループでメッセージを送信しても応答なし
原因:
- デフォルト
groupPolicy="allowlist"、グループがホワイトリストに追加されていない - グループでBotを@mentionしていない
解決方法:
- 設定にグループIDをホワイトリストに追加:
{
channels: {
line: {
groupAllowFrom: ["C1234567890abcdef1234567890ab"]
}
}
}- またはグループでBotを@mention:
@Clawdbot このタスクを処理してください
高度な機能
リッチメディアメッセージ(Flexテンプレートとクイックリプライ)
ClawdbotはLINEのリッチメディアメッセージをサポートしています。Flexカード、クイックリプライ、位置情報などが含まれます。
クイックリプライの送信
{
text: "今日は何がお手伝いできますか?",
channelData: {
line: {
quickReplies: ["天気を確認", "リマインダー設定", "コード生成"]
}
}
}Flexカードの送信
{
text: "ステータスカード",
channelData: {
line: {
flexMessage: {
altText: "サーバーステータス",
contents: {
type: "bubble",
body: {
type: "box",
contents: [
{
type: "text",
text: "CPU: 45%"
},
{
type: "text",
text: "Memory: 2.1GB"
}
]
}
}
}
}
}
}位置情報の送信
{
text: "私のオフィスの場所です",
channelData: {
line: {
location: {
title: "Office",
address: "123 Main St, San Francisco",
latitude: 37.7749,
longitude: -122.4194
}
}
}
}Rich Menu(固定メニュー)
Rich MenuはLINEの固定メニューで、ユーザーはクリックして素早く操作をトリガーできます。
# Rich Menuの作成
clawdbot line rich-menu create
# メニュー画像のアップロード
clawdbot line rich-menu upload --image /path/to/menu.png
# デフォルトメニューに設定
clawdbot line rich-menu set-default --rich-menu-id <MENU_ID>Rich Menuの制限
- 画像サイズ:2500x1686 または 2500x843 ピクセル
- 画像フォーマット:PNGまたはJPEG
- 最大10個のメニュー項目
Markdown変換
ClawdbotはMarkdownフォーマットをLINEがサポートするフォーマットに自動変換します:
| Markdown | LINE変換結果 |
|---|---|
| コードブロック | Flexカード |
| 表 | Flexカード |
| リンク | 自動検出してFlexカードに変換 |
| 太字/斜体 | 削除される(LINEは非サポート) |
フォーマットの保持
LINEはMarkdownフォーマットをサポートしていないため、ClawdbotはFlexカードへの変換を試みます。プレーンテキストを希望する場合は、設定で自動変換を無効にできます。
まとめ
本チュートリアルでは以下を学びました:
- ✅ LINEプラグインのインストール
- ✅ LINE Messaging APIチャンネルの作成
- ✅ Webhookと認証情報の設定
- ✅ アクセス制御の設定(DMペアリング、グループホワイトリスト)
- ✅ リッチメディアメッセージの送信(Flex、クイックリプライ、位置情報)
- ✅ Rich Menuの使用
- ✅ 一般的な問題のトラブルシューティング
LINEチャンネルは豊富なメッセージタイプとインタラクション方法を提供しており、LINE上でパーソナライズされたAIアシスタント体験を構築するのに最適です。
次のレッスンの予告
次のレッスンでは WebChatインターフェース を学習します。
学べること:
- ブラウザ経由でWebChatインターフェースにアクセスする方法
- WebChatの主要機能(セッション管理、ファイルアップロード、Markdownサポート)
- リモートアクセスの設定(SSHトンネル、Tailscale)
- WebChatと他のチャンネルの違いを理解する
付録:ソースコード参照
クリックしてソースコードの場所を表示
更新日:2026-01-27
| 機能 | ファイルパス | 行番号 |
|---|---|---|
| LINE Botコア実装 | src/line/bot.ts | 27-83 |
| 設定スキーマ定義 | src/line/config-schema.ts | 1-54 |
| Webhookイベントハンドラー | src/line/bot-handlers.ts | 1-100 |
| メッセージ送信機能 | src/line/send.ts | - |
| Flexテンプレート生成 | src/line/flex-templates.ts | - |
| Rich Menu操作 | src/line/rich-menu.ts | - |
| Templateメッセージ | src/line/template-messages.ts | - |
| MarkdownからLINEへ変換 | src/line/markdown-to-line.ts | - |
| Webhookサーバー | src/line/webhook.ts | - |
主要な設定フィールド:
channelAccessToken: LINE Channel Access Token(config-schema.ts:19)channelSecret: LINE Channel Secret(config-schema.ts:20)dmPolicy: DMアクセスポリシー(config-schema.ts:26)groupPolicy: グループアクセスポリシー(config-schema.ts:27)mediaMaxMb: メディアサイズ制限(config-schema.ts:28)webhookPath: カスタムWebhookパス(config-schema.ts:29)
主要な関数:
createLineBot(): LINE Botインスタンスの作成(bot.ts:27)handleLineWebhookEvents(): LINE Webhookイベントの処理(bot-handlers.ts:100)sendMessageLine(): LINEメッセージの送信(send.ts)createFlexMessage(): Flexメッセージの作成(send.ts:20)createQuickReplyItems(): クイックリプライの作成(send.ts:21)
サポートされているDMポリシー:
open: オープンアクセスallowlist: ホワイトリストモードpairing: ペアリングモード(デフォルト)disabled: 無効
サポートされているグループポリシー:
open: オープンアクセスallowlist: ホワイトリストモード(デフォルト)disabled: 無効