前回の記事ではAWS Cognitoを使ってLineログインの実装を行いました。
しかしせっかくLineアカウントで認証したのであれば、そのままメッセージを送って販促等に役立てたいですよね?
今回はLineのメッセージAPIを使って、Line認証したユーザーへメッセージを送れるようにしてみましょう!
目次
仕様
- Lineログインで認証しているLineアカウントにメッセージを送る
- Line公式アカウント経友でメッセージを送る。そのためLine公式アカウントに登録してもらう必要がある
- メッセージ送信はPythonで行う
Lineログインの実装
こちらは前回の記事を参照してください。
この続きという前提で進めます。https://libproc.com/line-cognito/
Line Messaging APIを設定する
Line Developersより、Messaging APIを設定します。
なお、必ずCognitoを作成したプロバイダを選んで、『新規チャンネル作成』を押してください。
下記のような選択肢が出てくるので、Messaging APIを選択します。
下記のように入力を行ってください。
作成を押すと、下記のようなメッセージが出てきますので、そのままOKを押してください。
更に規約が2つ程出てくるので『同意する』を押すと、MessagingAPIが作成できます。
Pythonでのサンプルを実行
メッセージを送る部分については、『line-bot-sdk』が必要になりますので、インストールしてください。
pip install line-bot-sdk
以下がサンプルプログラムです。
import os
import linebot.v3.messaging as bot
# LINE_BOT_ACCESS_TOKENは、Messaging API設定のチャネルアクセストークン
LINE_BOT_ACCESS_TOKEN = os.environ.get('LINE_BOT_ACCESS_TOKEN')
configuration = bot.Configuration(
access_token=LINE_BOT_ACCESS_TOKEN
)
def send_message_to_line(messages, line_user_id):
message_dict = {
"to": line_user_id,
"messages": messages
}
with bot.ApiClient(configuration) as api:
api_instance = bot.MessagingApi(api)
push_message_request = bot.PushMessageRequest.from_dict(
message_dict)
try:
res = api_instance.push_message(push_message_request)
print("Successful sending!!")
print(res)
except Exception as e:
print(f"Exception : {e}")
messages = {
"type": "text",
"text": "登録完了しました。"
}
send_message_to_line([messages], line_user_id)
‘LINE_BOT_ACCESS_TOKEN’は、先程作った画面に『Messaging API設定』というタブがあるので、そこから発行して置き換えてください。
また、リクエストするユーザーIDは”U”から始まるuserIdです、Cogintoのidentitiesから確認することができます。
これでLine認証したユーザーへ、メッセージを送ることができます!