Trouble shooting

Slack api bot token(?), app channel add 오류

ParkParksu 2023. 5. 8. 18:29

 

import pandas as pd
import requests
from datetime import datetime, timedelta
df = pd.DataFrame(df_day)
df.index = range(1, len(df) + 1)

def send_slack_dataframe_with_grid(api_token, channel, dataframe, message=None):
    url = "https://slack.com/api/chat.postMessage"
    headers = {
        "Authorization": f"Bearer {api_token}",
        "Content-Type": "application/json"
    }
    
    code_block = f"```\n{dataframe}\n```"
    
    if message:
        payload = {
            "channel": channel,
            "text": f"{message}\n{code_block}"
        }
    else:
        payload = {
            "channel": channel,
            "text": code_block
        }

    response = requests.post(url, headers=headers, json=payload)
    print(response.json())

df = pd.DataFrame(df_day)

yesterday = datetime.now() - timedelta(days=1)
yesterday_str = yesterday.strftime('%Y-%m-%d')

api_token = "토큰값"
channel = "#채널명"
message = yesterday_str
send_slack_dataframe_with_grid(api_token, channel, df, message=message)

문제 : 

새로운 slack bot 을 채널에 install 해도 제대로 값이 안보내짐

 

결과값:

{'ok': False, 'error': 'not_in_channel', 'warning': 'missing_charset', 'response_metadata': {'warnings': ['missing_charset']}}

 

해결방법 상세:

https://api.slack.com/apps/A053WAXBF1R/oauth?success=1 

 

Slack bot 권한 설정 방법

Slack 앱 생성:
1.1. Slack API 사이트로 이동합니다.
1.2. "Start Building" 또는 "Create an App"을 클릭하여 새로운 앱을 생성합니다.
1.3. 앱 이름을 입력하고 워크스페이스를 선택한 후 "Create App"을 클릭합니다.

앱에 권한 추가:
2.1. 생성된 앱의 설정 페이지에서 왼쪽 메뉴에서 "OAuth & Permissions"를 선택합니다.
2.2. "Scopes" 섹션의 "Bot Token Scopes"에서 "Add an OAuth Scope"를 클릭합니다.
2.3. "chat:write" 권한을 추가하여 봇이 메시지를 보낼 수 있게 합니다.

앱 설치 및 API 토큰 가져오기:
3.1. "OAuth & Permissions" 페이지 상단에 있는 "Install App"을 클릭합니다.
3.2. 설치를 완료하면 "Bot User OAuth Token"이 생성됩니다. 이 토큰을 사용하여 API를 호출할 수 있습니다.

 

위 단계를 거치면 최소한의 준비가 끝나는데,

여러번 재설치 해도, 계속 같은 오류가 발생하였다.

 

 

Slack api 설정 페이지에서 아무리 해도 안되었다.

채널 페이지에서 직접 사용자를 추가 시켜야한다.

 

( 채널에 이 앱 추가...) 선택시

이런 창으로 채널에 직접 추가시켜야함.

 

저렇게 추가된 뒤에는 잘 전송됨.

728x90