【问题标题】:HTTP 200 OK response not workingHTTP 200 OK 响应不起作用
【发布时间】:2017-06-13 07:57:32
【问题描述】:

我正在使用 slack,构建了一个 BOT 并订阅了一个事件 message.group 我想通过我的 BOT 构建我的项目,一旦我发布了我预定义的部署命令,它就会开始执行我构建的脚本,但它会在发布一个命令后自己一次又一次地尝试。

slack 文档说:

您的应用应在三秒内使用 HTTP 2xx 响应事件请求。如果没有,我们将认为事件传递尝试失败。失败后,我们将重试 3 次,并以指数方式退出。 我们建议您尽快使用 HTTP 200 OK 响应事件。您可能希望避免在处理事件接收的同一进程中处理和响应事件。

我已经像这样在脚本开头设置了以下代码-

header("HTTP/1.1 200 OK");
echo "HTTP 200 OK";

没用

【问题讨论】:

  • 你在本地工作吗?还是共享 IP?
  • @ShaunakShukla 我已将脚本上传到服务器
  • 您应该将带有 2xx 代码的响应发送到 slack 服务,那部分代码在哪里?
  • @VaheGalstyan 实际上我不明白我应该如何用 2xx 发送响应我只是在我的脚本顶部打印了这段代码header("HTTP/1.1 200 OK"); echo "HTTP 200 OK";

标签: php slack slack-api


【解决方案1】:

添加 Header,并返回一些东西

header('HTTP/1.1 200 Success', true, 200);
return 'Success';

【讨论】:

  • 仍然响应不止一个.. :(
【解决方案2】:

在 PHP 脚本运行过程中使用 HTTP OK 响应调用服务器并非易事。在大多数情况下,Web 服务器会在脚本终止之前阻止任何 OK 发送。有两种通用方法可行:

  1. 管理输出 puffer 并强制 webserver 将 OK 发送回(取决于 webserver 配置)

  2. 异步启动第二个脚本以进一步处理请求并在 3 秒内终止第一个脚本。 (会自动返回一个 HTTP OK)

请参阅this question,了解如何在 PHP 中为 Slack 实现这些方法。

请参阅 this answer 了解适合我的解决方案。

【讨论】:

  • 如果我想关闭重试,如何将X-Slack-No-Retry: 1 设置为标头响应?
猜你喜欢
  • 1970-01-01
  • 2013-05-24
  • 2015-07-26
  • 1970-01-01
  • 1970-01-01
  • 2011-10-27
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多