如何在Laravel中查看Slack Payload Body Content

时间:2017-06-22 05:04:05

标签: laravel laravel-4 slack-api

因此,在使用交互式消息时尝试从Slack获取有效负载时遇到了一些麻烦。我发送一个带按钮的消息。我已经正确设置了一切,Slack正好点击我的返回网址。

问题是我不知道如何检索"有效载荷"从请求? Slack文档说:

"您的操作URL将收到HTTP POST请求,包括有效负载主体参数,其中包含application / x-www-form-urlencoded JSON字符串。"

我想我不知道这意味着什么。我认为这意味着你得到了"有效载荷"的POST变量,但那不是发生了什么。

在Laravel中,我使用以下内容尝试取回一些东西:

$request = Request::all();
$test = Response::json($request);

然后我发送给自己看看,结果如下:

object(Illuminate\Http\JsonResponse)#277 (10) {
  ["jsonOptions":protected]=>
  int(0)
  ["data":protected]=>
  string(2) "[]"
  ["callback":protected]=>
  NULL
  ["encodingOptions":protected]=>
  int(15)
  ["headers"]=>
  object(Symfony\Component\HttpFoundation\ResponseHeaderBag)#332 (5) {
    ["computedCacheControl":protected]=>
    array(1) {
      ["no-cache"]=>
      bool(true)
    }
    ["cookies":protected]=>
    array(0) {
    }
    ["headerNames":protected]=>
    array(3) {
      ["cache-control"]=>
      string(13) "Cache-Control"
      ["date"]=>
      string(4) "Date"
      ["content-type"]=>
      string(12) "Content-Type"
    }
    ["headers":protected]=>
    array(3) {
      ["cache-control"]=>
      array(1) {
        [0]=>
        string(8) "no-cache"
      }
      ["date"]=>
      array(1) {
        [0]=>
        string(29) "Thu, 22 Jun 2017 04:51:13 GMT"
      }
      ["content-type"]=>
      array(1) {
        [0]=>
        string(16) "application/json"
      }
    }
    ["cacheControl":protected]=>
    array(0) {
    }
  }
  ["content":protected]=>
  string(2) "[]"
  ["version":protected]=>
  string(3) "1.0"
  ["statusCode":protected]=>
  int(200)
  ["statusText":protected]=>
  string(2) "OK"
  ["charset":protected]=>
  NULL
}

没有"身体参数"没有"有效载荷"变量。我真的很困惑。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我可以确认Slack正在发送一个POST请求,其中包含一个有效负载参数。我不熟悉Laravel框架,但这是我在普通PHP中接收它的方式:

$payload_json = filter_input(INPUT_POST, 'payload', FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
$payload = json_decode ($payload_json, true);

之后,$payload参数包含一个包含请求内容的数组。

如果我正确理解您的代码(前两行),您试图将整个请求解释为JSON,这将无效。您需要首先提取有效负载,然后将其从JSON解码为PHP对象。

但是,我建议首先确保通过记录您收到的每个请求的内容(例如,通过记录$_POST的内容)确保您在操作网址上收到Slack请求