slack-webhook
Send a message to a slack webhook. The message must be in the context and it's sent to the URL found in the webhook configuration value.
note
You can use the block builder to set blocks into the context
Key
log
Configuration Keys:
message
- The message to loglevel
- the log level to use
Level Options
See LogLevel
for the PSR implementation
- emergency
- alert
- critical
- error
- warning
- notice
- info
- debug
Results
ok
- The message has been logged
Process Method
public function process(ContextInterface $context): ResultInterface
{
$contextPath = $this->getRequiredConfigurationValue(self::CONTEXT_PATH, self::DEFAULT_CONTEXT_PATH);
$contextMessagePath = $this->getRequiredConfigurationValue(self::CONTEXT_MESSAGE_PATH, self::DEFAULT_CONTEXT_MESSAGE_PATH);
$url = $this->getRequiredConfigurationValue(self::WEBHOOK_URL);
$message = $this->getRequiredStringConfigurationValue($contextMessagePath);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $message);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: ' . self::CONTENT_TYPE]);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($ch);
$responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($response === false) {
throw new ProcessException(sprintf(
'Slack Webhook error connecting to "%s". Error: %s',
$url,
curl_error($ch)
));
}
$this->setValueInContext($contextPath, $response, $context);
curl_close($ch);
return $this->result(
ResultInterface::OK,
'Slack Webhook call to "%s" which returned code "%u" with %u bytes.',
[$url, $responseCode, strlen($response)]
);
}