こんにちは、くのへです!
LINEのMessaging APIを使おう!というテーマで記事を書いて行きます。
前回の記事ではLINEのMessaging APIを使ってメッセージを送信しました!
でもこの方法だと、実は自分にしかメッセージが飛んできません。
自分以外のチャンネル登録者には全くメッセージが飛んでいないのです。
これは、前回の記事は「プッシュメッセージ」という仕組みを使っているため、所定のユーザIDの人にだけ送られる仕組みだったためです。
今回の記事はチャンネルの友達登録者全員に一斉にメッセージを送る「ブロードキャストメッセージ」を解説します。
なお、次回の記事では「メッセージオブジェクト」について解説したいと思います。メッセージオブジェクトを習得すればテキストだけではなく絵文字やLINEアイコンを送ることが出来ますよ。
LINEにブロードキャストメッセージを送る(GoogleAppsScript)
LINEにブロードキャストメッセージを送るプログラム(GoogleAppsScript)は、ずばりこちらです。
「ACCESS_TOKEN」の値は、前回の記事のアクセストークンを書いて下さい(クオーテーションの間のXXXXXの部分を書き換え。クオーテーションは消さないでね)。
function BroadCastmessageToLine() {
const ACCESS_TOKEN = 'XXXXX';
var url = 'https://api.line.me/v2/bot/message/broadcast';
var headers = {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + ACCESS_TOKEN
};
var message = "Hello BroadCastMessage";
var data = {
'messages': [
{
'type': 'text',
'text': message
}
]
};
var options = {
'method': 'post',
'headers': headers,
'payload': JSON.stringify(data)
};
UrlFetchApp.fetch(url, options);
}
さて、これを実行してみましょう。
実行すると、、、「Hello BroadCastMessage」というメッセージが届くはずです!!
キターー!!!
コードの中央の「Hello BroadCastMessage」を書き換えると、メッセージが変わります。
LINEにメッセージを送る(VBA)
なお、ExcelVBAで同じことをやってみると、次のコードになります。
これもACCESS_TOKENの値は、自分のものを使ってください。
Sub BroadCastmessageToLine()
' LINEのアクセストークンとユーザーIDを設定
Dim ACCESS_TOKEN As String
Dim USER_ID As String
ACCESS_TOKEN = "XXXXX"
' URLの設定
Dim url As String
url = "https://api.line.me/v2/bot/message/broadcast"
' メッセージの内容
Dim message As String
message = "Hello Line from VBA"
' JSONデータを作成
Dim data As String
data = _
"{" & vbCrLf & _
"""messages"": [" & vbCrLf & _
"{" & vbCrLf & _
"""type"": ""text""," & vbCrLf & _
"""text"": """ & message & """" & vbCrLf & _
"}" & vbCrLf & _
"]" & vbCrLf & _
"}"
Dim xmlhttp As Object
' HTTPリクエストの設定
Set xmlhttp = CreateObject("MSXML2.XMLHTTP.6.0")
With xmlhttp
.Open "POST", url, False
.setRequestHeader "Content-Type", "application/json; charset=UTF-8"
.setRequestHeader "Authorization", "Bearer " & ACCESS_TOKEN
.send data
End With
' レスポンスの確認
If xmlhttp.Status = 200 Then
MsgBox "メッセージが送信されました。"
Else
MsgBox "送信エラー: " & xmlhttp.Status & " - " & xmlhttp.responseText
End If
Set xmlhttp = Nothing
End Sub
これで実行すると、、、
ちゃんとLINEにキターーー!!!
LINEにメッセージを送る(Python)
Pythonだとこうなります。(これもACCESS_TOKENとUSER_IDの値は、前項で取得した値をコピペしましょう。)
import requests
import json
def BroadCastmessageToLine():
ACCESS_TOKEN = "XXXXX"
url = "https://api.line.me/v2/bot/message/broadcast"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {ACCESS_TOKEN}"
}
message = "Hello Line from Python"
data = {
"messages": [
{
"type": "text",
"text": message
}
]
}
response = requests.post(url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
print("メッセージが送信されました。")
else:
print(f"送信エラー: {response.status_code} - {response.text}")
# 関数を実行
BroadCastmessageToLine()
これを実行すると、、、
ヨシ!!(現場ネコ)
Postリクエストでブロードキャストメッセージを送ることが出来ました。
コードの解説
ブロードキャストメッセージは、チャンネル登録者全員に一気にメッセージを送る方法です。アクセストークンさえあればそのチャンネルを特定できるので、アクセストークンのみをしています。
前回の記事のプッシュメッセージとの違いを見てみましょう。
エンドポイント(URL)が違いますが、他はユーザIDに関する行が無いだけで、他は全て同一ですね!
そう、ブロードキャストメッセージは殆どプッシュメッセージと同じ仕組みで動きます。
ユーザIDを指定しなくてよいので、むしろ簡単!楽勝!第3部完!!!
VBAもPythonも同様です。前回記事のものとエンドポイント(URL)とユーザIDの有無だけが違います。
これでチャンネル登録者全員にメッセージを送る仕組みの出来上がりです!
これでLINE Messaging API、完璧だ!!!
お疲れ様でした。
おわりに
本当にお疲れ様でした。前回の記事を試した方には簡単だったんではないでしょうか?
ブロードキャストメッセージを使うと、チャンネル登録者全員に送信できます。
しかし、間違ったメッセージを送ってしまう事もあり得るため、最初はプッシュメッセージで試してから送った方が良いかなと思います。
コードも簡単ですし、URLを変えるだけでブロードキャストメッセージに出来るので、まずはプッシュメッセージで試してからブロードキャストメッセージに変更しましょう。
関連記事
【LINE Messaging APIの使い方解説(その1)】LINE Developerコンソールへのアクセスと公式アカウントの作成方法
【LINE Messaging APIの使い方解説(その2)】LINE APIでメッセージ送信(GAS,VBA,Pythonサンプルコードあり)
【LINE Messaging APIの使い方解説(その4)】メッセージオブジェクトの使い方
【LINE Messaging APIの使い方解説(その5)】プロ仕様のメッセージ(テンプレートメッセージ)の使い方
【LINE Messaging APIの使い方解説(その6)】チャンネル登録者数などの情報を取得しよう
【LINE Messaging APIの使い方解説(その7)】LINE公式アカウントの使い方 その①
【LINE Messaging APIの使い方解説(その8)】LINE公式アカウントの使い方 その②