あちこちで解説されているかと思いますが、本記事では、pythonを用いてLineにメッセージを送信する方法をご紹介します!
初めて実装した際、地味に感動しました笑
実際、機械学習や自動で何かを処理している際に発生したエラーなどをいち早く知る手段としてはかなり有効だと思います。
なにができるの?
まずはどんなことが出来るのか見てみましょう。
このように、メッセージはもちろん、スタンプや写真を送ることができます。
ただ自分のアカウントから直接メッセージ等を送信するのではなく、Line Notifyというアカウントと一対一、もしくはLine Notifyをグループに招待し、Line Notify経由で複数人に発信することができます。
グループに招待さえしておけば、「1分おきに定期的に同じメッセージやスタンプを送り続ける」なんていう精神崩壊チキンレースもできます。
はたまた、なんかの歌詞を少しずつ送信させるプログラムを組んで、文字版イントロドンもできますね。
準備
pythonでLineのやりとりを行う前に、個人的に準備しなければならないものがあります!
- Line Notify と友達になる
- アクセストークンの発行
- のLine Notifyと友達になるのは出来ると思いますので、アクセストークンの取得方法を説明していきます。
まずはこちらにアクセスしてください。
このような画面がが出てくると思うので、右上の「ログイン」ボタンからまずはログインしましょう。
ログインが完了すると、同様のホームページに戻ります。
すると、右上に自分のアカウント名が表示されます。
そのタブ内に「マイページ」とあるので、そこからマイページに移動しましょう。
するとページ下部に、「トークンを発行する」とい項目があるかと思いますので、睨みつけながらクリックしましょう。
するとこのように、トークン名・トークルームを指定してくれい、と出てきます。
任意のトークン名、トークルームを選択して、「発行する」ボタンを得意げな顔でクリックしましょう。
そうするとランダムな文字列が表示されますので、コピーして忘れないようにどこかに貼り付けておきましょう!
トークンをコピーし忘れた、もしくはどこかにペーストする前に別のなにかをコピーしてしまった場合は、作成したトークンを削除し、再度同様の流れでトークンを発行しなおせば万事オッケーです!
さて、これで準備は整いましたのでいよいよコードを書いていきましょう!
トークンを使ってあれこれ送信してみる
共通で使用する情報
初めに、メッセージ送信やスタンプの送信などを行う際に、共通で必要となるライブラリや情報を先に定義してておきます。
アクセストークンさえ書き換えていただければ、コピペで使用できます。
import requests
# LineNotifyのAPIのpost先
url = "https://notify-api.line.me/api/notify"
# 取得したトークン
access_token = '[ 先ほど取得したアクセストークン ]'
# postする際に一緒に送信するヘッダ情報
headers = {'Authorization': 'Bearer ' + access_token}
メッセージを送信する
メッセージを送信するコードです!
def send_text(txt):
payload = {'message': txt}
res = requests.post(url, headers=headers, params=payload)
上記の関数に任意のテキストを渡すと送信されます。
#実行
txt = 'こんにちは'
send_text(txt)
スタンプを送信する
def send_stamp(txt, stickerPackageId, stickerId):
payload = {
'message': txt,
'stickerPackageId': stickerPackageId,
'stickerId': stickerId
}
res = requests.post(url, headers=headers, params=payload,)
スタンプを送信する場合はテキストの他に、packageId, stickerIdの2つのスタンプを表すIDが必要です。
この2つのIDは、こちらのページに記載されています。
実行してみましょう。
# 実行
txt = 'スタンプ送信するわ'
package_id = 11538
sticker_id = 51626495
send_stamp(txt, package_id, sticker_id)
スタンプを送信する際に渡すテキストが空文字(”)ですと、スタンプは送信されず、しかもエラーも出ません。
同様に、2つのIDが間違っている場合も送信されませんので注意しましょう!
画像を送信する
def send_img(txt, img_path):
payload = {'message': txt}
files = {'imageFile': open(img_path, 'rb')}
res = requests.post(url, headers=headers, params=payload, files=files)
画像を送信する場合は、テキスト・画像データのファイルパスが必要になります。
このpythonファイルと同じディレクトリに「img.png」という画像データがあるとする場合の実行コードは次のようになります。
# 実行
send_img('これはフリー素材です', 'img.png')
※画像もスタンプと同様、空文字ですとエラーは出ないですが送信もされません。
以上、pythonで文字やスタンプ・画像を送信する手順でした!
まとめ
今回は、LineのAPIを使用してメッセージなどを送信する方法をご紹介させていただきました!
意外と簡単に送信することができたかと思います。
冒頭でも触れましたが、これを使用すればスクレイピング中でのエラーログや終了通知などを気軽に確認することができます!
使い方は様々です。ひとつの選択肢として頭に入れておいても損は無いでしょう。
今回、APIなどについては触れませんでしたが、流れが悪くなってしまうので割愛しております、ご了承ください。
以上、ご覧いただきありがとうございました!
コメント