slogan3

Help Me Configure Statamic Webhooks for Real-Time Integrations

description

Met deze prompt kan de gebruiker webhooks in Statamic effectief configureren, waardoor real-time data-uitwisseling en automatisering met externe systemen mogelijk worden. Dit verbetert de functionaliteit van de website en bespaart tijd door handmatige processen te verminderen. Het onderscheidt zich van bestaande prompts door zich te richten op event-driven integraties in plaats van standaard API-koppelingen of migraties.

prompt

Help me configure webhooks in mijn Statamic website om real-time integraties met externe systemen mogelijk te maken. Mijn huidige Statamic versie is: <voer je huidige Statamic versie in>. Bes ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een stapsgewijze handleiding om webhooks in je Statamic 3.2 website te configureren voor Salesforce CRM en Mailchimp, met HMAC-authenticatie en volledige logging: 1. Webhook Endpoints Aanmaken a. Maak in je Statamic project een nieuwe route en controller voor de webhooks: php artisan make:controller WebhookController b. Voeg routes toe in je routes/web.php: use App\Http\Controllers\WebhookController; Route::post('/webhook/salesforce', [WebhookController::class, 'handleSalesforce']); Route::post('/webhook/mailchimp', [WebhookController::class, 'handleMailchimp']); 2. Webhook Handlers Implementeren a. In WebhookController.php, implementeer functies voor beide systemen: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; class WebhookController extends Controller { private function verifyHmac(Request $request, string $secret) { $signature = $request->header('X-Hub-Signature'); $payload = $request->getContent(); $hash = 'sha256=' . hash_hmac('sha256', $payload, $secret); return hash_equals($hash, $signature); } public function handleSalesforce(Request $request) { $secret = env('WEBHOOK_SECRET_SALESFORCE'); if (!$this->verifyHmac($request, $secret)) { return response('Unauthorized', 401); } // Log de ontvangen event Log::info('Salesforce webhook ontvangen', [ 'payload' => $request->all(), ]); // Verwerk de data hier verder... return response('OK', 200); } public function handleMailchimp(Request $request) { $secret = env('WEBHOOK_SECRET_MAILCHIMP'); if (!$this->verifyHmac($request, $secret)) { return response('Unauthorized', 401); } // Log de ontvangen event Log::info('Mailchimp webhook ontvangen', [ 'payload' => $request->all(), ]); // Verwerk de data hier verder... return response('OK', 200); } } 3. HMAC Secret Instellen a. Voeg je geheime sleutels toe aan je .env bestand: WEBHOOK_SECRET_SALESFORCE=je_salesforce_secret WEBHOOK_SECRET_MAILCHIMP=je_mailchimp_secret 4. Externe Systemen Configureren a. Salesforce en Mailchimp moeten de webhook URL’s gebruiken: https://jouwdomein.nl/webhook/salesforce https://jouwdomein.nl/webhook/mailchimp b. Zorg dat zij de X-Hub-Signature header meesturen met de HMAC SHA256 hash van de payload, gebaseerd op de gedeelde geheime sleutel. 5. Logging en Beveiliging - Alle webhook events worden gelogd via Laravel’s Log facade. - HMAC-verificatie zorgt voor beveiliging. - Overweeg extra beveiligingsmaatregelen indien nodig. 6. Testen - Gebruik tools zoals Postman of curl om POST verzoeken te sturen met de juiste headers en payload. - Controleer de logs in storage/logs/laravel.log. Met deze configuratie kun je real-time integraties met Salesforce en Mailchimp opzetten, beveiligd met HMAC en goed gelogd voor monitoring en troubleshooting.
provider: deepseek
model: deepseek-chat
Beste gebruiker, ik help je graag met het configureren van webhooks in je Statamic 3.2 website voor integratie met Salesforce CRM en Mailchimp. Hier is een complete handleiding: ## 1. Webhook Routes Configureren Voeg toe aan `routes/web.php`: ```php Route::statamic('webhooks/salesforce', 'webhooks.salesforce'); Route::statamic('webhooks/mailchimp', 'webhooks.mailchimp'); ``` ## 2. Webhook Templates Aanmaken **Voor Salesforce (`resources/views/webhooks/salesforce.antlers.html`):** ```html {{ if authenticated }} {{# Verwerk Salesforce data #}} {{ payload | webhook_to_salesforce }} {{# Log event #}} {{ log:create type="webhook_salesforce" message="Salesforce webhook ontvangen" data="{{ payload }}" }} {{ else }} {{ redirect to="/404" }} {{ /if }} ``` **Voor Mailchimp (`resources/views/webhooks/mailchimp.antlers.html`):** ```html {{ if authenticated }} {{# Verwerk Mailchimp data #}} {{ payload | webhook_to_mailchimp }} {{# Log event #}} {{ log:create type="webhook_mailchimp" message="Mailchimp webhook ontvangen" data="{{ payload }}" }} {{ else }} {{ redirect to="/404" }} {{ /if }} ``` ## 3. HMAC Authenticatie Implementeren Maak een service provider voor authenticatie: ```php // app/Providers/WebhookServiceProvider.php <?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Log; use Illuminate\Http\Request; class WebhookServiceProvider extends ServiceProvider { public function boot() { view()->composer('webhooks.*', function ($view) { $request = request(); $secret = config('app.webhook_secret'); $signature = $request->header('X-Hub-Signature-256'); $computedSignature = 'sha256=' . hash_hmac('sha256', $request->getContent(), $secret); $view->with('authenticated', hash_equals($computedSignature, $signature)); }); } } ``` ## 4. Environment Variabelen Configureren Voeg toe aan je `.env` file: ```env WEBHOOK_SECRET=je_geheime_sleutel_hier SALESFORCE_WEBHOOK_URL=je_salesforce_endpoint MAILCHIMP_WEBHOOK_URL=je_mailchimp_endpoint ``` ## 5. Logging Systeem Opzetten Maak een log command: ```php // app/Console/Commands/LogWebhook.php <?php namespace App\Console\Commands; use Illuminate\Console\Command; use Statamic\Facades\Entry; class LogWebhook extends Command { protected $signature = 'webhook:log {type} {message} {data?}'; public function handle() { Entry::make() ->collection('webhook_logs') ->data([ 'type' => $this->argument('type'), 'message' => $this->argument('message'), 'data' => $this->argument('data'), 'timestamp' => now(), ]) ->save(); } } ``` ## 6. Webhook Handlers voor Externe Systemen **Salesforce Integration:** ```php // app/Services/SalesforceWebhookHandler.php <?php namespace App\Services; use Illuminate\Support\Facades\Http; class SalesforceWebhookHandler { public function handle($payload) { $response = Http::withHeaders([ 'Authorization' => 'Bearer ' . config('services.salesforce.token'), 'Content-Type' => 'application/json' ])->post(config('services.salesforce.webhook_url'), $payload); return $response->successful(); } } ``` **Mailchimp Integration:** ```php // app/Services/MailchimpWebhookHandler <?php namespace App\Services; use Illuminate\Support\Facades\Http; class MailchimpWebhookHandler { public function handle($payload) { $response = Http::withBasicAuth( 'anystring', config('services.mailchimp.api_key') )->post(config('services.mailchimp.webhook_url'), $payload); return $response->successful(); } } ``` ## 7. Controleer je Configuratie Zorg dat je deze zaken hebt ingesteld: - SSL certificaat (vereist voor webhooks) - Juiste firewall instellingen - Webhook endpoints geconfigureerd in Salesforce en Mailchimp - HMAC signatures ingesteld bij beide diensten ## 8. Test Procedure Test je webhooks met: ```bash php please webhook:test salesforce php please webhook:test mailchimp ``` Let op: Statamic 3.2 ondersteunt webhooks out-of-the-box, maar voor geavanceerde integraties zoals deze raad ik aan om de officiële documentatie te raadplegen voor eventuele versie-specifieke beperkingen.