はじめに
LINE Messaging APIを使用してメッセージを送信してみました。
初めて触る人の参考になれば幸いです。
対象読者
- LINE messaging APIを使用してみたい人
作るもの
- 友達登録をしてくれているユーザに対して、4日1回くらいの頻度で「memento mori」というメッセージを送信するbot
事前準備
LINE Developersで、Developersアカウントを作成してください。
1. チャネルを作成する
プロダクト > 詳細はこちら より、詳細画面に遷移します。
Messaging APIの「今すぐ始めよう」を選択します。
画像やチャネルの概要等を記載しましょう
必要事項を入力していくと上記のような画面になります。
2. token情報を取得する
Messaging API設定より、「チャネルアクセストークン(長期) 」をコピーします
3. メッセージの送信テストをする
動作確認のため同ページで友達登録をしておきましょう
手持ちの端末で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
または、下記のファイルを手動で作成します。
#!/usr/bin/env python
TOKEN = 'YOUR ACCESS TOKEN'
#!/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回くらいメッセージが送信されるはずです。
※ ここが一番苦労した
おわりに
開発を始めようとする方の足がかりになれば幸いです。
他にも色々な機能があるみたいなので、少しずつ記事を更新できればと思います。
参考サイト
2021/03/10追記
一定確率でpostするように修正を加えた