首页 文章

如何在Laravel中查看Slack Payload Body Content

提问于
浏览
0

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

问题是我不知道如何从请求中检索“有效负载”? Slack文档说:

“您的Action 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
}

没有“Body Parameter”没有“Payload”变量 . 我真的很困惑 . 任何帮助,将不胜感激 .

1 回答

  • 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 参数包含一个包含请求内容的数组 .

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

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

相关问题