Enneo allows storing of custom code in the form of “User Defined Functions” and use it in various areas
. These functions can be effectively utilized in the business logic of rule-based AI agents, in webhooks
or Event implementations. Basically, wherever custom code or SDKs are used.
Enneo can store and use user defined functions. The following calls are possible,
for example with a user-defined function named ‘my-udf’:Within Enneo using Python SDK:
In the second step, a custom function fetch-thirdparty-token can be implemented to load the credentials.
This approach is particularly useful when the loading of credentials can be reused in several
other processes.
Copy
Ask AI
<?php// Load Enneo SDKrequire(getenv()['SDK']);// Load storage object for user defined functions$udfStorage = \EnneoSDK\Setting::get('udfStorage');// Load token$clientId = $udfStorage->thirdParty->oauth->clientId;$clientSecret = $udfStorage->thirdParty->oauth->clientSecret;$result = \EnneoSDK\Api::call( method: 'POST', url: $udfStorage->thirdParty->oauth->tokenEndpoint, headers: [ 'Authorization: Basic ' . base64_encode($clientId . ':' . $clientSecret), 'Content-Type: application/x-www-form-urlencoded', 'Accept: application/json' ], params: http_build_query(['grant_type' => $udfStorage->thirdParty->oauth->grantType ?? 'client_credentials', 'scope' => $udfStorage->thirdParty->oauth->scope ?? null]));// The output is in JSON format and can be used in the appropriate code after the callecho json_encode(['accessToken' => $result->access_token, 'accessTokenExpiresAt' => date("Y-m-d H:i:s T", time() + $result->expires_in), "baseUrl" => $udfStorage->thirdParty->baseUrl, "headers" => $udfStorage->thirdParty->headers ?? [], "apiName" => $udfStorage->thirdParty->apiName ?? "Customer API",]);
Subsequently, the function third-party-api-call can be implemented for the actual API call:
Copy
Ask AI
<?php<?php// Load SDKrequire(getenv()['SDK']);// Load token using previously defined "fetch-thirdparty-token" function$credentials = \EnneoSDK\ApiEnneo::executeUdf('fetch-thirdparty-token', []);// Load input parameters$in = \EnneoSDK\Input::load();// Prepare headers for the third-party API request$headers = [ 'Authorization: Bearer '. $credentials->accessToken, 'Accept: application/json'];foreach (($cred->headers ?? []) as $key => $val) { $headers[] = "$key: $val";}// Make the API call and output$res = \EnneoSDK\Api::call( method: $in->method, url: $credentials->baseUrl.'/'.$in->api, headers: $headers, params: $in->params);// Output resultecho json_encode($res);
This structure allows for flexible use and integration of custom code within Enneo,
to map specific business logic or to seamlessly connect external systems.