2月 2025|うぃむんののんびりギャザクラ日誌 #FF14

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

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

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

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

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

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

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

2.LINE公式アカウント - Messaging API (Google Apps Script)

「Messaging API」を使い、Google Apps Script で以下の関数を作成しました。

> sendLINEOAMessasge( 送りたいメッセージ )

作成したGASのコード

  1. const LINE_ACCESS_TOKEN = [チャネルアクセストークン(長期)]を設定;
  2. /**
  3. * LINE公式アカウント 送信
  4. */
  5. function sendLINEOAMessasge( message ) {
  6. // 最大500文字
  7. const messageSize = 500;
  8.  
  9. // 500文字を超える場合は、分割して出力
  10. for ( let i =0; i < message.length; i += messageSize ) {
  11. try {
  12. UrlFetchApp.fetch("https://api.line.me/v2/bot/message/broadcast", {
  13. 'headers': {
  14. 'Content-Type': 'application/json; charset=UTF-8',
  15. 'Authorization': 'Bearer ' + LINE_ACCESS_TOKEN,
  16. },
  17. 'method': 'post',
  18. 'payload': JSON.stringify({
  19. 'messages': [{
  20. 'type': 'text',
  21. 'text': message.substring(i, i+messageSize)
  22. }]
  23. })
  24. });
  25. } catch (error) {
  26. Logger.log("エラー発生: " + error.toString());
  27. }
  28.  
  29. Utilities.sleep(1000); // 1秒 待つ
  30.  
  31. }
  32.  
  33. }

3.生成AI(Gemini 2.0 Flash Lite)

ついでに、生成AIも活用できるようにしました。

例> requestGemini( 送信文章, "あなたはモーグリです。語尾にクポが付きます。" )

作成したGASのコード

  1. const GEMINI_APIKEY = [GEMINI_APIKEY]を設定;
  2. /**
  3. * Gemini
  4. */
  5. function requestGemini( userMessage, role ) {
  6. try {
  7. // Gemini 電文
  8. const requestOptions = {
  9. "headers": {
  10. "Content-Type": "application/json"
  11. },
  12. "method": "post",
  13. "payload": JSON.stringify({
  14. "contents": [
  15. ...(role ? [
  16. { "role": "model", "parts": [{ "text": role }] }] : []
  17. ),
  18. { "role": "user",
  19. "parts": [{ "text": userMessage }]
  20. }
  21.  
  22. ]
  23. })
  24. };
  25.  
  26. // Gemini へ要求
  27. const response = UrlFetchApp.fetch("https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-lite-preview-02-05:generateContent?key=" + GEMINI_APIKEY, requestOptions);
  28. const json = JSON.parse( response.getContentText() );
  29.  
  30. // 応答メッセージ
  31. return json.candidates[0].content.parts[0].text;
  32. } catch (error) {
  33. Logger.log("エラー発生: " + error.toString());
  34. return "エラー発生: " + error.toString();
  35. }
  36. }

4.実装の流れ

簡単に上記をテストしたい場合は、こんな感じのコードでできます。

  1. /**
  2. * テスト
  3. */
  4. function test() {
  5.  
  6. sendLINEOAMessasge(
  7. requestGemini(
  8. "テスト、テスト、テストのメッセージです。"
  9. , "あなたはモーグリです。語尾には、クポが付きます。次の文章を簡潔・簡単な気の利いた言葉を添えてツイートしてください。"
  10. )
  11. );
  12.  
  13. }

現在、X(旧Twitter)で発信しているメッセージを、以下のような流れでLINE公式アカウントへ配信しています。

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

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

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

それでは、また!

(お試し)モーグリとLINEでおしゃべり!?生成AIで作ってみたクポ! #FF14

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

生成AIをLINEで使えるようにしてみました!

せっかくなので、モーグリと会話できるような雰囲気にしてみました。

 あくまでも、遊びで作った程度です。

5.注意点

この生成AIは、堂々と間違った回答をすることがあります!正しい情報として信用しないようにご注意ください。

6.使い方

LINE公式アカウント:  モグミニ (非公式) ( ID:  @863cgqjm )  未認証)

※LINE公式アカウントから  @863cgqjm  を検索してもらえれば見つかるでしょうか?

7.イメージ

8.仕組み

  • 生成AIは、「Gemini 2.0 Flash-Lite」を使用しています。
  • 中には5種類のモーグリが住んでいます。どのモーグリが答えてくるかはわかりません。
    1.嘘の事をまるで本当のように答えるモーグリ
    2.まるで冗談のように本当のことを答えるモーグリ
    3.天然だけど、一生懸命なモーグリ
    4.斜め上の回答をするモーグリ
    5.早口で長文で回答するモーグリ
    誰が答えるかによって、雰囲気が変わるので、その点も楽しんでいただければと思います。

9.最後に

このLINE公式アカウントも、Geminiも無料枠で運用しているため、利用上限を超えると動かなくなる可能性があります。

これ、題材をモーグリにしてしまいましたが、スクウェア・エニックスさんに怒られないでしょうか・・・。問題があればご指摘ください。対処します。

いずれにしても、少ししたら、削除してしまうとおもいます。

使えるようなら、遊んでみてください。

7.2新式(セレモニアル)製作に必要な素材数をまとめてみました #FF14

こんにちは、ういむです!   パッチ7.2が来て、クラフター・ギャザラーの皆さんも忙しくなってきた頃じゃないでしょうか?  今回のアップデートで追加された「新式装備(セレモニアル)」、さっそく作り始めたよ!という方も多いと思います。   でも、いざ作ろうとすると… 「あれ?...