feat(notifications): add mattermost notifications (#7963)
This commit is contained in:
parent
fbacf7076e
commit
51301fd12e
1 changed files with 50 additions and 0 deletions
|
|
@ -22,6 +22,36 @@ public function __construct(
|
|||
}
|
||||
|
||||
public function handle(): void
|
||||
{
|
||||
if ($this->isSlackWebhook()) {
|
||||
$this->sendToSlack();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* This works with Mattermost and as a fallback also with Slack, the notifications just look slightly different and advanced formatting for slack is not supported with Mattermost.
|
||||
*
|
||||
* @see https://github.com/coollabsio/coolify/pull/6139#issuecomment-3756777708
|
||||
*/
|
||||
$this->sendToMattermost();
|
||||
}
|
||||
|
||||
private function isSlackWebhook(): bool
|
||||
{
|
||||
$parsedUrl = parse_url($this->webhookUrl);
|
||||
|
||||
if ($parsedUrl === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$scheme = $parsedUrl['scheme'] ?? '';
|
||||
$host = $parsedUrl['host'] ?? '';
|
||||
|
||||
return $scheme === 'https' && $host === 'hooks.slack.com';
|
||||
}
|
||||
|
||||
private function sendToSlack(): void
|
||||
{
|
||||
Http::post($this->webhookUrl, [
|
||||
'text' => $this->message->title,
|
||||
|
|
@ -57,4 +87,24 @@ public function handle(): void
|
|||
],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo v5 refactor: Extract this into a separate SendMessageToMattermostJob.php triggered via the "mattermost" notification channel type.
|
||||
*/
|
||||
private function sendToMattermost(): void
|
||||
{
|
||||
$username = config('app.name');
|
||||
|
||||
Http::post($this->webhookUrl, [
|
||||
'username' => $username,
|
||||
'attachments' => [
|
||||
[
|
||||
'title' => $this->message->title,
|
||||
'color' => $this->message->color,
|
||||
'text' => $this->message->description,
|
||||
'footer' => $username,
|
||||
],
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue