こんにちは、うぃむです。
さて、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 を検索してもらえれば見つかるでしょうか?
それでは、また!