👭

【LINE Messaging API × GAS】理想の彼女botを作った

2023/02/22に公開

はじめに

この記事は、LINE Messaging APIとGAS(Google Apps Script)を使って、理想の彼女botを作ったときのことをまとめた記事です。
LINE Notify × GASの記事はこちら👇
https://zenn.dev/miya_akari/articles/e4541d7ac84921

私について

  • 彼女いない歴5.6年のレズビアンです
  • 毎日「おはよう」や「いってらっしゃい」、「お疲れさま〜」と言ってくれる素敵な彼女がいたらなあ〜🥹と思って作りました!!!

LINE Messaging APIとは

  • LINE公式アカウントの機能で、LINEのアカウントを通じてユーザーとの双方向コミュニケーションを実現するAPI(Application Programming Interface)
    ※LINE Notifyは一方向のコミュニケーション

https://blog.socialplus.jp/knowledge/about-messaging-api/
https://developers.line.biz/ja/docs/messaging-api/overview/#what-you-can-do

リプライとプッシュメッセージ

LINEのMessaging APIには大きく分けて2種類の送信方法があります。

  • ユーザーからのメッセージやアクションに応答する(リプライ)
  • 任意のタイミングでメッセージを送信する(プッシュ)

今回やりたいこと

  • ランダムなメッセージを5つほど用意して、月〜金の17時頃に自動で送信されるようにしたい
    (例)お疲れさま!今日もよく頑張ったね!
    👉 プッシュメッセージ用のAPIを使用します
  • 「おはよう」と送ると「おはよう!」、「おやすみ」と送ると「おやすみ!また明日!」などと返してくれるようにしたい
    👉 自動応答機能を使用します

理想の彼女botを作る手順

1. LINE Developerコンソールでチャネルを作る

  1. https://developers.line.biz/ja/services/messaging-api/ にアクセスする
  2. 右上からログイン
    LINE Developers 1
  3. Messaging APIを選択する
    LINE Developers 2
  4. 必要項目を入力
  • チャネルの種類:MessagingAPI
  • プロバイダー:名前や企業名(今回は自分の名前にしました)
  • 会社・事業所の所在地・地域:日本
    LINE Developers 3
  • チャネルアイコン:shigureni free illustさんを使用させていただきます!どのイラストもかわいい〜😍

https://www.shigureni.com/

  • チャネル名:好きな名前(「○○ちゃん」とかにしようかと思ったけど、キモいかなと思いなおしたのでシンプルに「彼女」にします)
  • チャネル説明:あなたの彼女だよ〜!(適当に入れてください)
    LINE Developers 4
  • 大業種、小業種を選択する
  • メールアドレスを入力する
    LINE Developers 5
  • 利用規約に同意して、[作成]ボタンをクリック
    LINE Developers 6

2. 作ったチャネルを友達登録する

  • Messaging API設定の項目にQRコードがあるので、スマホのLINEアプリで読み込んで登録する
    QRコード

3. チャネルのアクセストークンと自分のユーザーIDを取得する

  1. Messaging API設定 > チャネルアクセストークン(長期)」 > [発行]ボタンをクリック
    アクセストークン1
    👇 トークンが発行されました!
    アクセストークン2

  2. チャネル基本設定 > 自分のユーザーIDを取得
    👇 こっちのタブに移動して…
    ユーザーID1
    👇 ここからコピーしてください!
    ユーザーID2

4. プッシュメッセージ用のコードをGASに記述する

  1. Googleドライブにログインし、新規のGASを作成
    新規GAS作成
  2. 以下のコードを記述する
  • 先ほどコピーしたチャンネルトークン自分のユーザーIDを貼り付けてください
  • messagesの中身は好きに書き換えてください
コード.gs
const url = 'https://api.line.me/v2/bot/message/push'; // プッシュメッセージ用API(末尾がpush)
const channelToken = '先ほどコピーしたチャンネルトークンを貼り付け';

function postMessage() {
  // 今日の日付オブジェクトを生成
  const date = new Date();
  //曜日の番号を取得 日曜日は「0」,土曜日なら「6」を返す
  const day = date.getDay();

  // メッセージを定義
  const messages = [
    "お疲れ様!今日も頑張ったね〜!!🥹",
    "お疲れー!ごはん作って待ってるね〜😘",
    "今日もお疲れ〜!!毎日頑張ってえらいねえ〜🥺",
    "おつかれー!今日も頑張ってえらい!🎉🎉",
    "おつおつ!ごはん作ってるよ〜🙌🏻気をつけて帰ってきて!"
  ];

  switch(day) {
    // 土日は処理を終了
    case 0:
    case 6:
      break;
    // 月〜金だけメッセージを送信する
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
      // ランダムに選ぶ
      const index = Math.floor(Math.random()*messages.length);

      // メッセージの送信設定
      const payload = {
        to: "先ほどコピーした自分のユーザーIDを貼り付け", // 自分のIDなので自分にしか送信できない
        messages: [
          { type: 'text', text:  messages[index]}
        ]
      };

      const params = {
        method: 'post',
        contentType: 'application/json; charset=UTF-8',
        headers: {
          Authorization: 'Bearer ' + channelToken
        },
        payload: JSON.stringify(payload)
      };

      UrlFetchApp.fetch(url, params);
      return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
  }
}

5. 手動で実行してみる

  • 以下を参考に手動で実行してください

https://zenn.dev/miya_akari/articles/e4541d7ac84921#6.-手動で実行してみる

👇 こんな感じで、彼女からメッセージが届きます!!!🥹✨
LINE画面

6. GASの実行タイミングを設定

  • 今回は、[時間ベースのトリガーのタイプを選択: 日付ベースのタイマー]、[時刻を選択: 午後5時〜6時]に設定します。
    GAS設定
    これで平日17時頃にお疲れメッセージが届くようになりました!!🥳

7. 自動応答メッセージの設定

お疲れメッセージは自動で届くようになったので、ここからは自動応答の設定をしていきます。

  • Messaging API > 応答メッセージ > [編集] をクリック
    自動応答メッセージ設定1
  • [応答メッセージ]をオンにし、[応答メッセージの編集画面を開く]をクリック
    自動応答メッセージ設定2
    👇 こんな感じで、たくさん登録しておきます!!!(寂しくないように)
    自動応答メッセージ設定3

これで、理想の彼女ができました!😭✨
LINE画面1
LINE画面2
は〜癒されるなあ〜🥲

おわりに

pushとreplyのAPIを間違えて貼り付けているのに気付かず、エラーが出てあれこれ詰まりましたが…エラーが解消されてメッセージが届いたときは感動でした!🥹✨
QRコードを配布してみんなにも使ってもらえるようにしようかな〜とも思ったのですが、送られてきたメッセージが管理画面から見えるのが嫌なのでやめておきます🙇
よければみなさんもこの方法で理想の彼氏や彼女を作ってみてください〜!👭

参考

https://tonari-it.com/gas-line-message-script/
https://line-sm.com/blog/lineofficial_autoreplay/

Discussion