2016-08-19 13 views
3

私はPythonを使用しており、メッセージをスラックチャンネルに投稿するにはSlacker APIを使用しています。メッセージをうまく投稿しています。Slack API:ボタンをクリックしたときに何かをする

私がしたいことは、と表示されたボタンを作成することです。詳細はとクリックしたときに、アイテムのリストを表示したいと思います。 link以下

は私のJSONとコード

msg = "<!here> Hello guys! " 
moreInfo = ['person', 'person2', 'person3'] 
message = [{ 
"title": "Lunch time has been decided", 
"text": "You will also be joining", 
"actions": [ 
    { 
     "name": "buttonName", 
     "text": "More Info", 
     "type": "button", 
     "value": moreInfo 
    }] 

}] 
slack.chat.post_message('#teamChannel', msg, username='my_username', attachments=message) 

であり、これはときにスラックで次のようになります。 しかし、ボタンがクリックされ、slackbotはここoh no, something weng wrong, Please try that again

は一例で言います詳細情報ボタンをクリックします。 enter image description here

ご迷惑をおかけして申し訳ありません。ありがとう:)

答えて

3

既にボタンエンドポイントのセットアップはありますか?そうでない場合は、そのエラーメッセージが表示されます。

もし私がやったのと同じ間違いをした場合は、間違ったトークンを使用しています。これはSlackのドキュメントからはっきりと分かりません。添付ファイル(対話型ボタンなど)の使用を含め、カスタム統合ボットトークンを使用してメッセージを投稿することができます。しかし、実際にボタンプレスに応答したい場合は、本物のSlackアプリトークンを使ってメッセージを投稿する必要があります(あなたがアプリを野生の中に放す予定がない場合でも)。つまり、oauth2フローのエンドポイントを作成して、スラックチームにあなたのアプリケーションを追加し、そこでボットトークンを取得することを意味します。

  1. スラックアプリをまだ作成していない場合は作成してください。
  2. あなたのエンドポイントは、そのクエリパラメータでcodeを期待してください
  3. あなた認証エンドポイントへのOAuth GETエンドポイント(例えば /slack/authorize
  4. 設定し、あなたのスラックアプリの「リダイレクトURI」を作成します。アプリのclient_id,client_secret、それにcodeとスラックAPI oauth.accessを呼び出して、前述のアプリトークンを交換します。ボットからあなたのインタラクティブメッセージを投稿するには、ボットトークン( "xoxo-"という接頭辞)が必要です。
+1

ありがとうございます、あなたは正しいです、私はエンドポイントを作成しなければなりませんでした。 Slack APIのドキュメントはちょっと整理されていませんが、それを理解するのは難しかったです。 –

+0

私はそれについての質問があります。 api docによると、ユーザーのボタン操作に対する応答は元のメッセージを置き換えます。 – ramin

+0

@ramin元のメッセージを置き換える必要はありませんが、元のメッセージのmessage_ts(タイムスタンプ)をchat.update APIに追加することができます。 – Keller

関連する問題