2016-07-07 8 views
1

添付ファイルが次のコードで機能しておらず、response_typeが表示されていない。私はまた、Pythonの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の別の特徴は、現在、着信webhooksのようなJSONを受け入れていないことです。代わりに、application/x-www-form-urlencodedの種類のPOSTパラメータを送信する必要があります。より奇妙でも、attachmentsフィールドはJSONの文字列として実際に送られますが、URLエンコードされてパラメータになります。

もう1つのヒント、chat.postMessageなどの書き込みメソッドを使用する場合は、GETの代わりにHTTP POSTを使用する必要があります。

+0

ありがとうテイラー、それはトリックでした。 –

+1

"奇妙なものでも、その添付ファイルフィールドは実際にはJSONの文字列として送信されますが、URLエンコードされてパラメータになります。"ありがとう!それは見つけ出す痛みです。 – Evert

+3

素晴らしい投稿です!クイック・アンド・ダーティーな答えを探している人は、「添付ファイル」を「{"" title ":" my title "、" text ":" my text "、...}]' :json.dumps([{"title": "私のタイトル"、 "text": "my text"、...}]) ' – SMX

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

添付ファイルにタイトルを追加します。それは私の場合に働いた。

関連する問題