LINE Notify辞めるってよ

# 概要

タイトルの通り、LINE Notifyがサービス終了の連絡がありました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1985649/719dc329-de15-063e-a95d-fa01832664c7.png)

そこで、せっかくなのでどんなふうに使っていたかを紹介しつつ代替手段のLINE MessagingAPIへの移行方法について紹介したいと思います。

https://notify-bot.line.me/closing-announce


# どんな風に使ってた？

LINE Notifyには、めちゃくちゃお世話になってます。
Gmailで特定のメールが来たらLINE通知してくれるようにすることで大事なメールの見落としやすぐに返信が必要なものへ対応できています。
LINE Notifyは、既存のグループに追加できるのでそのグループに入っている人全員に通知できるので家族での情報共有にも便利でした。

## 使用例 : 図書館の本の予約通知

図書館は、本によっては何十人待ちとかで予約から実際の貸し出しまでかなりリードタイムがあったりします。
そんな時に、毎回メールを見に行くのは面倒なので通知するようにしてました。

![スクリーンショット_2024-11-11_23_11_55.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1985649/25940347-5a3e-759d-c074-0a2f7560f91b.jpeg)


# 代替手段について

LINEの公式では、「Messaging API」が代替手段となっています。

https://notify-bot.line.me/closing-announce

## Messaging APIとは？

Messaging APIとLINE Notifyについて比較表にしてみました。
LINE Notifyを単純に通知として利用して身からするとかなり上位互換のサービスのようです。
使ってみてわかった一番の違いは、LINE Notifyはグループに参加するメンバーとして投稿をしてくれます。
Messaging APIは公式アカウントに自分が入って公式アカウントから通知が来る形になるというところです。


| 特徴                | LINE Messaging API                                       | LINE Notify                                      |
|---------------------|----------------------------------------------------------|--------------------------------------------------|
| **主な用途**       | チャットボットを利用した双方向のコミュニケーション      | 単方向の通知メッセージをユーザーに送信           |
| **メッセージの方向** | 双方向（ユーザーからのメッセージに返信可能）            | 単方向（通知メッセージのみ）                      |
| **友だち登録の必要** | 必要（ボットはユーザーの友だち登録がないと送信できない） | 不要（ユーザーがLINE Notifyに許可を与えるのみ）   |
| **主な利用ケース** | カスタマーサポート、アンケート、リマインダー             | システム通知、リマインダー、簡易的な通知          |
| **実装の複雑さ**   | 高い（API連携やWebhook設定が必要）                        | 低い（アクセストークンを取得して送信するだけ）    |
| **メッセージの種類** | テキスト、画像、カルーセル、ボタンなど多彩               | テキストのみ                                     |
| **費用**           | 無料プランあり（送信数による制限あり）、有料プランもあり | 無料                                             |
| **Webhook対応**    | あり                                                      | なし                                             |


# 移行手順

- LINE公式アカウントの作成
　参考資料：[仕様変更後のMessaging APIチャネルの作成方法](https://developers.line.biz/ja/news/2024/09/04/no-longer-possible-to-create-messaging-api-channels-from-console/)

- Messaging APIの利用を有効化

- 既存のGASへ適用


# LINE公式アカウントの作成
[1. LINE公式アカウントを作成する](https://developers.line.biz/ja/docs/messaging-api/getting-started/#create-oa)を参考に公式アカウントを作成していきます。

私は今回以下のように設定しました。

| 項目                | 設定内容                |
|--------------------|------------------------|
|アカウント名          |図書館予約                |
|メールアドレス        |test@example.com         |
|会社・事業者の所在国・地域|日本                   |
|業種                 |個人-個人（IT・コンピュータ）|
|主な使い方            |メッセージ配信用          |

# Messaging APIの利用を有効化
公式アカウントを作成すると「[LINE Official Account Managerにログイン](https://xn--manager-ee0d.line.biz/account/@052fwwlo/notices/2/2017_Agreement_about_secrecy_of_communications_JP)」へ進み規約の確認をします。

これが完了すると、作成を実施したLINEアカウントへ今回作成した公式アカウントが追加されています。

## Messaging API
LINE Official Account ManagerでMessaging APIから「Messaging APIを利用する」を選択。

ここで、プロバイダー名を決めます。公式アカウントで実際に投稿をする人物(Bot)の名称です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1985649/77d1195e-3d26-cd02-cc7b-071bfc8f4dd8.png)

 ### トークンの発行

Messaging APIが有効化されたのでLINEのDevelopersコンソールより実施。今回作成したプロバイダーのMessaging APIからチャネルアクセストークンを発行してメモをしておきます。
チャンネル基本設定からあなたのユーザーIDをメモ。

https://developers.line.biz/ja/services/messaging-api/

| 項目                | メモの内容                |
|--------------------|------------------------|
|チャネルアクセストークン|***********(めっちゃ長いやつ)|


# 既存のGASへ適用

## スクリプトの対応

今回は、移行をメインに記載させて頂いたので移行は最小限の工数で実施できよう設定します。

[GASとLINE Messaging APIでpushメッセージのLINEbotを作る！](https://qiita.com/n_oshiumi/items/a1a02e03093825f41e01)がとても役に立ったのでこちらの記事を参考に紹介させていただきます。
また、これだとユーザーIDを指定しているので個人宛に通知されてしまいます。
そこで、[LINE Bot, LINE Message API で友達全員にメッセージを送る方法について](https://zenn.dev/manase/scraps/cb7e596b13802b)を参考に修正しました。

利用するAPIエンドポイント'/bot/message/push' から　'/bot/message/broadcast'へ変更することで全員に送れます。


```Javascript
// LINE Developersに書いてあるChannel Access Token
// めっちゃ長いアクセストークンをここにコピペしましょう。
var access_token = PropertiesService.getScriptProperties().getProperty('LINE_MESSAGING_API_TOKEN');

//送信するメッセージ定義する関数を作成します。
function createMessage() {
  //メッセージを定義する
  message = "おはよう！";
  return push(message);
}


//実際にメッセージを送信する関数を作成します。
function push(text) {
//メッセージをチャンネルに登録されている人全員へ送信(broadcast)する時に必要なurl
//この関数は全て基本コピペで大丈夫です。
  var url = "https://api.line.me/v2/bot/message/broadcast";
  var headers = {
    "Content-Type" : "application/json; charset=UTF-8",
    'Authorization': 'Bearer ' + access_token,
  };
  
  //textの部分は、送信されるメッセージが入ります。createMessageという関数で定義したメッセージがここに入ります。
  var postData = {
    "messages" : [
      {
        'type':'text',
        'text':text,
      }
    ]
  };
 
  var options = {
    "method" : "post",
    "headers" : headers,
    "payload" : JSON.stringify(postData)
  };
 
  return UrlFetchApp.fetch(url, options);
}

```

スクリプトプロパティを利用するには、Apps Scriptの設定からスクリプトプロパティを追加してください。

![スクリーンショット_2024-11-29_15_27_36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1985649/a0c1fe15-d37b-60b0-f65e-b2a18397e714.png)

## テスト
今回追加した、「createMessage」関数を選択して実行します。

「おはよう」と通知が来ました。

![スクリーンショット_2024-11-12_23_55_53.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1985649/6628219a-ce37-5751-cae6-872e8757265b.jpeg)

## 移行の実装

かなり簡易的に追加するのでもっと良い方法はあると思います。
先ほど追加したコードを一部修正

```diff_javascript
//送信するメッセージ定義する関数を作成します。
+ function createMessage(message) {
- function createMessage() {
-   //メッセージを定義する
-   message = "おはよう！";
  return push(message);
}
```

既存のメッセージを送信している箇所へ`createMessage(message)`を追加しテストを実施。

![スクリーンショット_2024-11-13_0_26_23.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1985649/935b3ff0-5506-0849-eedd-ecee0c3437a0.jpeg)

今まで同様の通知を送ることができました！

# おわりに
LINE Notifyが終了するとの通知があったので移行を試してみました。MessagingAPIは対応が難しいかなと思いましたが意外と簡単に実施できました！年末年始の少し時間がある時にやってみてください！


# 参考サイト
[LINE Notify提供終了のお知らせ](https://notify-bot.line.me/closing-announce)
[仕様変更後のMessaging APIチャネルの作成方法](https://developers.line.biz/ja/news/2024/09/04/no-longer-possible-to-create-messaging-api-channels-from-console/)
[GASとLINE Messaging APIでpushメッセージのLINEbotを作る！](https://qiita.com/n_oshiumi/items/a1a02e03093825f41e01)
[LINE Bot, LINE Message API で友達全員にメッセージを送る方法について](https://zenn.dev/manase/scraps/cb7e596b13802b)