- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我现在正在为我的 channel 创建一个非常小的斜杠命令。我使用 HTTPS 200 将命令发送到 PHP 脚本,对其进行操作并将其作为 JSON 有效负载发回,基本上是这样的:
<?php
header('Content-Type: application/json');
$text = $_POST['text'];
if ($text === "keyword") $answer = "Hello World";
else $answer = "Nothing in here";
$response = array(
'response_type' => 'in_channel',
'text' => $answer,
);
echo json_encode($response);
现在我不想像标题中提到的那样在 channel 中发布初始斜杠推荐,但 channel 中的每个人都应该只看到服务器的答案。我找不到合适的文章,所以我问自己:这可能吗?
有人有想法吗?
编辑:我不希望 slack 也将我的命令作为消息发布。这样只有第二条消息在 channel 中发布: see a screenshot
更新:我现在已经实现了 Erik Kalkoken 的建议,但是我没有从 curl 函数中得到信号。我还成功地检查了我的网络服务器是否支持 curl 功能。我的代码现在看起来像这样(代码已减少到必要的部分):
<?php
header('Content-Type: application/json');
$response = array(
'response_type' => 'in_channel',
'text' => "> \\M2\Kunden\_Tutorial"
);
echo json_encode(array('text' => 'One moment...'));
$ch = curl_init($_POST['response_url']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $response);
$exec = curl_exec($ch);
curl_close($ch);
工作解决方案:再次考虑了 Erik Kalkoken 的建议后,还是不行。这并不意味着他说错了什么。相反,我忘记了什么。我发现我的 $response 数组需要编码为 json 字符串。您可以在下面看到一个工作版本。感谢 Erik Kalkoken!
<?php
$response = array(
'response_type' => 'in_channel',
'text' => '> \\M2\Kunden\_Tutorial'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_POST['response_url']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($response));
curl_setopt($ch, CURLOPT_POST, 1);
$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
curl_close ($ch);
最佳答案
当您使用 response_type
设置为 in_channel
时,斜线命令的标准行为会响应您的斜线命令。这通常是有道理的,因此该 channel 中的人们可以在看到结果之前看到斜线命令有问题。
没有直接的方法可以关闭此回显功能,但有一个简单的解决方法。
不要直接回复 Slack 请求,而是将您的响应作为新请求发送到 response_url
,这是您在初始请求中从 Slack 获得的。然后你只会在 channel 中得到你的回应,斜杠命令本身不会被回显。
顺便说一句。 documentation 中也解释了此行为在“发送延迟响应”部分:
As with immediate response messages, you can include the response_type field. However, when you use a value of in_channel with this delayed method, the original text that invoked the command is not included.
我建议使用 curl将请求发送到 Slack。
在使用 curl 调用更新问题后进行编辑
您仍在返回对 Slack 请求的直接响应,这导致 Slack 回显用户命令。除了 200 OK(您的 PHP 脚本会自动执行)之外,您不得返回任何内容。所以请删除这一行:
echo json_encode(array('text' => 'One moment...'));
我还建议通过添加以下行在 curl 调用中包含正确的内容 header :
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
开头的 header()
php 命令不影响 curl 调用,也可以顺便删除。
关于php - 避免对 in_channel 响应回显斜杠命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52151188/
"); ..... 回显 (""); ?> 是什么意思?
问题是标签 我看过我正在编写的一个脚本,并使用了它: echo (""); ........ echo (""); 它到底做了什么? 它是 Html 标签还是 PHP? 我在 Google 上进行了
我正在创建一个结帐系统。我分为三个部分: 送货信息 付款信息 订单确认 我正在尝试找出一种方法,当客户输入他们的送货信息时,该数据可以回显到我的订单确认部分,这样他们就可以确认这是他们想要将其运送到的
我正在 MYSQL 表上运行 SELECT 代码 我有一个 MYSQL 表: CREATE TABLE mytable ( wf_id int(11) UNSIGNED NOT NULL, sessi
我想要做的是回显页面顶部的内容,同时捕捉页面底部的内容。 这是我的脚本: Westpop Wachtwoord moet minstens 8 tekens lang
我在将选择列表放在 HTML 中时遇到了一些困难,其中的选项或值是从数据库中的表中检索的。我得到以下结果: 如您所见,这不是我的本意,我宁愿将所有选项都放在 1 个选择列表中,并且可以单击多个选项。
我的代码有问题。我有这段代码: Title Welcome loggedin:
我需要使用 PHP 仅回显 .txt 文件中的选定行。txt 文件内容如下所示: 1 111 111 111 111 111 111 111 111 111 111 2 196 182 227 190
我需要使用 PHP 仅回显 .txt 文件中的选定行。txt 文件内容如下所示: 1 111 111 111 111 111 111 111 111 111 111 2 196 182 227 190
我想从 PHP 回显一些 HTML,其中包含一个链接,上面有文本“ ' '; 最佳答案 如果您想显示文字小于号,请根据 HTML 规范将其编码为 <。 您可能还想查看另一个相关实体:«。这会产生一个
如果我从名为 categories 的 mysql 表中调用链接列表,我想我使用的选择语句如下: $query = "SELECT cat_name, cat_description FROM c
所以,伙计们,我的问题是我正在从一个 mysql 列创建一个数组,但是,当我回显数组项时,它什么也没返回,我有一段时间没有看到一个可能的错误,希望能得到一些帮助。这是我的代码:(我知道 mysql 到
在下面的代码中,我在 php 文件中回显了 $strXML,它显示了整个 $strXML,但我只想在 javascript 中显示“名称”元素值。谁能帮帮我? PHP: $strXML = ''."\
我有一节课用这段代码 public boolean busybox() throws IOException { try { Process p =Ru
我有一个 SQL 查询,出于安全目的,我最近将其转换为准备好的语句。我有一个查询返回许多行,每行由许多列组成。我的问题是如何使用 while 循环回显结果。到目前为止我的例子: $stmt = $co
我尝试这样的事情: function userrank($userid){ $sql = mysql_query("SELECT * FROM users ORDER BY atacs DES
我正在尝试进行选择查询并将此信息输出到 html 标签中,但是它不断将 php 代码转换为: 我做错了什么?为什么它不返回错误而不是将其转换为上面的错误? 代码 $con = mysqli_conn
抱歉含糊其辞,但我有一个 PHP 脚本,它从数据库中提取数据并显示它,但是它不是输出数据库的内容,而是输出“数组”的次数。 (无法再次工作,脚本已上传 here ),脚本的输出也是 here .)谢谢
我有一个工作代码并将其移动到一个新服务器,从 php5 到 php7。谷歌搜索一周没有帮助我,所以我问你们。 我在 sql 数据库中有一些带有欧元符号的信息: 99.00该信息存储为 utf16-ge
这是我的代码: 0){ $info = mysql_fetch_assoc($result); while($row = mysql_fetch_assoc($result)){
我在查找有关此主题的信息时遇到了一些真正的困难,如果您有任何帮助,我将非常感激。简而言之,我有一个表单,用户可以从下拉列表中选择一个类别,输入一些内容,然后点击提交,然后转到 SQL。下拉列表中的每个
我是一名优秀的程序员,十分优秀!