PythonによるLINE操作:LINE Messaging API/ LINE Notify
1.概要
今回はLINE Messaging APIを紹介します。この機能を使用して自分のLINEアカウントに希望する情報を通知が可能となります。
今回は2通りの手法を紹介します。
2.Messaging APIの環境構築
Messaging APIを使用していくための環境構築を実施します。
2-1.Messaging APIへの登録
まず初めに「Messaging API | LINE Developers」のサイトからLINEアカウントでログインします。
2-2.Providerの作成
次にProviderの「Create」を押してBot用アカウントを作成します。
2-3.channelの設定
次にchannelを選定します。今回は「Messaging API channel」です。
次に各項目を入力します。
2-4.Botの友達登録
channel内の「Messaging API」からQRコード or IDで友達登録します。
2-5.user IDとChannel access tokenの取得
APIを使用するためにuser IDとChannel access tokenを取得します。user IDは「Basic settings」タブの一番下の”Your user ID”です。
Channel access tokenは「Messaging API」タブの一番下です。最初は未表示のため「Issue」ボタンを押すと下記の通り発行されます。
3.Messaing APIの実装:line-bot-sdk
簡単にLINE Message APIを使用するために外部ライブラリを使用します。
3-1.ライブラリインストール
APIを操作するためのライブラリ:line-bot-sdkをインストールします。
pip install line-bot-sdk
3-2.token用のsecretファイル作成
user IDとChannel access tokenの値を取得できるように別ファイルに書き込みます。
[secret.json] ※useridとaccess_tokenは自分が発行したものに書き換えてください。
{
"userid": "U59bdd5e0d202ed9c85f9b5d947806ffb",
"access_token": "jZk4DjnHUZ+TvpuoGrEO83ULr7dQWFNOhM9RTii4voHBTksDsn/B+ohtrJVaSFK7JV7laSV9kqK0olwzvmpBR4yxDrQggc2Z3muunTCm3YUKfnnuwWwFgf6W1NojvGAKriP2fJsi+DLhSVPDrPNmgAdB04t89/1O/w1cDnyilFU="
}
このようにjsonファイルを作成すると下記コードを実行すれば辞書型で戻り値を取得できるため直接tokenなどを記載する必要がなくなります。
[In]
import json
with open('secret.json', 'r') as f:
api = json.load(f)
print(api) #出力は辞書型(JSON形式)
3-3.テキストメッセージの送付
linebotライブラリを使用すると下記でメッセージを送付できます。
[In]
import json
from linebot import LineBotApi
from linebot.models import TextSendMessage
with open('secret.json', 'r') as f:
api = json.load(f) #secret.jsonからuser_IDとchannel_tokenを取得
bot_api = LineBotApi(api['access_token']) #インスタンス化
def main():
user_id = api['userid'] #IDを取得
messages = TextSendMessage(text='Hello, world!') #LINEに送付するメッセージ
bot_api.push_message(user_id, messages=messages)
main() #メイン関数を実行
4.LINE Notify
Messaging APIとは別で外部アプリケーションからLINEの任意の相手に対してメッセージを送付できるサービスとしてLINE Notifyがあります。
4-1.LINE Nofityの準備:Token発行
「LINE Notify」サイトから「マイページ」->「1:1でNINE Notifyから通知を受け取る」->「トークンを発行する」->「(トークンを)コピー」します。
4-2.メッセージの送付
APIを使用したメッセージの送付は下記の通りです。
[In]※コード行数を減らすためにTokenはそのまま記載しましたが3-2.をご参照ください。
import requests
import json
token = 'oKB4UG3F94KcHhGuO09W19fE4NiJv01MwMj6y4lc63o' #APIのトークン
url = 'https://notify-api.line.me/api/notify' #APIのエンドポイント
headers = {'Authorization': 'Bearer ' + token}
payload = {'message': 'Hello, world!'} #LINEに送るメッセージ
requests.post(url, headers=headers, data=payload)
4-3.画像ファイルの送付
APIを使用したメッセージ+画像ファイルの送付は下記の通りです。
[In]
import requests
import json
token = 'oKB4UG3F94KcHhGuO09W19fE4NiJv01MwMj6y4lc63o' #APIのトークン
imgfile = 'konan.JPG' #猫の画像
url = 'https://notify-api.line.me/api/notify' #APIのエンドポイント
headers = {'Authorization': 'Bearer ' + token}
payload = {'message': '猫の画像を送付します'} #LINEに送るメッセージ
with open(imgfile, 'rb') as f: #ファイルをバイナリモードで開く
files = {'imageFile': f} #ファイルを送信するための辞書
requests.post(url, headers=headers, data=payload, files=files)
参考資料
●LINE Developer Console:LINE Developersのホーム画面
●Messageing API Docs:Messaging APIのドキュメント
あとがき
定期実行+スクレイピングで定期的に欲しい情報をLINE APIで連絡するBOTを紹介したいけど連休までにできなかったからとりあえず公開します。
4章で追加するか別記事で作成するかは状況に応じて対応予定。※あと見出し画像も修正しないと・・・
この記事が気に入ったらサポートをしてみませんか?