1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ラズパイからLINE Messaging APIにメッセージを送信させてみた

Last updated at Posted at 2023-01-14

なぜ作ろと思ったのか

今日はゴミ捨ての日とか、体重計乗りなさいだとか、傘持った?みたいな通知をしてくれるリマインダー機能がほしかった。
アプリを入れても見ないけど、LINEなら見るだろうと思って作ってみた。
タイトルにラズパイからと書いてあるが、何から送っても良い。

LINE Messaging API

LINE公式アカウントを作成して、そのアカウントから利用者(お友達)にメッセージを送信したり応答したりすることができる仕組み。
今回は通知するだけで応答機能は作らない。気が向いたら作って別の記事にします。

料金とメッセージ送信数

無料プランでは、毎月1000通のメッセージを送ることができる。個人利用ならフリープランで十分だろう。

アカウントを作成してログイン

以下まで進める

  • LINEアカウントもしくはLINEビジネスアカウントでログイン。
  • プロバイダ登録

チャネルを登録

以下入力して登録。登録後も変更できます。

項目 入力
チャネルの種類 Messaging API
プロバイダー プロバイダ名を選択
所在地 日本
アイコン とりあえずなしで
チャネル名 好きなチャネル名(Bot名)を入力
チャネル説明 チャネルの説明文を入力
大業種 当てはまるものを選択
小業種 当てはまるものを選択
メールアドレス メールアドレスを入力
プライバシーポリシーURL 個人利用かつ任意なので入力しなかった
サービス利用規約URL 個人利用かつ任意なので入力しなかった

お友達になる

チャネルのMessaging API設定のタブにQRコードがあるので、読み込むとお友達になれます。
ボットのベーシックIDを検索して友達追加でもいけそうです。

アクセストークンを取得

作成したLINEbotのアクセストークンを取得します。
パスワードと同じように重要な情報ですので、他人に見られない場所に記録しておきます。

送信してみる

メッセージの送信はこちらを参考にする。

Webhookの仕組みで送信できるようである。
{channel access token}に先程取得したアクセストークンを入力。
U4af4980629...の部分は、作成したチャネルの基本設定に記載されている、「あなたのユーザーID」を入力する。
参考ページに記載されているリトライキー(-H 'X-Line-Retry-Key: {UUID}' \)は任意のため記載しなくてもいい。

curl -v -X POST https://api.line.me/v2/bot/message/push \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {channel access token}' \
-d '{
    "to": "U4af4980629...",
    "messages":[
        {
            "type":"text",
            "text":"Hello, world1"
        },
        {
            "type":"text",
            "text":"Hello, world2"
        }
    ]
}'

1度のリクエストで最大5回メッセージが送れるようである。

上記curlコマンドをshellscriptで作成してもよし。
PythonやGoなどの他の言語のサンプルも乗ってるので、好きに作ってみたら良いと思う。
Webhookなので、POST送信できればどこからでも送れそう。

cronで定期的に通知させてみる

shellscriptを作成する

terminal
# mkdir /usr/local/src/linebot
# vi /usr/local/src/linebot/diet.sh
training.sh
#/bin/bash
curl -v -X POST https://api.line.me/v2/bot/message/push \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {channel access token}' \
-d '{
    "to": "U4af4980629...",
    "messages":[
        {
            "type":"text",
            "text":"筋トレして体重計に乗ろう!"
        }
    ]
}'

最後にカンマをつけてしまうと送信失敗するかも。注意しよう。

        {
            "type":"text",
            "text":"筋トレして体重計に乗ろう!\nそしてお風呂に入って寝よう!"
        },

改行コードは¥nではなくて、\nなので間違えないように。

cron設定する

cronは、以下の順番で並ぶ。
分 時 日 月 曜日 コマンド

terminal
# crontab -e

21時で設定した。

cron設定
0 21 * * * sh /usr/local/src/linebot/diet.sh > /dev/null 2>&1

(参考)> /dev/null 2>&1について

cronを実行すると、標準出力される内容が実行ユーザーにメールが飛ぶ仕様。
スクリプトによっては、定期実行してたらメールの量が大量になってディスクを圧迫してしまう、なんてことも!
このスクリプトは何も出力がでないかもだけど、とりあえず入れておく。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?