PHPで簡易LINEBotを作ってみた
https://kazzstorage.com/linebot-trial/
前回は送られてきたメッセージに対して返信するプログラムを作成しましたが、今回はPCからPythonプログラムを実行してメッセージを送ります。
PUSH送信
PUSH送信は一人に特定のメッセージを送信する機能です。dataのtoに宛先ユーザIDをのっけて送信します。

ポイントは送信先URLです。PUSH専用のAPIが用意されてるんですね。ちなみにアクセストークンとUserIDは、チャネル基本設定に載っています。
# -*- coding: utf-8 -*-
import json
import requests
# HTTPヘッダ
header = {
"Content-Type": "application/json;charset=UTF-8",
"Authorization": "Bearer *************..." # アクセストークン
}
# POSTデータ
data = {
"to": "********************", # 送信先USERID
"messages": [
{
"type": "text",
"text": "HELLO WORLD!"
}
]
}
# dataをJSONに
data = json.dumps(data)
# PUSU送信
ch = "https://api.line.me/v2/bot/message/push"
req = requests.post(ch, headers=header, data=data)
# レスポンス(ステータス)
print(req.status_code)
if req.status_code != 200:
print(req.text)
実行したらステータスコードが返ってきます。200で成功、400台が認証エラーなど、500台がサーバーエラー。

multicastで複数ユーザに送信
POSTでは一人にしか送信できませんが、multicast送信は複数ユーザーに一斉送信可能です(一度で最大150ユーザ)。
PUSHとの変更点はdataのtoがスカラ配列になったのと、宛先URLがmulticastになっている点ですね。このtoの配列に複数のUSERIDを入れると、全員に送信されるワケです。
# -*- coding: utf-8 -*-
import json
import requests
# HTTPヘッダ
header = {
"Content-Type": "application/json;charset=UTF-8",
"Authorization": "Bearer *************..." # アクセストークン
}
# POSTデータ
data = {
"to": ["********************"], # 送信先USERID
"messages": [
{
"type": "text",
"text": "HELLO WORLD!"
}
]
}
# dataをJSONに
data = json.dumps(data)
# PUSU送信
ch = "https://api.line.me/v2/bot/message/multicast"
req = requests.post(ch, headers=header, data=data)
# レスポンス(ステータス)
print(req.status_code)
if req.status_code != 200:
print(req.text)
もちろんテキスト以外もPUSHできます。
詳しくはLINEDevelopersのリファレンス
https://developers.line.biz/ja/reference/messaging-api/#message-common-properties
The present writer kazz.