Edited at

PythonでLINE Bot APIを使ってプッシュ通知を実装する

Renttleのあれこれ ~はじめて0からサービスを開発~ Advent Calendar 2018でLINE Bot APIについて、何回か書きましたが、今回もLINE Bot APIについて、書きました。

LINEは、日本でもっとも日常的に使われるアプリの一つであることは間違いないでしょう。このLINEのプラットフォームをうまく使いこなせれば、自分が作りたいサービスや発信したい情報を広めることができるでしょう。

今回は、「LINE Bot API」を使って、「プッシュ通知機能」を実装します。

LINE Developerの登録などの基本設定は、「LINEの「Messaging API」でテンプレートメッセージを実装してみた」の記事を参考にしてください。

プッシュ通知機能をを実装したLINE Botの例です。ぜひ、使って遊んでみてください٩(•౪• ٩)


目次


  • プッシュ通知を実装

  • push_messageメソッドを観察

  • 気をつけること

  • おまけ


対象


  • LINEのMessaging APIを使ってみたい人

  • LINEでプッシュ通知を送りたい人


プッシュ通知を実装

では、早速、実装していきましょう。

(冒頭にも書きましたが、LINE Developerの初期設定などは、こちらを参照ください。)


ライブラリの準備

$ pip install flask

$ pip install line-bot-sdk


push_message()を使ってプッシュ通知機能を実装

とても短く書けます。


push_message_sender.py

from linebot import LineBotApi

from linebot.models import TextSendMessage

# リモートリポジトリに"ご自身のチャネルのアクセストークン"をpushするのは、避けてください。
# 理由は、そのアクセストークンがあれば、あなたになりすまして、プッシュ通知を遅れてしまうからです。
LINE_CHANNEL_ACCESS_TOKEN = "ご自身のチャネルのアクセストークン"

line_bot_api = LineBotApi(LINE_CHANNEL_ACCESS_TOKEN)

def main():
user_id = "プッシュ通知を送りたLINEユーザーのuser_id"

messages = TextSendMessage(text=f"こんにちは😁\n\n"
f"最近はいかがお過ごしでしょうか?")
line_bot_api.push_message(user_id, messages=messages)

if __name__ == "__main__":
main()


このファイルを実行すれば、指定したidのLINEにメッセージが送られます。

$ python push_message_sender.py


LINEのuser_idはどうやって取得するのか

「ちょっと!!LINEのuser_idなんて知らないよ!!」って思った人がいるかも知れません。

でも、大丈夫です。

LINE Bot APIを使ってLINEユーザー情報を取得するを読めば、user_idの取得方法が書いてあります。

これで取得したuser_idをDBなどに保存しておいて、そのuser_idたちを使えば、プッシュ通知を送ることができます。


push_messageメソッドを観察

Renttleのあれこれ ~はじめて0からサービスを開発~ Advent Calendar 2018 の7日目の記事と同様に、今回使うメソッドの中を観察してみましょう。(観察力も上がってきた( ͡° ͜ʖ ͡°))


linebot/api.py

    def push_message(self, to, messages, timeout=None):

if not isinstance(messages, (list, tuple)):
messages = [messages]

data = {
'to': to,
'messages': [message.as_json_dict() for message in messages]
}

self._post(
'/v2/bot/message/push', data=json.dumps(data), timeout=timeout
)


ふむふむ。

第一引数にLINEのuser_idを渡して、第二引数にTemplateSendMessageクラスなどで定義したmessagesを渡さえば、正常に動いてくれそうですね。

それを加工して、LINEのWeb APIに投げているだけですね。超シンプル!


気をつけること

プッシュ通知を実装」内のコードのコメントアウトでも書きましたが、ご自身のチャネルのアクセストークンをリモートリポジトリにpushするのは避けてください。

理由は、そのアクセストークンさえあれば、プッシュ通知を遅れてしまうからです。

誰があなたのリポジトリを見ているかわかりません。世の中はいい人ばかりではありませんよ。


おまけ

最後までお付き合いいただき、ありがとうございました。

少しでもお役に立てたのであれば、嬉しいです。

プッシュ通知を実装したLINE Botの例です。ぜひ、使って遊んでみてくださいヾ(・ω・ ) ナデナテ



計画・企画を多様な人から意見を聞けるサービス「Renttle」を開発中です。ぜひ、使ってみて、レビューをください。