今回は、LINE(ライン)のトークに、簡単なテキストと画像を送信するメモとなります。
コードはPythonで実装し、トーク通知用APIのLINE Notify(https://notify-bot.line.me/ja/)を利用します。
前提として、LINEアカウントを持っていて、
送信対象のトークが存在している前提での内容となります。
私の手元では、PyCharmでPythonを書いて試してみました。
同じ様にPyCharmを利用する場合、以下を参考にプロジェクトを作成してみて下さい。
テスト環境
・OS:mac OS Sur 11.5.2
・PyCharm CE:2021.3
・Python:3.9
LINE Notify 簡易概要
LINEのトークに簡単に、テキストや画像などの情報を送信できる連携用サービスです。
- LINEアカウントを持っていれば利用可能(基本無料)
- 自分のアカウントが参加しているトークルームに、情報をリクエスト送信可能
- 1ユーザーあたり100個までトークンを発行可能
- 1つのユーザー連携につき、デフォルト1時間に1000回までリクエスト送信可能
詳細は公式情報を参照ください。
LINE Notify アカウント登録
まずは、LINE Notifyを利用するために、
LINE NotifyにLINEアカウントでログインを行います。
・LINE Notify(https://notify-bot.line.me/ja/)
アクセストークン発行・連携
ログインしたら、実装用のトークンを発行します。
2022/1/16時点では、マイページの下部より発行できます。
アクセストークンの発行(開発者向け)の部分にある、
トークンを発行するをクリックして発行します。
トークンを発行する画面が表示されたら、
任意のトークン名を入力し、対象のトークルームを選択して、発行するボタンをクリックします。
トークルームと連携されると、連携中サービスに表示されます。
連携を解除する場合は、削除ボタンをクリックします。
トーク メッセージ送信
まずは、トークにメッセージを送信させてみます。
import requests
def main():
send_line_notify('てすとてすと_abc')
def send_line_notify(notification_message):
# LineNotify 連携用トークン・キー準備
line_notify_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
line_notify_api = 'https://notify-api.line.me/api/notify'
# httpヘッダー設定
headers = {'Authorization': f'Bearer {line_notify_token}'}
# トーク送信メッセージ設定
data = {'message': f'message: {notification_message}'}
# Post実行
requests.post(line_notify_api, headers=headers, data=data)
if __name__ == "__main__":
main()
以下のトークン部分は、自身で発行したトークン文字列を指定して下さい。
# LineNotify 連携用トークン・キー準備
line_notify_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
PyCharmの緑三角マーク(実行ボタン)などから、プログラムを実行します。
実行後、LINEアプリなどで確認を行います。
今回は、LINE Notifyのトークルームに送信しました。
送信されるメッセージは、messageで指定された文字列が送信されます。
def main():
send_line_notify('てすとてすと_abc')
def send_line_notify(notification_message):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
省略
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# トーク送信メッセージ設定
data = {'message': f'message: {notification_message}'}
トーク 画像 送信
今度は、画像を送信してみます。
import requests, os
def main():
send_image_line_notify()
def send_image_line_notify():
# カレントディレクトリを、送信画像が配置されているパスに変更
os.chdir(os.getcwd() + '/png')
# LineNotify 連携用トークン・キー準備
line_notify_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
line_notify_api = 'https://notify-api.line.me/api/notify'
# payload・httpヘッダー設定
payload = {'message': 'テスト通知1'}
headers = {'Authorization': 'Bearer ' + line_notify_token}
# 送信画像設定
files = {'imageFile': open("110.png", "rb")} # バイナリファイルオープン
# post実行
line_notify = requests.post(line_notify_api, data=payload, headers=headers, files=files)
if __name__ == "__main__":
main()
以下のトークン部分は、自身で発行したトークン文字列を指定して下さい。
# LineNotify 連携用トークン・キー準備
line_notify_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
また、今回はpngというフォルダを用意して、
事前に送信用の画像を準備しておきました。
プログラム上で、送信対象の画像をファイル名指定しています。
# 送信画像設定
files = {'imageFile': open("110.png", "rb")} # バイナリファイルオープン
また、今回は事前にプログラムの実行ディレクトリを、
画像の配置ディレクトリに変更していますが、相対パス指定などでも実行できると思います。
# カレントディレクトリを、送信画像が配置されているパスに変更
os.chdir(os.getcwd() + '/png')
今回も、PyCharmの緑三角マーク(実行ボタン)などから、プログラムを実行します。
今回のメモは以上となります。
LINEは、国内で多く利用されているサービスですので、
簡単にメッセージを送信できるようになるLINE Notifyは重宝します。
特に、個人利用レベルであれば、LINE Message APIよりもお手軽で良いと思います。
Python以外でも実装できますので、ぜひお試し頂ければと思います。
LINE NOTIFY を利用して、メッセージ(テキスト)、画像を送ることができました。
送りたいものが音声メッセージ(.m4aファイル)の場合は、どのように記述すればよいのでしょうか。pythonによるコーディング例を教えていただけませんか。
コメント頂きありがとうございます。
確認したところ、LINE NOTIFYは音声メッセージ(.m4aファイル)に対応していないようです。
公式ドキュメントを見る限り、画像ファイル(png, jpeg)以外サポートされていなさそうなので、
LINE NOTIFYでの対応は難しいと思います。
https://notify-bot.line.me/doc/ja/
さっと見た限り、LINE APIであれば.m4aも対応していそうです。
https://developers.line.biz/ja/reference/messaging-api/#audio-message
ただ、申し訳ございませんが、LINE APIは触った事がなく、すぐにサンプルなどご提示出来そうにないです。
LINE NOTIFYが簡単そうだったので始めたのですが、LINE APIも知る必要がありそうですね。両者の関係すら知らないロートルですので、もう少し勉強してみます。取っ掛かりを教えていただいて感謝しています。
お忙しいところ、大変ありがとうございました。