MINARA
Minaraを使用するクライアントとインターフェースメッセージングプラットフォーム

LINE

LINE Messaging API を使ったアウトバウンドプッシュメッセージング。署名済み webhook イベントに対応しており、日本・台湾のオペレーターに人気です。

🟡 アウトバウンド送信のみ対応。 Minara は LINE のプッシュ API(月次課金)を使用します。返信トークン(無料)はまだ接続されていないため、すべてのアウトバウンドメッセージがプランのクォータに計上されます。インバウンド webhook イベントは HMAC-SHA256 署名検証つきで完全サポートしています。

できること

  • POST /v2/bot/message/push によるプッシュメッセージングuserIdgroupIdroomId 宛てに送信できます。
  • /webhooks/line でのインバウンド webhookX-Line-Signature ヘッダーに含まれる HMAC-SHA256(raw ボディに対して算出)を、LINE の公開仕様に従って検証します。
  • 現時点ではテキストのみ対応。画像・スタンプ・動画などの添付は将来の機能拡張予定です。
  • テキストメッセージは5000 文字制限。上限を超えると send_message がツール境界でトランケートします。

セットアップ

1. LINE チャネルを作成する

  1. LINE Developers Console を開く
  2. プロバイダーを作成し、その中に Messaging API チャネルを作成する
  3. チャネルページからチャネルアクセストークン(長期間有効。空欄なら「発行」をクリック)とチャネルシークレットを取得する

2. ユーザー / グループ ID を確認する

ユーザーがボットを友達追加すると、webhook に follow イベントが届き、そのユーザーの userIdU... 形式の不透明な文字列)を取得できます。グループの場合は、グループ内でメッセージを送信し、インバウンドペイロードから groupId を読み取ってください。連絡先を一覧で取得する方法はなく、最初のインタラクション時に ID をキャプチャする必要があります。

3. Minara を設定する

対話メニューを使うのが最も手軽です:

minara auth messaging add
# リストから `line` を選び、アクセストークン・チャネルシークレット・
# デフォルトの userId / groupId をプロンプトに貼り付ける

またはプロジェクトルートの .env ファイルに環境変数を直接記述することもできます:

LINE_CHANNEL_ACCESS_TOKEN=<長期間有効な bearer トークン>
LINE_CHANNEL_SECRET=<署名キー>
LINE_DEFAULT_USER_ID=<デフォルトの Uxxxxxxxxxxxxxx>

4. テストする

minara auth messaging test line

1 秒以内にボットアカウントへ「✅ Minara gateway test ping」が届くはずです。

インバウンド webhook

LINE チャネルが以下の URL に POST イベントを送信するよう設定してください:

https://<your-host>/webhooks/line

LINE はすべての webhook ボディを LINE_CHANNEL_SECRET で HMAC-SHA256 署名し、X-Line-Signature ヘッダーに格納して送信します。Minara はボディのパース前に署名を検証するため、改ざんされた POST は 401 を返し、Agent には転送されません。

現時点でインバウンドに対応している webhook イベントは、message.type === "text"message イベントのみです。スタンプ・メディア・フォロー/アンフォローなど他のタイプは無視されます。

制限事項と注意点

  • プッシュ API は月次課金です。 Developer trial プランは月 500 件まで。有料プランはより高い上限が設定されています。プロダクションアラートには控えめに使用してください。
  • 返信トークンは無料ですが、まだ接続されていません。 将来の機能拡張で、インバウンドメッセージ受信後 30 秒以内であれば replyToken を使ってプッシュクォータを消費せずに返信できるようになる予定です。
  • テキスト 5000 文字制限。 上限を超えるとトランケートされます。

トラブルシューティング

「テストメッセージが届かない」

  • 受信側のアカウントでボットが友達追加されているか(またはグループに参加しているか)確認する
  • LINE_DEFAULT_USER_ID の形式を確認する。先頭の U が必要です
  • ~/.minara/logs/ を確認し、api.line.me からの HTTP 4xx レスポンスがないか調べる

「インバウンド webhook が 401 を返す」

  • 環境変数の LINE_CHANNEL_SECRET が LINE コンソールのチャネルシークレットと一致していない
  • 署名ヘッダーは raw ボディに対して算出されます。リバースプロキシや CDN がバイト列を改変していないか確認してください

「プッシュ API が 429 を返す」

  • 月次プッシュクォータを使い切った状態です。プランをアップグレードするか、アラート以外のメッセージには返信トークンへの切り替えを検討してください。

リファレンス

目次