前回の準備編にひきつづき
今回は実際にPythonでLINEに
メッセージを送信するプログラムを
作成して実行してみます。
ただし・・・
ただし今回は
自分のLINE IDに送るだけ
の使い方しかできません。
LINEだけでなくSNSでは
画面に表示される短いIDではなく
内部で管理している長いIDで
相手に送信する必要があります。
このIDは自分の友達のIDを調べる
プログラムを書けば入手できますが
なんとLINEでは有料プランに
入らないと使えないように
なっているのです❗️
ですので、どうしても
やりたいかたは
有料プランに入られて
みてはと思います。
今回のプログラムについて
今回のプログラムを
以下に掲載します。
<line_id_token.py>
user_id = 'U2xd0238437583745346345db098275ac98367cde'
channel_access_token = '{sapi094fzsjbz:+.lkajo23'TYU.gnlknr=~q3w8wekjF=)ghv2ejnhb}'
このファイルは送信元の
LINEアカウントのユーザIDと
前回の記事で準備した
チャネルアクセストークン
を書いてあるもので
変数に代入しているだけですが
いちおうPythonプログラムです。
なお
ユーザIDとアクセストークンは
機密情報なのでデタラメな値に
変更しています
<line_send.py>
# coding:utf-8
# Webアプリへのリクエストをするモジュールを"ureq"としてインポート
import urllib.request as ureq
# JSON形式のデータを扱うモジュールをインポート
import json
# LINEの送信元ユーザIDとアクセストークンの指定を"parm"としてインポート
import line_id_token as parm
# 指示を出す先のLINE APIのURL
url = 'https://api.line.me/v2/bot/message/push'
# 送信用のデータ
data = {
'to' : parm.user_id,
'messages' : [
{
'type' : 'text',
'text' : 'こんちわ!'
}
]
}
# 送信用のデータをJSON形式のデータとして取り込みutf-8の文字コードに変換
jsonstr = json.dumps(data).encode('utf-8')
# LINE APIのURLとデータをセットした指示(リクエスト)の手紙を作成
request = ureq.Request(url, data=jsonstr)
# 手紙に指示内容がJSON形式である旨を追記
request.add_header('Content-Type', 'application/json')
# チャネルアクセストークンで許可を得る旨を追記
request.add_header('Authorization', 'Bearer ' + parm.channel_access_token)
# Webアプリに指示をポストするため'POST'を返すだけの無名の関数(ラムダ関数)を指定
request.get_method = lambda: 'POST'
# 作った手紙を送り(リクエストを元にURLを開き)、返信をresponseに受け取る
response = ureq.urlopen(request)
# 返信内容を読み込む
ret = response.read()
print('Response:', ret)
本体プログラムです。
<line_id_token.py>を インポート して
プログラムの中で使っています。
前回の記事で
PythonからLINEに手紙を
送って指示することを
想像してもらったと思います。
下記です。
1.PythonがLINEに指示の入った
手紙を送る
2.LINEは誰から何を指示されたかを
確認して本当に指示に従って
良い人かを判断して
3.手紙に入っていたメッセージを
手紙を送った人の友達に送信して
4.送信できたことをPythonに手紙で
伝えます
上記の手続きのうち
黄色マーカー部分が
❶ Pythonが実行すること
❷ Pythonが与える情報
❸ Pythonが受け取る情報
になっています。
この3行がプログラムの
一番簡単な骨格です。
上のプログラムのどこが
❶❷❸に対応しているか
確認してみてください。
また
3行が7倍以上に膨れ上がって
いるのですが
これはLINE APIの仕様に沿って
必要となるデータを
追加しているためです。
詳細な解説と実行の様子
では
プログラムの詳細な解説と
実行の様子を動画で
お送りします。
動画中でLINE APIのページと
プログラムを照合すると
言ってましたが
忘れておりました😂
下記に貼り付けましたが
多分、見ていただくと
おわかりになるかと思います
下記は、curlというコマンド
で実行するときの例ですが
プログラムに書いてある情報
とほとんど変わりないですね
curl -v -X POST https://api.line.me/v2/bot/message/push \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {channel access token}' \
-d '{
"to": "U4af4980629...",
"messages":[
{
"type":"text",
"text":"Hello, world1"
},
{
"type":"text",
"text":"Hello, world2"
}
]
}'
次回へ
残念ながら自分以外には
メッセージを送れない
ということでした。
しかし、本当に自分以外に
送れないのか・・・と
探したところ
ありました❗️
LINE Notifyという仕組みを
経由して送る方法です。
LINE Notifyを友だち追加した人
の間でメッセージが共有される
というものです。
なので次回は
LINE Notifyにメッセージを送る
ところを紹介します❗️
それでは❗️😊