「LINE Notify」終了 のため「LINE 公式アカント」へ切り替え #FF14|うぃむんののんびりギャザクラ日誌 #FF14

ページ

「LINE Notify」終了 のため「LINE 公式アカント」へ切り替え #FF14

こんにちは、うぃむです。

さて、2025年3月31日をもって、「LINE Notify」のサービスが終了します。

個人的に「LINE Notify」を使っていました(ロドストの更新をお知らせするBOTを作ってみました #FF14)。今回は、この機能を「LINE公式アカウント」の「Messaging API」に置き換えてみました。

さらに、生成AI(Gemini)も組み込むことで、よりユーモラスなやり取りができるようにしてみました。

作成したLINE公式アカウント

  • FF14関連のトピックスやニュースが見つかったら発信します
  • トークで話かけると、モーグリの役割を与えた生成AIが返信します

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公式アカウントへ配信しています。

  1. 発信するメッセージを取得
  2. 生成AI(Gemini)で加工
  3. LINE公式アカウントで発信

実際に試験運用をしているので、興味のある方はぜひ試してみてください。

LINE公式アカウント:  モグミニ (非公式) ( ID:  @863cgqjm )  未認証)
※LINE公式アカウントから  @863cgqjm  を検索してもらえれば見つかるでしょうか?

それでは、また!

0 件のコメント:

コメントを投稿