4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LINE Notify の終了に伴うLINE 公式アカウントへの切り替えの話

Last updated at Posted at 2024-11-29

LINE Notify の終了に伴うLINE 公式アカウントへの切り替え

2024年11月、LINE Notify の提供が終了することが公式に発表されました。
スクリーンショット 2024-11-29 22.14.42.png

これにより、通知機能を活用していた多くのシステムやアプリケーションで変更が必要になります。本記事では、LINE Notify の代替手段として「LINE 公式アカウント」を活用する方法を解説します。実際のコード例も交えながら、設定から実装までを紹介します。

LINE Notify の終了が意味すること

LINE Notify は、API を介して特定のLINEアカウントにメッセージを送信できるサービスです。この終了により、以下の影響があります。

1.通知の停止

LINE Notify を利用したシステムでは通知が行えなくなります。

2.代替手段の模索

公式アカウントのWebhookやMessaging API を利用した通知に移行する必要があります。

LINE 公式アカウントを活用した代替手段

LINE 公式アカウントを使えば、LINE Notify のように通知を送信する仕組みを構築できます。具体的には Messaging API を使用します。

実装:Google Apps Script を使った通知システム

必要な準備

1. LINE Developers コンソールでアカウント作成

・LINE Developers にログイン。
・チャネルを作成し、必要な設定を行う。

2. チャネルアクセストークンの取得

・チャネル設定画面で「チャネルアクセストークン」を発行します。

3. ユーザーIDの取得 (Webhook URL の設定)

・Webhookを受信するサーバーを準備し、そのURLを設定します。サンプルコードの下に詳細は記述しております。

4. Google ドライブで新規の Google Apps Script プロジェクトを作成します。

サンプルコード

// LINE公式アカウントのアクセストークン
const ACCESS_TOKEN = 'YOUR_CHANNEL_ACCESS_TOKEN';

/**
 * LINEにメッセージを送信する関数
 * @param {string} userId - 送信先のユーザーID
 * @param {string} message - 送信するメッセージ
 */
function sendLineMessage(userId, message) {
  const url = 'https://api.line.me/v2/bot/message/push';
  const headers = {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${ACCESS_TOKEN}`,
  };

  const payload = {
    to: userId,
    messages: [
      {
        type: 'text',
        text: message,
      },
    ],
  };

  const options = {
    method: 'post',
    headers: headers,
    payload: JSON.stringify(payload),
  };

  try {
    const response = UrlFetchApp.fetch(url, options);
    Logger.log('Message sent successfully: ' + response.getContentText());
  } catch (e) {
    Logger.log('Error sending message: ' + e.message);
  }
}

/**
 * テスト実行用関数
 * 任意のユーザーIDとメッセージを送信します。
 */
function testSendLineMessage() {
  const userId = 'LINE_USER_ID'; // 送信先ユーザーIDを指定
  const message = 'LINE公式アカウントからの通知です!';
  sendLineMessage(userId, message);
}

動作確認

上記コードを実行するためには、それぞれの友達のLINE ID (グループごとに固有のID / Uから始まるもの)が必要です。このIDが結構厄介で、管理画面からは全く確認できないので、Webhook で スプレッドシートに記述するようにしました。

  1. ユーザーIDの取得
    ・ユーザーIDの取得は、webhookで行いました。
    ・LINE Developers コンソールで Webhook を設定し、ユーザーから公式アカウントにメッセージを送信してユーザーIDを取得します。
    ・LINE の Webhook の URLをGAS の URLに設定するといいです。 (https://script.google.com/macros/s/example/exec) #exampleは適宜書き換えてください。
    ・ユーザーがLINE公式アカウントへのともだち登録完了後に、本名またはニックネームなどを送ってもらうようにしました。
    ・その時に、Webhookを実行させそのグループのLINE IDをgoogle spread sheet に書き出すようにしました。
    ・ちなみに、友達登録完了のみだと、どれが誰だかわからないです。
function doPost(e) {
  try {
    const events = JSON.parse(e.postData.contents).events;

    // スプレッドシートの「シート1」を取得
    const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");

    for (let eventData of events) {
      // 受信イベントデータから必要な項目を取得
      const time = new Date(eventData.timestamp);
      const eventType = eventData.type;
      const messageType = eventData.message?.type || 'N/A'; // メッセージタイプがない場合のデフォルト
      const messageText = eventData.message?.text || 'N/A'; // メッセージテキストがない場合のデフォルト
      const userId = eventData.source?.userId || 'Unknown'; // userIdがない場合は 'Unknown' にする

      // 最後の行のあとに追加
      targetSheet.appendRow([time, eventType, userId, messageType, messageText, JSON.stringify(eventData)]);
    }

    // Webhookの成功応答
    return ContentService.createTextOutput(JSON.stringify({status: 'success'}));
  } catch (error) {
    // エラーが発生した場合のログ出力
    Logger.log('Error: ' + error);
    
    // Webhookのエラーレスポンス
    return ContentService.createTextOutput(JSON.stringify({status: 'error', message: error}));
  }
}

LINE 公式アカウントには無料プランと有料プランがあります。このプログラムによって実行された通知はとりあえず、メッセージ件数としてみなされませんでしたので、無料でいける場合もありそうです。

この内容を基に、コードや手順を調整して具体化してみてください。必要に応じて詳しい技術的なポイントも追加可能です!

最後までお読みくださりありがとうございました。

よかったら「いいね」してもらえたら励みになります🙇‍♂️🙇‍♂️🙇‍♂️

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?