LINE botにメッセージを送信するためのモジュールを作る

linebot の動作確認できたので
過去に通知に line notify を使っていたものを調べて
Linebot に変える

リポジトリは
https://github.com/Snowpooll
にあるので

https://github.com/Snowpooll/store_adversting_lists
gmailで件名を指定し、未読の最新のメールを取得後にURLを抽出、
抽出したURLを元にブラウザを開き画像をダウンロード
ダウンロード画像へcloud vision api を実行し
購入リストにマッチしたものを LINE norifyで買い物リストが送信

https://github.com/Snowpooll/inventory_count
yoov8と学習したモデルで 指定した画像から物体検出をして在庫数が1以下になったときに
LINE norifyで買い物リストが送信
検出時の結果はsqlite3データベースに保存

とりあえずこの2つの機能を変えることにする

以前

LINE botにメッセージを送信するためのモジュールを作る

touch line_bot_sender.py

中身は

# line_bot_sender.py
import requests
import json

class LineBotSender:
    def __init__(self, config_file_path):
        self.config = self._load_config(config_file_path)
        self.channel_access_token = self.config["line_bot_channel_access_token"]
        self.user_id = self.config["line_bot_user_id"]

    def _load_config(self, config_file_path):
        with open(config_file_path, 'r') as file:
            return json.load(file)

    def send_message(self, message):
        url = "https://api.line.me/v2/bot/message/push"
        headers = {
            "Content-Type": "application/json",
            "Authorization": f"Bearer {self.channel_access_token}"
        }
        payload = {
            "to": self.user_id,
            "messages": [
                {
                    "type": "text",
                    "text": message
                }
            ]
        }
        response = requests.post(url, headers=headers, json=payload)
        if response.status_code != 200:
            raise Exception(f"Error sending message to LINE bot: {response.status_code}, {response.text}")

として保存

config.json にLINE botの情報を追加

{
    "line_notify_token": "YOUR_LINE_NOTIFY_TOKEN",
    "ollama_model": "elyza:jp8b",
    "line_bot_channel_access_token": "YOUR_LINE_BOT_CHANNEL_ACCESS_TOKEN",
    "line_bot_user_id": "TARGET_USER_ID"
}

Main.pyでは linenotifyで送信
Main2.pyで lintbot へ送信
Main3.pyで firestoeeへメッセージ保存
Main4.pyで指定のユーザメッセージを指定できるようにしている

今回GASを使うので
使用するのはlinebot のみなので
Main2.pyの機能になる

また

from line_bot_sender import LineBotSender  # LINE bot送信用のモジュールをインポート

となっているので
line_bot_sender.pyを使えばいいのでコピー

設定ファイルとして
Config.jsonを読み込んでいるので
これも使うことにする

まずGAS関連をフォルダにまとめて移動しておく

mkdir gas
mv *.gs gas 

そして linebot 関連をコピー

cp ../linebot/config.json .
 cp ../linebot/line_bot_sender.py .

次にGASへの送信テスト

Channel ID

Channel secret

チャネルアクセストークン

これを設定ファイルに書き込む

なおユーザは指定しないので省いたらバグったので必要

過去ログを調べたら
確認方法は
https://developers.line.biz/ja/docs/messaging-api/getting-user-ids/#get-own-user-id
によると
開発者は自分自身のユーザーIDをLINE Developersコンソールのチャネルの[チャネル基本設定]タブにある[あなたのユーザーID]で確認

開発者が自分自身のユーザーIDを取得するためのAPIはありません
とのこと

これでわかったので

Config.jsonに記述する

これで動作したので
次に
inventoryの仕組みを notify から bot へ変更する

count_inventory.py

line_notifyの部分を書き換えると動作するはず
コードは gpt にあるので
これを試すことにする

config.jsonの項目にbot 関連を追加して
メソッドを変更すればできるはず

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です