前回、MastraでAiエージェントを立ち上げてブラウザまたはPWAから会話していました。
MastraとMCPを作って自分用Aiエージェントを作る
今回は、LINEボットにして、LINEアプリから会話できるようにします。また、「今日の天気をLINEして」といったように、AiエージェントからLINEにメッセージを飛ばせるようにします。
必要なソースは以下に置きました。
前回、MastraとMCPを作って自分用Aiエージェントを作るでセットアップが完了している前提です。
また、LINEボットにするには、パブリックなドメイン名を持ち、パブリックネットワークから常時アクセスできる場所におく必要があります。
構成
以下のような構成となります。/lineagent-webhookというエンドポイントを作ります。
準備
以下から、ZIPをダウンロードします。
展開した状態で、api\controllers\lineagent-api
を前回セットアップ済みのフォルダの同じ場所にコピーします。
それにより、以下の4つのエンドポイントが公開されます。
・/lineagent-webhook:
これが、LINEボットとしてLINEからメッセージが転送されてくるエンドポイントです。
以下は、LINEボットとして必要ではありませんが、のちのAiエージェントからLINEメッセージを送信するためのエンドポイントです。
・/lineagent-push-message:
・/lineagent-push-image:
・/lineagent-get-profile:
LINEボットとして必要なライブラリをセットアップします。
> npm install @line/bot-sdk
LINEボットの登録
まだ、LINEのビジネスアカウントを作成していない場合は、ブラウザから、LINE Account Managerコンソールを開きます。
やることは以下の通りです。
・ビジネスアカウントを追加
・設定の、Messaging APIから、Messging APIを利用する にする。
・設定の、応答設定から、応答機能の、応答メッセージをOff
詳細はこちらを参照してください。
https://developers.line.biz/ja/docs/messaging-api/getting-started/
次に、ブラウザから、LINE Developersコンソールを開きます。
作成したビジネスアカウント名があるはずです。channel typeは、Messaging API です。
チャネル基本設定の「チャネルシークレット」を覚えておきます。
Messaging API設定の「チャネルアクセストークン」を発行し、覚えておきます。
.env
に先ほど覚えておいたのを以下に追記します。
LINE_CHANNEL_ACCESS_TOKEN=【チャネルアクセストークン】
LINE_CHANNEL_SECRET=【チャネルシークレット】
LINE_CHARACTER_NAME=【お気に入りのキャラクタ名】
LINE_API_KEY=【任意の秘匿の値】
LINE_CHARACTER_NAMEは必須ではありませんが、お気に入りのキャラクタ名を指定します。
例:LINE_CHARACTER_NAME=ツンデレの御坂美琴
一度、再起動します。
> node app.js
LINE Developersコンソールに戻って、Webhook URLに、外部公開ドメイン名を含んだPUBLIC_HOST_NAMEに/lineagent-webhookを連結させたURLを指定します。
更新ボタンを押して、検証ボタンを押します。成功と表示されればOKです。
Webhookの利用をOnにします。エラーの統計情報は必要に応じてOnにします。
これで準備ができました。
さっそくQRコードから友達追加してみます。
LINEから、「こんにちは」と入れると、
別に、あんたのために返事してるわけじゃないんだから。.....まあ、こんにちは、って言ってやったわ。このくらいで感謝しなさいよね。
と返ってきました。応答は、指定したLINE_CHARACTER_NAMEで変わってきます。ドラゴンボールの孫悟空とか入れたらまた変わるかと思います。なので、LINEボットにアイコンを付けると気分が変わりますよ ^_^;
AiエージェントからLINEにメッセージを送る
今度は、Aiエージェントの方から、LINEボットに友達になっているユーザにメッセージを送信します。
/mcp-lineというMCPサーバを作ります。LINEにテキストを送り部分は、さきほど作ったエンドポイントに含まれている/lineagent-push-messageを使います。
準備
さきほどZIP展開した中に、api\controllers\line-mcp
がありますので、前回セットアップした環境の同じフォルダにコピーします。
.env
に以下を追記します。
LINE_DESTINATION_USER_ID=【LINEのUserID】
LINEのUserIDは、デフォルトでLINE送信したい友達のUserIDです。自分専用のAiエージェントにしたい場合は自分ですね。
UserIDは、LINEボットからメッセージを送信すると、Node.jsのコンソールログ(console.log())として以下のように出力されています。
[/lineagent-webhook calling]
{type: 'user', userId: '【LINEのUserID】'}
こんにちは
再起動します。
> node app.js
使い方
ブラウザやPWAアプリからAiエージェントを開きます。
PUBLIC_HOST_NAME/chatagent
例えば、「横浜の天気をLINEで送って」と入力すると、「了解しました」の応答とともに、以下のようなLINEメッセージが送られてきます。
「横浜の今日の天気は、曇り時々晴れで、最高気温は29.4度、最低気温は22.2度、降水量は1.5mmです。」
以上