如何正确发送 JSON CURL 到 Slack?

How to properly send a JSON CURL to Slack?

我有一个 CURL 代码,用于与 GetResponse 集成,我认为我会继续 copy/paste 它也是为了松懈。由于某种原因,根本没有错误,但 slack 没有请求(POST 到这个 URL 与 Postman 工作得很好)。我错过了什么?找了一晚上都没解决。

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

function slackReporting($data)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://hooks.slack.com/services/XXXX/XXXX/XXXXXX');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_exec($ch);
}

$slackReporting_data = array(
    'text' => "`New Lead` `+34 today`.",
    'username' => "Leads",
    'mrkdwn' => true
);

$slackReporting_res = json_decode(slackReporting($slackReporting_data));

$slackReporting_error = "";
if(empty($slackReporting_res->error)){
    echo "OK";
} else {
    $slackReporting_error = $slackReporting_res->error->message;
}
echo $slackReporting_error;
?>

我总是 OK。

因为你没有 return 函数中的任何东西,所以你在 $slackReporting_res 里面什么也得不到。按如下操作:-

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

function slackReporting($data)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://hooks.slack.com/services/XXXX/XXXX/XXXXXX');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $content  = curl_exec($ch);
    if(curl_errno($ch)){
       echo 'Request Error:' . curl_error($ch);exit;
    }
    curl_close($ch);
    return $content;
}
$slackReporting_data = array(
    'text' => "`New Lead` `+34 today`.",
    'username' => "Leads",
    'mrkdwn' => true
);
$slackReporting_res = json_decode(slackReporting($slackReporting_data));

var_dump ($slackReporting_res); //check output and work accordingly
?>

现在 Op 遇到了错误并通过这个 link 解决了(OP 在评论中提到):-

PHP - SSL 证书错误:无法获取本地颁发者证书

这是一个简单的示例,说明如何将 slack 与 curl

一起使用
<?php
define('SLACK_WEBHOOK', 'https://hooks.slack.com/services/xxx/yyy/zzz');
function slack($txt) {
  $msg = array('text' => $txt);
  $c = curl_init(SLACK_WEBHOOK);
  curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($c, CURLOPT_POST, true);
  curl_setopt($c, CURLOPT_POSTFIELDS, array('payload' => json_encode($msg)));
  curl_exec($c);
  curl_close($c);
}
?>

摘自 here

的片段