こんにちは、うぃむです。
さて、2025年3月31日をもって、「LINE Notify」のサービスが終了します。
個人的に「LINE Notify」を使っていました(ロドストの更新をお知らせするBOTを作ってみました #FF14)。今回は、この機能を「LINE公式アカウント」の「Messaging API」に置き換えてみました。
さらに、生成AI(Gemini)も組み込むことで、よりユーモラスなやり取りができるようにしてみました。
作成したLINE公式アカウント
LINE公式アカウント - Messaging API (Google Apps Script)
「Messaging API」を使い、Google Apps Script で以下の関数を作成しました。
> sendLINEOAMessasge( 送りたいメッセージ )
作成したGASのコード
const LINE_ACCESS_TOKEN = [チャネルアクセストークン(長期)]を設定; /** * LINE公式アカウント 送信 */ function sendLINEOAMessasge( message ) { // 最大500文字 const messageSize = 500; // 500文字を超える場合は、分割して出力 for ( let i =0; i < message.length; i += messageSize ) { try { UrlFetchApp.fetch("https://api.line.me/v2/bot/message/broadcast", { 'headers': { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Bearer ' + LINE_ACCESS_TOKEN, }, 'method': 'post', 'payload': JSON.stringify({ 'messages': [{ 'type': 'text', 'text': message.substring(i, i+messageSize) }] }) }); } catch (error) { Logger.log("エラー発生: " + error.toString()); } Utilities.sleep(1000); // 1秒 待つ } }
生成AI(Gemini 2.0 Flash Lite)
ついでに、生成AIも活用できるようにしました。
例> requestGemini( 送信文章, "あなたはモーグリです。語尾にクポが付きます。" )
作成したGASのコード
const GEMINI_APIKEY = [GEMINI_APIKEY]を設定; /** * Gemini */ function requestGemini( userMessage, role ) { try { // Gemini 電文 const requestOptions = { "headers": { "Content-Type": "application/json" }, "method": "post", "payload": JSON.stringify({ "contents": [ ...(role ? [ { "role": "model", "parts": [{ "text": role }] }] : [] ), { "role": "user", "parts": [{ "text": userMessage }] } ] }) }; // Gemini へ要求 const response = UrlFetchApp.fetch("https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-lite-preview-02-05:generateContent?key=" + GEMINI_APIKEY, requestOptions); const json = JSON.parse( response.getContentText() ); // 応答メッセージ return json.candidates[0].content.parts[0].text; } catch (error) { Logger.log("エラー発生: " + error.toString()); return "エラー発生: " + error.toString(); } }
実装の流れ
簡単に上記をテストしたい場合は、こんな感じのコードでできます。
/** * テスト */ function test() { sendLINEOAMessasge( requestGemini( "テスト、テスト、テストのメッセージです。" , "あなたはモーグリです。語尾には、クポが付きます。次の文章を簡潔・簡単な気の利いた言葉を添えてツイートしてください。" ) ); }
現在、X(旧Twitter)で発信しているメッセージを、以下のような流れでLINE公式アカウントへ配信しています。
- 発信するメッセージを取得
- 生成AI(Gemini)で加工
- LINE公式アカウントで発信
実際に試験運用をしているので、興味のある方はぜひ試してみてください。
LINE公式アカウント: モグミニ (非公式) ( ID: @863cgqjm ) (未認証)
※LINE公式アカウントから @863cgqjm を検索してもらえれば見つかるでしょうか?
それでは、また!
0 件のコメント:
コメントを投稿