PythonでLINEにメッセージを送信してみる(実行編)

前回の準備編にひきつづき
今回は実際に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にメッセージを送る
ところを紹介します❗️

それでは❗️😊

0
タイトルとURLをコピーしました