こんにちは、うぃむです。
さて、2025年3月31日をもって、「LINE Notify」のサービスが終了します。
個人的に「LINE Notify」を使っていました(ロドストの更新をお知らせするBOTを作ってみました #FF14)。今回は、この機能を「LINE公式アカウント」の「Messaging API」に置き換えてみました。
さらに、生成AI(Gemini)も組み込むことで、よりユーモラスなやり取りができるようにしてみました。
1.作成したLINE公式アカウント
2.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秒 待つ
- }
- }
3.生成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();
- }
- }
4.実装の流れ
簡単に上記をテストしたい場合は、こんな感じのコードでできます。
- /**
- * テスト
- */
- function test() {
- sendLINEOAMessasge(
- requestGemini(
- "テスト、テスト、テストのメッセージです。"
- , "あなたはモーグリです。語尾には、クポが付きます。次の文章を簡潔・簡単な気の利いた言葉を添えてツイートしてください。"
- )
- );
- }
現在、X(旧Twitter)で発信しているメッセージを、以下のような流れでLINE公式アカウントへ配信しています。
- 発信するメッセージを取得
- 生成AI(Gemini)で加工
- LINE公式アカウントで発信
実際に試験運用をしているので、興味のある方はぜひ試してみてください。
LINE公式アカウント: モグミニ (非公式) ( ID: @863cgqjm ) (未認証)
※LINE公式アカウントから @863cgqjm を検索してもらえれば見つかるでしょうか?
それでは、また!