我对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,但是不是发送我的消息(“Ticket Accepted”),我单击按钮后立即得到以下内容:
另请注意:我尝试将replace_original
设置为false
,这样我就能看到原始邮件(带按钮),但无论如何,该邮件都会被上面的邮件替换。
在测试期间,我尝试将$responseURL
设置为其他频道的传入Webhooks网址。当我这样做时,我做在该频道中获取我的简单“Ticket Accepted”消息以及替换按钮消息的类似消息:
我不确定为什么按钮点击会立即生成这些响应,但它们似乎阻止我向该频道发布任何其他内容。有什么想法吗?
答案 0 :(得分:0)
您只需回复包含邮件的回复请求即可。无需向webhook发送明确的消息。
你的回答必须是JSON。这是一个代码示例。替换
$message = [
"response_type" => "in_channel",
"text" => "Ticket accepted"
];
header('Content-Type: application/json');
echo json_encode($message);
你对Slack的回应是var_dump($resp);
。它将回显变量的内容,Slack试图显示它。