我在php中创建Fb messenger bot并使用curl与fb服务器进行交互。现在发送文件fb要我以这种格式发送请求
` curl \
-F recipient='{"id":"USER_ID"}' \
-F message='{"attachment":{"type":"image", "payload":{}}}' \
-F filedata=@/tmp/shirt.png;type=image/png \
"https://graph.facebook.com/v2.6/me/messages?access_token=PAGE_ACCESS_TOKEN" `
在这里你可以看到有效载荷是一个空数组。 我正在做的是
$res['message'] = [
'attachment' => [
'type' => 'image',
'payload' => [
]
]
]; `
在此之后,我正在使用像这样的curl_setopt
curl_setopt($process, CURLOPT_POST, 1);
curl_setopt($process, CURLOPT_BINARYTRANSFER , true);
curl_setopt($process,CURLOPT_POSTFIELDS, http_build_query($data));
但这不起作用,我正在
{"error":{"message":"(#100) The parameter message[attachment] [payload] is required","type":"OAuthException","code":100,"fbtrace_id":"EaQ66DTssrV"}}
经过一些调试后,我得出的结论是,由于我的附件数组为空,http_build_query
并未将其考虑在内。
请先查看comment here
所以我的问题是如何在php中对一个空数组进行urlencode。
到目前为止我一直在尝试
尝试传递数据而不进行编码 - fb错误收件人为空
尝试将数组直接传递给POSTFIELDS,但获得了{"error":{"message":"(#100) param recipient must be non-empty.","type":"OAuthException","code":100,"fbtrace_id":"BQ00BtZZmPF"}}
如果有更好的方法在PHP中执行此curl命令请告诉我。感谢