【发布时间】:2017-06-24 05:04:15
【问题描述】:
我有一个关于我在使用 Slack API 时遇到的问题的问题。我编写了一些代码,当在我们的票务系统中创建票证时,将消息发送到特定通道(通过 Incoming Webhook)。此消息中有几个按钮,我想用它们来执行操作。
我设置了我的响应 URL,指向一些 PHP 代码,当单击按钮时应该在同一频道中发布一条简单的消息(用于测试目的)。
<?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,但我没有发送消息(“票证已接受”),而是在单击按钮后立即收到以下内容:
另请注意:我尝试将 replace_original 设置为 false 以便我可以看到我的原始消息(带有按钮),但该消息无论如何都会被上面的消息替换。
在测试期间,我尝试将 $responseURL 设置为不同频道的传入 Webhooks URL。当我这样做时,我确实在该频道中收到了简单的“Ticket Accepted”消息以及替换按钮消息的类似消息:
我不确定为什么按钮点击会立即生成这些响应,但它们似乎阻止了我向该频道发布任何其他内容。有什么想法吗?
【问题讨论】:
-
replace_original 应该是一个布尔值,试试这个:
$r->replace_original = false;