با سلام و احترام
گاها شاید در سناریو ها نیاز داشته باشیم که مثلا یک 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';
?>```