6
3

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 3 years have passed since last update.

LINE messaging APIを使用してpythonでメッセージを送信する

Last updated at Posted at 2021-03-02

はじめに

LINE Messaging APIを使用してメッセージを送信してみました。
初めて触る人の参考になれば幸いです。

対象読者

  • LINE messaging APIを使用してみたい人

作るもの

  • 友達登録をしてくれているユーザに対して、4日1回くらいの頻度で「memento mori」というメッセージを送信するbot

事前準備

LINE Developersで、Developersアカウントを作成してください。

1. チャネルを作成する

スクリーンショット 2021-03-02 23.24.02.png
プロダクト > 詳細はこちら より、詳細画面に遷移します。
スクリーンショット 2021-03-02 23.24.11.png
Messaging APIの「今すぐ始めよう」を選択します。
スクリーンショット 2021-03-02 23.30.25.png
画像やチャネルの概要等を記載しましょう
必要事項を入力していくと上記のような画面になります。

2. token情報を取得する

スクリーンショット 2021-03-03 0.48.15.png
Messaging API設定より、「チャネルアクセストークン(長期) 」をコピーします

3. メッセージの送信テストをする

スクリーンショット 2021-03-03 3.54.40.png
動作確認のため同ページで友達登録をしておきましょう
手持ちの端末でQRコードを読み込めば、友達登録が行われます。

curl --location --request POST 'https://api.line.me/v2/bot/message/broadcast' \
--header 'Authorization: Bearer Your token' \
--header 'Content-Type: application/json' \
--data-raw '{
    "messages":[
        {
            "type":"text",
            "text":"memento mori"
        }
    ]
}'

curl文で動作確認をしましょう。上記コマンドを実行すればメッセージが送信されるはずです。
※ tokenは書き換えてください
※ 他言語で動作確認を行いたい場合は、Postmanドキュメントを作成したので参考にしてください。
ドキュメント

4. pythonのコードを作成する

git cloneでファイルをcloneする
※ const.py.exampleをconst.pyにリネーム後、設定値を書き換えてください

git clone https://github.com/nekonisi/memento-mori.git

または、下記のファイルを手動で作成します。

const.py
#!/usr/bin/env python
TOKEN = 'YOUR ACCESS TOKEN'
post.py
#!/usr/bin/env python
#coding: UTF-8
import requests
import json
import const

url = 'https://api.line.me/v2/bot/message/broadcast'

# headerを定義
headers = {
        'Authorization': 'Bearer ' + const.TOKEN,
        'Content-Type' : 'application/json'
        }

# json形式でメッセージを定義
message_list = {
        'messages' : [
            {
                'type':'text',
                'text':'memento mori'
                }
            ]
        }

# jsonにエンコード
data = json.dumps(message_list)
response = requests.post(url, headers=headers, data=data)
python post.py

で動作確認できます。

5. cronに登録する

cronに登録していきます

crontab -e
*/1 10-15 * * * [ $((RANDOM \% 1200)) -eq 1 ] && python post.py

上記のように登録をすれば、10-15時の1分毎に1/1200の確率でメッセージを送信します。
大体、4日 * 60分 * 5時間 = 1200なので大体4日に1回くらいメッセージが送信されるはずです。
※ ここが一番苦労した

おわりに

開発を始めようとする方の足がかりになれば幸いです。
他にも色々な機能があるみたいなので、少しずつ記事を更新できればと思います。

参考サイト

ドキュメント | LINE Developers

2021/03/10追記

一定確率でpostするように修正を加えた

6
3
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
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?