【Python】LINE Messaging APIを使ってLINEアカウントに自動でメッセージを送信する
今回はLINE Messaging APIを使ってPythonのコードからLINEアカウントにメッセージを送信する方法について紹介します。LINE Messaging APIを利用することでユーザーからのメッセージに応答するだけでなく、様々な対話式サービスを提供することが可能です。
LINE Messaging APIでできること
LINE Messaging APIは、LINE上で独自のチャットボットを作成・運用するためのインターフェースを提供します。このAPIを利用することで、ユーザーのメッセージに自動で応答したり、リッチメニューやプッシュメッセージを送信したりすることができます。
前準備
LINE Developersへの登録
LINE Developersの公式サイトにアクセスし、LINEアカウントでログインします。
初めての場合、新規にプロバイダーを作成します。プロバイダーは、開発するアプリやボットの「所有者」のようなものです。
チャネルの作成
プロバイダーの下に新しいチャネルを作成します。チャネルタイプとして「Messaging API」を選択します。
チャネル名、説明、大カテゴリ、小カテゴリを入力し、アイコンを設定します。
Channel SecretとChannel Access Tokenの取得
チャネルが作成されたら、基本設定画面から「Channel Secret」をメモします。
「Messaging API」設定画面から「Channel Access Token」を発行し、これもメモします。これらの情報は、APIを通じてLINEプラットフォームと通信する際に必要です。
チャンネルの作成
まずLineのデベロッパーサイトにログインして通知を送るチャンネルを作成します。アカウントはビジネスアカウントではない個人用アカウントで問題ないです。
コンソールにログインしたら、新規の「Providers」をcreateで作成し、その中に「Create a channel」⇒「Messaging API」を選択し新規チャンネルを作成します。名前や説明は適応でいいですが、botのチャンネル名になるので、あまり適当にしすぎないほうがいいかもです、
チャンネルを作成したら、「Messaging API」⇒「Messaging API settings」に表示されているQRコードを自身のスマホのLineアカウントから読み込んで友達登録します。これでBOTとのトークルームが作成されます。
アクセストークンの発行
そして、「Messaging API」のタブ画面の下の方に「Channel access token」という欄が存在します。ここでissue(発行)というボタンがあるので、それをクリックしてチャンネルのアクセストークンを発行します。
ライブラリのインストール
最後にLineのAPIをラッピングしてライブラリしたものがあるのでそれをインストールします。
# ライブラリのインストール
$pip install line-bot-sdk
自分のLINEユーザーIDの確認
BOTの操作に必要な送り先となる自分のアカウントIDを知っておく必要があるのですが、これが少し厄介です。これはLineの設定画面で表示されているIDとは違いLINEが内部で保持しているアカウントIDとなります。これを把握するためにはherokuとflaskを使ってwebhookサーバーを立ち上げるしかないです。
herokuとflaskによるLineのWebhookサーバーの構築の説明が長くなるので、記事にまとめていますのでそちらを参考にしてください。
関連記事:【Python】HerokuでLineのAPI用のwebhookサーバーを立てる
それがめんどくさい人は当方が作成したLine内部内部ユーザーID確認BOTを友達追加して、BOTに適当なワードを送ると内部IDを返してくれますので、そちらで確認してください
これで前準備は完了です。
PythonでMessaging APIでLINEメッセージを送信する
以上でAPIを使用する前準備ができたので実際にPythonからAPIを使用してみましょう。
下記がサンプルコードになります
from linebot import LineBotApi
from linebot.models import TextSendMessage
YOUR_CHANNEL_ACCESS_TOKEN = '自分のアクセストークン'
line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
def main():
user_id = "自分の内部ユーザーID"
messages = TextSendMessage(text=f"こんにちは😁\n\n"
f"最近はいかがお過ごしでしょうか?")
line_bot_api.push_message(user_id, messages=messages)
if __name__ == "__main__":
main()
これでBOTアカウントから自分のLINEアカウントにこんにちは~という通知が送られてきます
終わり
ここまでがLINE Messaging API の基本的な使い方になります。ここから実際にチャットBOTなどにするためにはWebhookサーバーに組み込む必要があります。その方法については下記の記事で解説しています。では~