-
Notifications
You must be signed in to change notification settings - Fork 413
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
7.5.5 슬랙으로 메시지 보내기 에러 질문드립니다. #46
Comments
제일 마지막 에러 메시지를 보시면 유효하지 않은 권한이라고 나옵니다.
|
혹시 몰라 slackclient 2.9.3 pip을 설치하고 실행해봤는데 소용 없었습니다. 그래서 2.2.1 64비트 파이썬 설치 과정부터 잘못된 게 아닌가 하고 점검해봤지만 이상은 없어보입니다..도대체 무엇이 문제일까요?.. 명령프롬프트와 VSCode 둘 다 실행한 결과입니다. |
혹시 처음에는 메시지가 잘 보내졌는데 어느 순간부터 메시지가 안보내지는 상황이라면 만일 slaker API를 이용해서 메시지를 한 번도 보낸적이 없고 |
도움이 되시기를 바라며 제 경험을 공유하겠습니다. 저는 여러 검색을 통해 아래와 같은 방식으로 진행했습니다.
|
처음부터 일어난 에러이고, 다른 PC에서 사용했음에도 같은 오류가 생겼습니다.. 계정 자체 오류인 것 같아 일단 기다려보기로 결정했습니다. 시간 내주셔서 정말 감사드립니다. |
안녕하세요, 밤낮을 찾아보던 도중 kulkuroo 님의 답을 보고 희망을 가지고 실행을 해보았습니다. 우선 1. 의 Tester 탭에서 Argument를 필요한 것만 설정한다는 뜻이 무엇을 의미하는지 모르겠습니다. "Tester"탭을 보면 여러 "Argument"들과 Value 값을 입력하는 칸이 나오는데, 어떻게 설정한다는 것인지 모르겠습니다. 그리고 "Or, provide your own token:" 텍스트 박스에 입력하고, 채널에 채널명을, 텍스트에 메시지를 입력하고 "Test Method" 를 누른 결과 { 이 상태에서 attached.txt 를 실행해봤는데 ERROR:root:Error posting message: The request to the Slack API failed. 이러한 에러가 나왔습니다. 이정도 되면 제가 정말 가벼운 설정 과정을 놓치진 않았나 의심이 되네요. 에러 생각에 잠도 잘 못자고, 종일 붙잡고만 있었는데 도움주셔서 정말 감사합니다. 희망이 생겨서 정말 기뻐요... |
안녕하세요 hamsterdmin님. 저도 며칠간 머리를 쥐어뜯었던 경험을 공유한 사람으로서 어려운 심정 일단 테스트 페이지에서 Argument설정하시는 부분은 맞게 진행하신 듯 합니다. Input 창에 value넣어 주시면 됩니다. 제가 첨부 드린 코드의 에러 메시지는 채널에 봇이 초대가 안되었을 때 나오는 메시지로 보입니다만, 님께서 메시지 꼭 성공하시길 바랍니다. |
봇 초대하는 방법을 몰라 조금 헤메다가 명령어를 통해 초대하니 문제가 해결되었습니다! 여전히 invalid_auth 에러 원인을 밝혀내진 못했지만, kulkuroo님 덕분에 webhook url 방식으로 메시지 보내기를 성공했습니다. 이 방식을 통해 자동매매 시스템에 적용시켜보도록 해보겠습니다. 귀한 시간 내주셔서 정말 감사합니다! |
저런, 제가 답신 드릴 때 봇 초대하는 것도 적어드릴걸 그랬군요. ^^; 해결되셨다니 다행입니다. webhook도 되셨다니 코드로도 모두 성공 맛보시길 바랍니다. |
!,수고하십니다. |
저도 다따라해봤는데 안되는데 ㅜㅜ 봇초대가 앱을 채널에 초대하는건가요?? |
올려주신 소스로 진행을 하였고 메시지 전송은 정상적으로 진행되었으나, 터미널에 아래와 같이 메시지가 뜨네요. |
p{margin-top:0;margin-bottom:0}
안녕하세요 f1772man님.
맨 아래가 질문인 것으로 알고 제가 아는 한 답변 적어보겠습니다.
질문 주신 메시지는 일단 에러보다는 warning이고,
내용은 항상 올바른 클라이언트에 렌더링 되는 것은 아니므로
fallback이라는 파라미터를 설정해라... 라고 보입니다.
UserWarning: The fallback argument is missing in the request payload for a chat.postMessage call - It's a best practice to always provide a fallback argument when posting a message. The fallback argument is used in p...
슬랙 들어가 보면 https://api.slack.com/reference/messaging/attachments
파라미터들 설명이 있습니다. (Legacy Field 항목)
author_name, image_url과 동일 레벨에 fallback파라미터가 있는 것으로 보아,
소스의 attach_dict에 'fallback' 항목 추가하신 후 보내시려는 내용을 설정하시면 어떨까 싶습니다. (plain text only)
제가 지금 코드를 실행할 수 있는 환경이 아니라 직접 해보시고 성공하시면 좋겠습니다.
감사합니다.
--------- 원본 메일 ---------
보낸사람: f1772man ***@***.***>
받는사람: INVESTAR/StockAnalysisInPython ***@***.***>
참조: kulkuroo ***@***.***>, Comment ***@***.***>
날짜: 22.02.22 10:52 GMT +0900
제목: Re: [INVESTAR/StockAnalysisInPython] 7.5.5 슬랙으로 메시지 보내기 에러 질문드립니다. (#46)
도움이 되시기를 바라며 제 경험을 공유하겠습니다.
저도 동일한 오류가 발생하여 애를 먹었습니다.
저는 여러 검색을 통해 아래와 같은 방식으로 진행했습니다.
슬랙 자체의 설정 오류 확인
슬랙 로그인 하신 상태에서 https://api.slack.com/methods/chat.postMessage/test 페이지 접속
"Tester" 탭에서 "Argument" 필요한 것만 설정
Bot User OAuth Access Token을 "token" argument의 "Or, provide your own token:" 텍스트 박스에 입력
"channel" argument에 보내시고자 하는 채널명을 입력
"text" argument에 메시지 입력
"Test Method" 버튼 누름
맨 아래 결과창 및 슬랙 채널에 메시지 도착 여부 확인
위 과정에 성공한 상태인데도 slacker 라이브러리로 안될 경우
webhook url 방식으로 사용 (curl/postman 등 웹 클라이언트로 보내는 방식은 잘 작동했습니다. 봇 설정 시 webhook url 설정필요)
slack_sdk 사용 (아래는 김황후 저자님 코드를 라이브러리 바꿔서 작성해 보았습니다)
저는 첨부된 코드로 책에 표시된 대로 메시지가 가는 것을 확인하였고, 질문자분에게도 도움이 되셨으면 좋겠습니다.
attached.txt
도움이 되시기를 바라며 제 경험을 공유하겠습니다.
저도 동일한 오류가 발생하여 애를 먹었습니다.
저는 여러 검색을 통해 아래와 같은 방식으로 진행했습니다.
슬랙 자체의 설정 오류 확인
슬랙 로그인 하신 상태에서 https://api.slack.com/methods/chat.postMessage/test 페이지 접속
"Tester" 탭에서 "Argument" 필요한 것만 설정
Bot User OAuth Access Token을 "token" argument의 "Or, provide your own token:" 텍스트 박스에 입력
"channel" argument에 보내시고자 하는 채널명을 입력
"text" argument에 메시지 입력
"Test Method" 버튼 누름
맨 아래 결과창 및 슬랙 채널에 메시지 도착 여부 확인
위 과정에 성공한 상태인데도 slacker 라이브러리로 안될 경우
webhook url 방식으로 사용 (curl/postman 등 웹 클라이언트로 보내는 방식은 잘 작동했습니다. 봇 설정 시 webhook url 설정필요)
slack_sdk 사용 (아래는 김황후 저자님 코드를 라이브러리 바꿔서 작성해 보았습니다)
저는 첨부된 코드로 책에 표시된 대로 메시지가 가는 것을 확인하였고, 질문자분에게도 도움이 되셨으면 좋겠습니다.
attached.txt
안녕하세요, 밤낮을 찾아보던 도중 kulkuroo 님의 답을 보고 희망을 가지고 실행을 해보았습니다.
우선 1. 의 Tester 탭에서 Argument를 필요한 것만 설정한다는 뜻이 무엇을 의미하는지 모르겠습니다. "Tester"탭을 보면 여러 "Argument"들과 Value 값을 입력하는 칸이 나오는데, 어떻게 설정한다는 것인지 모르겠습니다.
그리고 "Or, provide your own token:" 텍스트 박스에 입력하고, 채널에 채널명을, 텍스트에 메시지를 입력하고 "Test Method" 를 누른 결과
{ "ok": false, "error": "invalid_auth" } 이렇게 나왔는데 어떤 의미인지 잘 모르겠네요. 성공한 과정인지 실패한 과정인지도 잘 모르겠습니다.
이 상태에서 attached.txt 를 실행해봤는데
ERROR:root:Error posting message: The request to the Slack API failed. The server responded with: {'ok': False, 'error': 'not_in_channel'}
이러한 에러가 나왔습니다. 이정도 되면 제가 정말 가벼운 설정 과정을 놓치진 않았나 의심이 되네요.
에러 생각에 잠도 잘 못자고, 종일 붙잡고만 있었는데 도움주셔서 정말 감사합니다. 희망이 생겨서 정말 기뻐요...
올려주신 소스로 진행을 하였고 메시지 전송은 정상적으로 진행되었으나, 터미널에 아래와 같이 메시지가 뜨네요.
UserWarning: The fallback argument is missing in the request payload for a chat.postMessage call - It's a best practice to always provide a fallback argument when posting a message. The fallback argument is used in places where content cannot be rendered such as: system push notifications, assistive technology such as screen readers, etc.
warnings.warn(message, UserWarning)
—Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.
You are receiving this because you commented.Message ID: ***@***.***>
|
Slack의 정책 업데이트로 인해 2021.2.24 이후로 새로 생성된 bot은 slacker 라이브러리를 이용 할 수 없습니다. slacker.Error: invalid_auth 라는 에러가 발생합니다. slack.chat.post_message 을 대신 할 함수를 만들어서 대체 하여 사용 하시면 문제를 해결 하실 수 있습니다. import requests
def post_message(token, channel, answer):
response = requests.post("https://slack.com/api/chat.postMessage",
headers={"Authorization": "Bearer "+token},
data={"channel": channel,"text": answer}
)
# slack.chat.post_message(channel, answer) // slack.chat.post_message -> post_message 으로 대체
post_message(token, channel, answer) |
윗분 - yunwoong7 님 - 이 작성하신 글에 추가 comment 합니다. https://developerdk.tistory.com/96 > ㅇㅇ님의 댓글 참고했습니다. |
Slacker 가 아닌 slack_sdk를 사용하여 수정하니 잘 되네요 import logging
token = "xoxb-"
channel_id = "#general" markdown_text = ''' attach_dict = { attach_list = [attach_dict] try: except SlackApiError as e: |
위에 yunwoong7님 방법으로 attachments 첨부하는 파일 코드도 혹시 필요하신 분이 계실까 싶어 첨부합니다!
|
도움이 되실지 모르겠지만, incoming webhook방식을 사용하니 정상적으로 출력되는것 같습니다. 제가 참조한 웹주소를 남기는게 조심스러워 메일주시면 참조한 웹주소 보내드리겠습니다. |
일단 제가 webhook방식으로 url 따서 해본 결과 교재처럼 정확한 프레임이 출력되진 않습니다. 그래도 혹시 도움이 될 거 같아 제가 작성한 코드랑 결과첨부하겠습니다! import requests def send_message(markdown_message, attachments): markdown_text = ''' send_message(markdown_text, jsonstring) 실행결과: (4kB) |
안녕하세요 책보고 따라하는 코딩 초보입니다. 슬랙 메시지 보내기 부분에서, 분명 똑같이 따라한 것 같은데 이러한 에러가 생겼습니다. ch07_07_Slack_SendMessage.py를 실행했을 때도 같은 에러가 생깁니다. 원인이 무엇인지 알려주시면 감사하겠습니다. 파이썬 버전은 3.8.1입니다.
The text was updated successfully, but these errors were encountered: