'axxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // Replace value with an app/api token/key 'user' => 'uxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // Replace value with user/group key 'message' => $defaultWebhookData['text'], // Any other optional parameters 'url' => $defaultWebhookData['url'] ?? null, 'sound' => 'tugboat', ]; } // Listen for webhook call events in BookStack, so we can manipulate the // data before it's sent to the webhook endpoint. Theme::listen(ThemeEvents::WEBHOOK_CALL_BEFORE, function ( string $event, Webhook $webhook, string|Loggable $detail, User $initiator, int $initTime, ) { // Override the data format if going to a pushover API endpoint if (str_starts_with($webhook->endpoint, 'https://api.pushover.net')) { $defaultData = WebhookFormatter::getDefault($event, $webhook, $detail, $initiator, $initTime); return formatWebhookDataForPushover($defaultData->format()); } // Otherwise return null to leave the webhook data alone return null; });