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 関連を追加して
メソッドを変更すればできるはず