お世話になっております。
pythonを使用しLINE-BOt,SlackAPI,Botを連携させ、画像を転送したいと考えております。
環境
・Macbook Air M1
・OS Bigsur
・python 3.8系
・デプロイ heroku (runtime.txtはpython3.8.9)
こちらのサイトを見ながら作業をしております。
参考サイト
参考サイトと同じく、Lineに投稿した画像をSlackに転送するというのが理想ですが、こちらがうまくいきません。
該当箇所ソースコード
python
1 2import os 3 4import requests, json 5import slackweb 6from flask import Flask, request, abort 7from linebot import LineBotApi, WebhookHandler 8from linebot.exceptions import InvalidSignatureError, LineBotApiError 9from linebot.models import MessageEvent, TextMessage, ImageMessage 10 11app = Flask(__name__) 12 13CHANNEL_ACCESS_TOKEN = os.environ["LINE_CHANNEL_ACCESS_TOKEN"] 14CHANNEL_SECRET = os.environ["LINE_CHANNEL_SECRET"] 15WEB_HOOK_LINKS = os.environ["SLACK_WEB_HOOKS_URL"] 16BOT_OAUTH = os.environ["SLACK_BOT_OAUTH"] 17POST_CHANNEL_ID = os.environ["SLACK_POST_CHANNEL_ID"] 18USER_OAUTH = os.environ["SLACK_USER_OAUTH"] 19 20line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN) 21handler = WebhookHandler(CHANNEL_SECRET) 22### 以下省略 ### 23 24# image file 25@handler.add(MessageEvent, message=ImageMessage) 26def handle_image_message(event): 27 """ 28 Image Message 29 """ 30 31 #get talk 32 user_id, user_name, msg_type, room_id = get_event_info(event) 33 34 #send lineImage recieve 35 message_id = event.message.id 36 message_content = line_bot_api.get_message_content(message_id) 37 img = message_content.content #画像データ 38 39 #slack 40 send_msg = "[bot-line] {user_name} 画像を送信.\n".format(user_name=user_name) \ 41 + "---\n" \ 42 + "送信元: {msg_type} ( {room_id} )\n".format(msg_type=msg_type, room_id=room_id) \ 43 + "送信者: {user_name} ( {user_id} )".format(user_name=user_name, user_id=user_id) 44 45 file_name = "send_image_{message_id}".format(message_id=message_id) 46 #send image 47 url = 'https://slack.com/api/files.upload' 48 files = {'file': img} 49 param = { 50 'user': user_id, 51 'token': BOT_OAUTH, 52 'channels': POST_CHANNEL_ID, 53 'filename': file_name, 54 'initial_comment': send_msg, 55 'title': file_name, 56 } 57 print("!!! send slack log !!!", param) 58 res = requests.post(url, params=param, files=files) 59 print("res", res) 60
実行すると、responseには200のステータスが返ってきますが、画像は表示されません。
res.json()でdebugで確認した際、
OK:false invalid_authという表示がでましたので、Slack APIのauth scopeを確認して以下の権限にしております。
Bot Token Scopes
channels:read
chat:write
chat:write.customize
files:write
incoming-webhook
remote_files:write
User Token Scopes
files:write
files:read
chat:write
権限設定、tokenの変更もかけましたが事象が変わらずでした。何かアドバイスをいただければ幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。