こんにちは、代表のみでっとです。
本記事は、LINEメッセージをPythonで送る方法について紹介する記事の後半になります。まだ前半をご覧になられていない方は、下記リンクからどうぞ!
以下がGitHubのコードになるので、実際にGoogle Colaboratoryでプログラムを見ながら読み進めていただけるとわかりやすいかと思います。
GitHubについてよくわからない方、活用方法について知りたい方は、以下の記事で詳しく解説を行っているので参考にしてみてください!
それでは説明に入っていきます!
目次
アクセストークン
前回の記事の最後の項目でアクセストークンを発行しました。
まず初めに、21行目の”YOUR_ACCESS_TOKEN”の部分を、発行した各々のアクセストークンで差し替えを行ってください。ここにアクセストークンを挿入することで、各々のラインアカウントを識別し、ご自身のラインアカウントにメッセージを送れるようになります!
headers = {"Authorization": "Bearer " + "YOUR_ACCESS_TOKEN"}
ちなみにこの部分を変更せずにそのままプログラムを実行すると、<Response [401]>というメッセージが返ってきます。
これはエラーメッセージの一種で、簡単に説明するとあなたのLINEアカウントを識別してメッセージを送る命令を出そうとしたけど、存在しないからできなかったよ…💦ということになります。忘れずにアクセストークンを入れるようにしましょう。
プログラムの説明
コメント
それでは、1行ずつ簡単に、プログラムの説明を行っていきます!
#LINE_message
一番最初に、本プログラムについて簡単に説明を行っています。説明等の文字列の前に#を打つことでコメントアウトし、プログラムが読みやすくなるので、積極的に活用して可読性の高いプログラムを意識して書くよう心がけましょう!
ライブラリのインポート
import requests
ここでは、サードパーティ製のrequestsライブラリをインポートしています。
Google Colaboratoryではデフォルトでrequestsライブラリがインストールされているので別途インストールする必要はありませんが、もしインストールが必要な場合には新規のセルを追加して、pip install [ライブラリ名]で出来ます。
メッセージ内容
#message
message="ありがたき幸せ..!"
次の行では、変数messageにstrクラスのインスタンスである
“ありがとう、嬉しい!”
という文字列オブジェクトを格納しています。
簡単に言うと、messageという変数に文字を代入しただけで、ここに打ち込んだ文字列がラインにメッセージとして送られるので、自由に変化させて遊んでみてください(笑)
#image
image="cafe.jpg"
次に、変数imageに”cafe.jpg”という画像ファイルを格納しています。
基本的にはカレントディレクトリからの相対パスで指定しますが、絶対パスでも可能でどちらでも可能です。
例えば同じ名前のファイルが異なるディレクトリに存在していた場合、そのファイルを読み取ればよいかパソコンが分からずエラーが起きてしまうので、注意しましょう。
今回の場合は、カレントディレクトリにある”cafe,jpg”という画像を変数imageに代入せよという指令を出しています。では、この状態でプログラムを一度実行してみます。すると、以下のエラーが表示されました。なぜでしょうか?
結論から言ってしまうと、
FileNotFoundError
つまり、”cafe,jpg”という名前のファイルを探してみたけど見つからなかったよ!ということになります。
そこでこのエラーを解決するために、cafe.jpgという画像ファイルをGoogle Colaboratory上にアップロードしてみましょう。
まず、適当な画像ファイル(jpgファイル)を用意していただいて、名前をcafeにしてください。
その後、赤枠で囲まれたファイルのアイコンをクリックしてください。
開いた部分に、先ほど作製したファイルをドラッグしてみてください。
すると、以下のポップアップが出てくるかと思います。
Google Colaboratoryでは、アップロードしたファイルはサーバーの負荷を軽減するために一定時間で削除される仕様になっているのでその警告が出てきますが、ここはOKで大丈夫です。
この操作によって、カレントディレクトリにcafe.jpgをアップロードすることができたので、エラーが発生しなくなります。確認してみてください(^▽^)/
#ID of LINE sticker
sticker_package_id=2
sticker_id=171
次の行では、送るスタンプをLINEスタンプ固有のIDで指定しています。
それぞれのスタンプのIDについてはこちらのページでまとめられているので、適宜変更して送ってみてください!
LINENortifyのHP
url = "https://notify-api.line.me/api/notify"
上記のURL(https://notify-api.line.me/api/notify)にアクセスして、アクセストークンで端末の識別、およびデータの取得を行うため、ここでは変数urlにURLを代入しています。
辞書の作成
payload = {"message": message, "stickerPackageId": sticker_package_id, "stickerId": sticker_id, }
#Please replace "YOUR_ACCESS_TOKEN" by your own LINE_ACCESS_TOKEN
headers = {"Authorization": "Bearer " + "YOUR_ACCESS_TOKEN"}
この辞書をHPに情報として渡して、メッセージを送ってもらう仕組みになっているので、メッセージの内容の項目で記入した内容を辞書に格納しています。
画像ファイル有無の判定
if image !=None:
files = {"imageFile": open(image, "rb")}
ここでは、imageに情報が格納されているか否かのチェックを行っています。情報が格納されている場合にはif文以下の内容が実行され、先ほど作製したファイルが開かれます。
情報の送信、実行
requests.post(url, headers=headers, params=payload,files=files)
最後に、これまで入力した情報を送信し、ラインメッセージを送るように指示を送っています。
まとめ
ここまで、簡単にですがプログラムに関して一通りの説明をおこなってみました。厳密ではない部分があるかと思いますが、自分なりに分かりやすくかみ砕いて解説してみたので、実践的なプログラムの例として参考にしていただければと思います!
是非メッセージの内容を変更して、実行してみてください!初めてメッセージが送られてきたときは感動しました(笑)
内容に関して分からない部分、ご指摘等ありましたら、是非コメントにて教えていただけると幸いです(o^―^o)
それではまた次の記事でお会いしましょう!
ここまで長々と読んでいただきありがとうございました!