因此,在使用交互式消息时尝试从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
}
没有"身体参数"没有"有效载荷"变量。我真的很困惑。任何帮助将不胜感激。
答案 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请求