2016-07-07 3 views
1

첨부 파일이 다음 코드에서 작동하지 않으며 어느 것으로도 첨부 된 response_type이 표시되지 않습니다. 나는 또한 파이썬의 슬랙 클라이언트 (Slack Client)를 사용해 보았는데 정확히 똑같은 일이 일어나고있다. 슬래시 명령 또는 메시지 버튼 액션 호출에 대한 응답 메시지를 생성 할 때슬랙 API "첨부 파일"이 표시되지 않음

def send_message(channel_id, text): 
    params = { 
     "token" : token, 
     "username" : "NEW BOT", 
     "channel" : channel_id, 
     "text" : text, 
     "response_type": "ephemeral", 
     "attachments": [{ "text":"This is some text" }] 
    } 

    headers = {'content-type': 'application/json'} 
    slack_api = 'https://slack.com/api/chat.postMessage' 
    requests.get(slack_api, json=params, headers=headers) 
    return 

@app.route('/', methods=['GET', 'POST']) 
def main(): 
    if sc.rtm_connect(): 
     sc.rtm_read() 
     text = request.args.get("text") 
     channel_id = request.args.get("channel_id") 
     send_message(channel_id, text) 
     return Response(), 200 

답변

7

response_type 필드는 설정 될 수있다. 해당 임시 메시지를 표시 할 대상 사용자의 컨텍스트가 없기 때문에 chat.postMessage으로 직접 설정할 수 없습니다.

chat.postMessage에 대한 또 다른 특징은 현재 들어오는 webhook처럼 JSON을 허용하지 않는다는 것입니다. 대신 application/x-www-form-urlencoded 다양한 POST POST 매개 변수를 보내야합니다. 심지어 이상하게 들더라도, attachments 필드는 실제로 JSON 문자열로 보내지 만 URL 인코딩은 매개 변수로 전달됩니다.

또 다른 팁, chat.postMessage 및 기타 쓰기 방법으로 GET 대신 HTTP POST를 사용해야합니다.

+0

감사합니다. Taylor, 그 트릭을했습니다. –

+1

"좀 더 이상 하긴하지만 첨부 파일 필드는 실제로 JSON 문자열로 보내지 만 URL 인코딩은 매개 변수로 인코딩됩니다." 감사! 그것은 알아 내야 할 고통입니다. – Evert

+3

그레이트 포스트! 답 : "첨부 파일"을 {{ "title": "내 제목", "텍스트": "내 텍스트", ...}} "로 대체하십시오. : json.dumps ([제목 ":"내 제목 ","텍스트 ":"내 텍스트 ", ...}]) – SMX

0
attachments='[{"title": "Try these - ","text": " Text ", "mrkdwn_in":["text"]}]' 

첨부 파일에 제목을 추가하십시오. 내 경우 엔 효과가 있었어.

관련 문제