2016-10-08 5 views
3

入ってくるwebhookとslashコマンドでSlackアプリケーションを作成しました。 OAUTHプロセスは期待通りに機能し、私はアプリを正常にデプロイし、アプリトークンを取得して保存することができます。入力されたwebhookからのメッセージがスラックの対話型ボタンに失敗する

私は、アプリケーションの着信Webhookを介してSlackにメッセージを作成して(インタラクティブなボタンで)送信しました。問題は、ボタンが動作せず、スラックチャンネル内にエラーメッセージを生成することです。

Slack Error Message

私が見つけることができるようスラックドキュメントの多くを読んだ、私はスラックするメッセージを送信中にボットがメッセージにアプリのトークンを含めることが要求されることに注意してください。私はwebhookドキュメントを詳しく読んでいましたが、同様の要件は見つかりませんでした。 webhookガイドには、必要なJSON形式だけが記述されていますが、アプリトークンは何もありません。何か不足していますか?このガイドには、Webhookメッセージにインタラクティブなボタンが含まれていることが明確に記載されていますが、ボタンは機能しません。私は次のように応答を作成しています:

$actions = [ 
     [ 
      "name" => "save", 
      "text" => "Save", 
      "type" => "button", 
      "value" => "save" 
     ] 
    ]; 

    $attachments = [ 
     [ 
      "fallback"  => "fallback message", 
      "title"   => "Attachment 1", 
      "text"   => "foobar attachment", 
      "color"   => "#0066ff", 
      "callback_id" => "btn_action", 
      "actions"  => $actions 
     ] 
    ]; 

    $payload = [ 
     "channel"  => "#test", 
     "response_type" => "ephemeral", 
     "icon_emoji" => ":rocket:", 
     "username"  => "Test User", 
     "attachments" => $attachments 
    ]; 

    $data = 'payload=' . json_encode($payload); 

    $ch = curl_init($webhook); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $result = curl_exec($ch); 
    curl_close($ch); 

解決方法についてのアドバイスが大好きです。 乾杯、 アンドリュー。

答えて

3

私はこの同じ問題を抱えていました。これは、アプリケーションを承認したときに生成されたスラックトークンとは異なるスラックトークンが原因でした。私は、アプリケーションに固有のボットトークンを持っている場合にのみ、そのアプリケーションを識別できることを期待しています。残念ながら、この新しいボットアクセストークンを取得するのは軽微なプロセスでした。私は以下のことを概説します:

  1. https://api.slack.com/docs/slack-buttonの「スラックボタンを追加」 セクションでアプリと「ボット」のチェックボックスを選択します。

  2. 'a'要素で生成されたURLをブラウザに貼り付け、自分で認証します。

  3. アプリケーションにリダイレクトしようとすると、URLに追加されるトークンを収集します。

  4. トークンを使用して、アプリのbot_access_tokenを取得します。私はすでにので、私はちょうどそれが、パイソンで変性した宣誓ベースのログインのための緩みを使用してのpythonアプリはコードは次のようになりslackclientました:。

    SlackClient(「あなたのAPIトークン」)api_call( 「oauth.access 」、 のclient_id = 『アプリのクライアントID』、 client_secret = 『アプリクライアントシークレット』、 コード= 『コード・トークン』)

私はそれだけでサードパーティの統合ので、このようにうまくいくと思いますチームごとにbot_access_tokenを格納し、後で使用します。私の場合、私はちょうどボットのアクセストークンに私のアプリケーションのための環境変数を埋めたいと思っていました。ボットアクセストークンを取得する簡単な方法について知りたいので、見つけたらお知らせください。これがあなたのために働くことを願っています、アンドリュー。

関連する問題