نحوه ارسال یک event api به دو یا چند URL متفاوت

با سلام و احترام
گاها شاید در سناریو ها نیاز داشته باشیم که مثلا یک event api را به دو سامانه و URL متفاوت بفرستیم
برای اینکار میتوانید از کد PHP زیر استفاده کنید.
و با api version g4 و method POST درخواست را به ادرسی که فایل php در آن قرار داده اید ارسال کنید.

کد فایل php
نکته به جای URL 1 و URL 2 میتوانید URL مورد نظر مقصد را قرار دهید.

<?php
const WEBHOOK_URLS = [
    'URL 1',
    'URL 2'
];

$update = file_get_contents('php://input');

error_log('Webhook called at: ' . date('Y-m-d H:i:s') . ' with data: ' . $update);

// Initialize cURL multi handle
$mh = curl_multi_init();
$curl_handles = [];

foreach (WEBHOOK_URLS as $index => $url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $update);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    curl_multi_add_handle($mh, $ch);
    $curl_handles[$index] = $ch;
}

// Execute all requests simultaneously
$running = null;
do {
    curl_multi_exec($mh, $running);
    curl_multi_select($mh);
} while ($running > 0);

// Process responses and clean up
$errors = [];
foreach ($curl_handles as $index => $ch) {
    $response = curl_multi_getcontent($ch);
    if (curl_errno($ch)) {
        $errors[] = 'cURL error to ' . WEBHOOK_URLS[$index] . ': ' . curl_error($ch);
    } else {
        error_log('Response from ' . WEBHOOK_URLS[$index] . ': ' . $response);
    }
    curl_multi_remove_handle($mh, $ch);
    curl_close($ch);
}
curl_multi_close($mh);

if (!empty($errors)) {
    error_log(implode('; ', $errors));
    http_response_code(500);
    exit('Failed to forward to one or more webhooks');
}

http_response_code(200);
echo 'OK';
?>```
1 پسندیده

شما که زحمت کشیدید
اگر n8n میدادید عالی بود

روش بالا به دلیل اینکه شاید در پروژه، محدودیت استفاده از سرویس های دیگر وجود داشته باشد این مورد نوشته شد تا وابستگی های حداقلی به سرور های پراکسی( میدلور) یا سرویس دیگری باشد.

این مورد با N8N هم انجام شده که تمپلت آن به صورت زیر است.

تنظیمات مربوط به المان webhook:

تنظیمات مربوط به المان Respond to Webhook

در نهایت آخرین المان ها HTTP Request می باشد که مقادیر آن بسته به سرور مقصد میتوانید مقادیر آن تغییر کند. و در این تصویر ، نسبت به سرور نمونه انجام شده است.

1 پسندیده

ممنونم از شما
خیلی عالی بود