Search code examples
phpjsoncurlslack

How to properly send a JSON CURL to Slack?


I have a CURL code that I use to integrate with GetResponse and I thought ill go ahead and copy/paste it for slack too. For some reason there are no errors at all yet slack is empty of requests (a POST to this URL with Postman works just fine). What am I missing? I couldn't find a solution the whole night.

<?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;
?>

I always get an OK.


Solution

  • Since you din't return anything from function so you are getting nothing inside $slackReporting_res .Do like below:-

    <?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
    ?>
    

    And now Op's got error and solved through this link(mentioned by OP in comment):-

    PHP - SSL certificate error: unable to get local issuer certificate