2017-06-23 1 views
1

スラックAPIで問題が発生しました。チケットが私たちの発券システムで作成されたときに、(着信Webhook経由で)特定のチャンネルにメッセージを送信するコードが書かれています。このメッセージには、アクションを実行するために使用したいカップルのボタンがあります。スラックインタラクティブメッセージ:ボタンクリックレスポンス

enter image description here

私は(テスト目的のために)ボタンをクリックすると、同じチャンネル内の単純なメッセージを投稿する必要があり、いくつかのPHPコードを指して、私の応答URLを設定しています。

<?php 

//Required for ticketing system API, to be implemented later 
require_once __DIR__ . '/src/autoload.php'; 

//get information from HTTP POST, sent at button click 
$payload = $_POST['payload']; 
$data = json_decode($payload,true); 

$responseURL = $data["response_url"]; 

class Response { 
    public $response_type = ""; 
    public $text = ""; 
    public $replace_original = ""; 
} 

$r = new Response(); 
$r->response_type = "in_channel"; 
$r->text = "Ticket Accepted"; 
$r->replace_original = "false"; 

header('Content-Type: application/json'); 

//Using CURL 
$curl = curl_init(); 
curl_setopt_array($curl, array(
    CURLOPT_URL => $responseURL, 
    CURLOPT_POST => 1, 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_POSTFIELDS => json_encode($r) 
)); 

$resp = curl_exec($curl); 
var_dump($resp); 
curl_close($curl); 

?> 

私は、ボタンのクリックで送信されたHTTP POSTリクエストからの応答URLを取得していますが、代わりに私のメッセージ(「チケット受理」)を送信するのでは、私はボタンをクリックするとすぐに、次のGET:

enter image description here

も注意してください。私は(ボタン付き)私の元のメッセージを見ることができるようにfalseからreplace_originalを設定しようとしたが、そのメッセージはとにかく上記のメッセージに置き換えられます。

テスト中に、別のチャネルの受信Webhooks URLに$responseURLを設定しようとしました。私がいることをやったとき、私はを行う私のそのチャネルにおける単純な「チケット受理」メッセージとボタンのメッセージ交換と同様のメッセージが出ます:ボタンのクリックは、これらを生成している理由は、私はよく分からない

enter image description here

を彼らはすぐに回答を返すが、私はそのチャンネルに何か他のものを投稿することを止めているようだ。何か案は?

答えて

0

メッセージをエコーするだけでボタン要求に返信します。 Webhookに明示的なメッセージを送信する必要はありません。

あなたの応答はJSONでなければなりません。コード例を示します。置き換え

$message = [ 
      "response_type" => "in_channel",    
      "text" => "Ticket accepted" 
]; 

header('Content-Type: application/json'); 
echo json_encode($message); 

スラックでその応答を得る理由は、var_dump($resp);です。 Slackが表示しようとする変数の内容をエコーし​​ます。