概要
PythonでLINE BOTを作成したので、作成方法についてまとめた。
LINEの提供するMessaging APIを使用して、友だち登録したLINE BOTよりメッセージを受信するまでの流れを紹介する。
LINE BOTの全体イメージ
LINE BOTからメッセージが送られるイメージ。
Pythonからメッセージ内容をMessagin APIに渡すことで、LINEサービス側からLINEアプリへメッセージをとばすことができる。
LINEアプリへは作成したBOTからメッセージが送られる。
準備
LINE DEVELOPERSにログイン
LINE DEVELOPERSにアクセスして自身のLINEアカウントでログインする。
LINE Developersサイトは開発者向けのポータルサイトです。LINEプラットフォームのさまざまな開発者向けプロ…
プロバイダーの作成
LINE BOTを配信するプロバイダー(提供者)を作成する。
チャネル(機能)の設定
作成したプロバイダは何のチャネル(機能)を提供するのかを指定する。
LINE BOTを作成する場合、Messaging APIを使用する。
作成したチャネルがLINE BOTになり、メッセージが送られるようになる。
チャネルの必要事項を設定する。
LINE BOTを友だち登録
作成したLINE BOTを自身のLINEで友だち登録する。
BOTプログラム作成
Jupyter Labを開き、PythonでLINE BOTのプログラムを作成する。
Jupyter Labの起動
Jupyter Labの導入方法は以下を参照。
概要 Pythonの環境構築を行ったので、その方法についてまとめた。どの言語でもプログラミングをする場合、必要な言語ソフトをインストールしたり専用のエディタを用意する必要がある。 そのため、プログラミングをはじめるために[…]
当記事ではUbuntu側で仮想環境を作成してJupyter Labを起動する。
任意のディレクトリ内で以下のコマンドを実行して仮想環境を有効にする。
ターミナル
python3 -m venv myenv
source myenv/bin/activate
以下のコマンドを実行してJupyter Labを起動する。
ターミナル
jupyter lab
ターミナルに表示されたURLにアクセスしてブラウザ上でJupyter Labを起動する。
メッセージ送信に必要な情報を作成
LINEメッセージをBOTから送信する際に必要な情報をjsonファイルに保持させる。
※直接コーディングしても問題はないが、今回は設定情報を別ファイルで管理する
必要な設定情報は「チャネルアクセストークン」と「ユーザーID」になる。
・ユーザーID:誰に送るのかという情報(今回なら自分)
設定ファイル
jsonにチャネルアクセストークンとユーザーIDを設定する。
settings.json
{
"CH_TOKEN": "XXXXX",
"USER_ID": "XXXXX"
}
チャネルアクセストークン
チャネルアクセストークンは以下から発行して取得する。
ユーザーID
ユーザーIDは以下から取得する。
ライブラリインストール
LINE Messaging APIを使用するために、必要なline-bot-sdkをインストールする。
以下のコマンドをJupyter Labのセルに記述し、Shift + Enter で実行する。
Jupyter Lab
!pip install line-bot-sdk
実行するとLINE Messaging APIの資材がダウンロードされる。
メッセージ送信処理の作成
jsonから必要な設定値を取得して、メッセージを送信する処理を作成する。
設定値の読み込み
jsonからメッセージBOTを作成して送信する際の必要な情報を参照する。
概要 jsonモジュールを使用してデータ変換やファイル読み書きを行う方法についてまとめた。前提としてファイルオブジェクトの操作が必要になる。
Jupyter Lab
import json
with open("settings.json", encoding="utf-8") as f:
res = json.load(f)
# チャネルアクセストークン
CH_TOKEN = res["CH_TOKEN"]
# ユーザーID
USER_ID = res["USER_ID"]
メッセージの送信
チャネルアクセストークン、ユーザーIDを使用して自身のLINEにBOTからメッセージを送る。
以下を実行する度にLINE BOTを通してメッセージ「こんにちは」が送信される。
Jupyter Lab
from linebot import LineBotApi
from linebot.models import TextSendMessage
line_bot_api = LineBotApi(CH_TOKEN)
text_msg = "こんにちは"
messages = TextSendMessage(text=text_msg)
line_bot_api.push_message(USER_ID, messages=messages)
※現在line-bot-sdkのバージョンが上がっており、上記のメッセージ送信処理だと送信はできるが非推奨というメッセージが表示される状態