슬랙봇 만들기 2 - image 보내기
2023. 4. 21. 23:33ㆍ프로젝트/슬랙 봇 비서 만들기
이전 글에서는 슬랙에 파이썬으로 텍스트를 전송하기를 완료했다!
텍스트 만으로도 나중에 데이터 셋을 만들 때 도움이 되겠지만, 이미지도 보낼 수 있으면 좋겠다 생각이 들었다.
먼저 이미지를 Base64로 인코딩한 후, JSON 객체로 만들어 전송하는 코드를 작성해 보았다.
import requests
import json
import base64
def image_send():
with open("image/image001.png", "rb") as image_file:
# 이미지 파일을 Base64로 인코딩
encoded_string = base64.b64encode(image_file.read()).decode('utf-8')
# JSON 객체 생성
image_data = {
"image001": encoded_string
}
# JSON 객체를 문자열로 변환
json_image_data = json.dumps(image_data)
return json_image_data
def send_slack_message_image():
bot_url = '봇 url 주소'
payload = {
"text" : image_send()
}
# get, post => CRUD
response = requests.post(
bot_url,
data=json.dumps(payload),
headers={"Content-Type":"application/json"}
)
print(response)
send_slack_message_image()
저번에 작성했던 코드에 이미지를 Base64로 인코딩해 그냥 json 형태로 보내면 될 것 같았다.
왜 이런 오류가 발생했는지 -> [더보기 : 나중에 추가]
https://api.slack.com/methods/files.upload
https://dragon1-honey1-wayfarer.tistory.com/entry/Python-슬랙Slack-알림봇-설정하여-매일-증시-알림-받기-5
해결을 위해 참고한 링크
import requests
def send_slack_image(api_token, channel, image_path, message=None):
url = "https://slack.com/api/files.upload"
headers = {
"Authorization": f"Bearer {api_token}"
}
payload = {
"channels": channel,
}
if message:
payload["initial_comment"] = message
with open(image_path, "rb") as image_file:
files = {
"file": image_file
}
response = requests.post(url, headers=headers, params=payload, files=files)
print(response.json())
api_token = "실제 토큰 값" # 실제 토큰으로 변경하세요
channel = "#금융" # 전송할 채널 이름
image_path = "image/image01.png" # 전송할 이미지의 경로
message = "이미지와 함께 보내는 메시지" # 이미지와 함께 보낼 메시지 (if로 선택사항을 주었다.)
send_slack_image(api_token, channel, image_path, message)
위 코드를 실행하면
이미지를 파이썬으로 슬랙에 전송할 수 있게 되었다!
728x90
'프로젝트 > 슬랙 봇 비서 만들기' 카테고리의 다른 글
통합 슬랙api 전송(텍스트, 이미지) (0) | 2023.04.28 |
---|---|
슬랙 봇 만들기 1 - text 보내기 (0) | 2023.04.21 |