PHP code example of robo-meister / context-engine-api

1. Go to this page and download the library: Download robo-meister/context-engine-api library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

robo-meister / context-engine-api example snippets


use ContextEngine\ContextEngineClient;

$ce = new ContextEngineClient(
    'https://ce.example.com',
    apiKey: getenv('CONTEXT_ENGINE_API_KEY') ?: null,
    timeout: 8
);

// Application code can depend on ScopedContextClientInterface.
$scopes = [
    ['scopeType' => 'session', 'scopeId' => 'session-123'],
    ['scopeType' => 'organisation', 'scopeId' => 'org-123'],
];

$ce->setDefaultContext('organisation', 'org-123', ['locale' => 'pl']);
$ce->setActiveContext('session', 'session-123', [
    'document' => ['context_id' => 'doc-123', 'display_name' => 'Invoice'],
    'reviewed' => false,
], kind: 'STATE', ttl: 300, updatedBy: 'user-123');

$result = $ce->resolve(['document', 'reviewed', 'locale'], $scopes);
$document = $result['values']['document'] ?? null;
$source = $result['provenance']['document'] ?? null;
$missing = $result['missingKeys'];

$record = $ce->getScopedContext('session', 'session-123', ['document'], 'active', 'STATE');
$metadata = $record['metadata']['document'] ?? null;
$ce->unsetContext('session', 'session-123', ['document']);

$ce = new ContextEngineClient(
    'https://ce.example.com',
    bearerToken: $serviceToken
);

use ContextEngine\ContextEngineException;

try {
    $result = $ce->resolve(['document'], $scopes);
} catch (ContextEngineException $e) {
    // Classify with errorCode and statusCode, e.g. 401/403, 429 or 503.
    // responseHeaders can 

use ContextEngine\ContextEngineRedisClient;

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$bridge = new ContextEngineRedisClient($redis);
$reply = $bridge->sendRequest([
    'method' => 'POST',
    'path' => '/resolve',
    'body' => ['keys' => ['document'], 'scopeRefs' => $scopes],
], waitForResponse: true);
if (($reply['status'] ?? null) !== 200) {
    throw new RuntimeException('CE bridge request failed');
}
$result = json_decode($reply['body'], true, 512, JSON_THROW_ON_ERROR);