webhook.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. define('BX_API', true);
  3. require_once('./inc/header.inc.php');
  4. require_once(BX_DIRECTORY_PATH_INC . "profiles.inc.php");
  5. require_once(BX_DIRECTORY_PATH_INC . "design.inc.php");
  6. bx_import('BxDolLanguages');
  7. header('Content-Type: application/json');
  8. $aHeaders = function_exists('getallheaders') ? getallheaders() : false;
  9. if ($aHeaders) {
  10. $sAuthHeader = isset($aHeaders['Authorization']) ? $aHeaders['Authorization'] : (isset($aHeaders['authorization']) ? $aHeaders['authorization'] : false);
  11. }
  12. else {
  13. $sAuthHeader = isset($_SERVER['HTTP_AUTHORIZATION']) ? $_SERVER['HTTP_AUTHORIZATION'] : false;
  14. }
  15. $sKey = str_replace('Bearer ', '', $sAuthHeader);
  16. $oAi = BxDolAI::getInstance();
  17. $aAgent = $sKey ? $oAi->getAgentByTriggerWebhookKey($sKey) : false;
  18. if (!$aAgent) {
  19. header('HTTP/1.0 403 Forbidden');
  20. BxDolLanguages::getInstance();
  21. echo json_encode(['status' => 403, 'error' => _t("_Access denied")]);
  22. exit;
  23. }
  24. $aParams = $_REQUEST;
  25. $aParams['trigger'] = 'webhook';
  26. if ($aAgent['async']) {
  27. BxDolBackgroundJobs::getInstance()->add(bin2hex(random_bytes(16)), [
  28. 'system', 'call_agent',
  29. ['webhook', $aAgent, $aParams],
  30. 'TemplServices'
  31. ]);
  32. echo json_encode(['result' => 'scheduled']);
  33. }
  34. else {
  35. $mixed = $oAi->callAgent('webhook', $aAgent, $aParams);
  36. echo json_encode($mixed);
  37. }