2016-11-03 15 views
3

添付ファイルをそのAPI経由でスラックメッセージに追加しようとしています。私は彼らが推奨するpythonラッパーを使用しています。私は基本的なメッセージを送受信できますが、2つのボタンの形で添付ファイルを追加しようとすると失敗します。私は余裕がないアプリを作って、彼らが彼らのAPIで述べているようにボットをリンクさせました。私はAPIを慎重に見直して、何が起こっているのか理解できません。Slackbotへの添付ファイルの追加

def process_message(message, channel): 
    intro_msg = json.loads('{ 
         "text": "What would you like to do?", 
         "attachments": [ 
         { 
          "text": "Choose an action", 
          "fallback": "You are unable to choose an option", 
          "callback_id": "lunch_intro", 
          "color": "#3AA3E3", 
          "attachment_type": "default", 
          "actions": [ 
          { 
           "name": "enroll", 
           "text": "Enroll", 
           "type": "button", 
           "value": "enroll" 
          }, 
          { 
           "name": "leave", 
           "text": "Leave", 
           "type": "button", 
           "value": "leave" 
          } 
          ] 
         } 
         ] 
        }') 
    r = sc.api_call("chat.postMessage", channel=channel, attachments=intro_msg) 

応答は、私は基本的な簡単な例の作品を推測するだけ{u'ok': False, u'error': u'no_text'}

+0

'string'から' dict'オブジェクトとして 'intro_msg'を作成するのではなく、' dict'オブジェクトを直接渡すときに何を見ることができますか? –

答えて

1

です。

例:

from slackclient import SlackClient 

slack_token = os.environ["SLACK_API_TOKEN"] 
sc = SlackClient(slack_token) 

sc.api_call(
    "chat.postMessage", 
    channel="#python", 
    text="Hello from Python! :tada:" 
) 

https://api.slack.com/methods/chat.postMessagehttps://api.slack.com/docs/message-buttons#readying_your_application_for_message_buttonsによれば、添付ファイルが配列でなければなりません。どのように配列としてそれを送っについて:

json.loads('[{"text":"What would you like to do?","attachments":[{"text":"Choose an action","fallback":"You are unable to choose an option","callback_id":"lunch_intro","color":"#3AA3E3","attachment_type":"default","actions":[{"name":"enroll","text":"Enroll","type":"button","value":"enroll"},{"name":"leave","text":"Leave","type":"button","value":"leave"}]}]}]') 

を一切さらに魔法の関与が、要求モジュールhttps://github.com/slackapi/python-slackclient/blob/ddf9d8f5803040f0397d68439d3217d1e1340d0a/slackclient/_slackrequest.pyがないので、私はそれを配列として送信して試してみると思います。

4

私はそれを理解しました。

pythonラッパーはペイロードを区切ります。

intro_msg = json.dumps([{"text":"Choose an action","fallback":"You are unable to choose an option","callback_id":"lunch_intro","color":"#3AA3E3","attachment_type":"default","actions":[{"name":"enroll","text":"Enroll","type":"button","value":"enroll"},{"name":"leave","text":"Leave","type":"button","value":"leave"}]}]) 

sc.api_call("chat.postMessage", channel=channel, text="What would you like to do?", attachments=intro_msg, as_user=True) 

私のペイロードそれは彼らが彼らのAPIドキュメントでそれをフォーマットする方法であるため、すべての添付ファイルにありました。添付ファイルは、添付ファイルキーの後の配列にする必要があります。

関連する問題