PHP code example of multek / laravel-customer-engagement

1. Go to this page and download the library: Download multek/laravel-customer-engagement 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/ */

    

multek / laravel-customer-engagement example snippets


// config/customer-engagement.php
'default' => env('ENGAGEMENT_DRIVER', 'onesignal'),

use Multek\CustomerEngagement\Facades\Engagement;
use Multek\CustomerEngagement\DTOs\Notification;

$notification = new Notification(
    title: 'Order Shipped',
    body: 'Your order #456 has been shipped.',
    data: ['order_id' => 456],
);

// Send to a single user
Engagement::sendToUser('user_123', $notification);

// Send to multiple users
Engagement::sendToUsers(['user_1', 'user_2'], $notification);

// Send to a segment
Engagement::sendToSegment('Active Users', $notification);

use Multek\CustomerEngagement\DTOs\Customer;

$customer = new Customer(
    externalId: 'user_123',
    tags: ['plan' => 'pro', 'role' => 'admin'],
);

Engagement::createUser($customer);
Engagement::updateUser($customer);
Engagement::deleteUser('user_123');

use Multek\CustomerEngagement\DTOs\CustomerEvent;

$event = new CustomerEvent(
    externalId: 'user_123',
    name: 'purchase',
    payload: ['amount' => 99.90, 'product' => 'Pro Plan'],
);

Engagement::trackEvent($event);

// Check what the current driver supports
Engagement::syncsUsers();          // bool
Engagement::sendsNotifications();  // bool
Engagement::tracksEvents();        // bool

// Check a specific driver
Engagement::syncsUsers('onesignal'); // bool

// Override the default driver for a single call
Engagement::sendToUser('user_123', $notification, driver: 'onesignal');

use Multek\CustomerEngagement\Contracts\EngagementDriver;
use Multek\CustomerEngagement\Contracts\SendsNotifications;
use Multek\CustomerEngagement\Contracts\SyncsUsers;

class BrazeDriver implements EngagementDriver, SendsNotifications, SyncsUsers
{
    public function getName(): string
    {
        return 'braze';
    }

    // Implement SendsNotifications methods...
    // Implement SyncsUsers methods...
}

use Multek\CustomerEngagement\EngagementManager;

public function boot(): void
{
    $this->app->make(EngagementManager::class)->extend('braze', function () {
        return new BrazeDriver(config('services.braze'));
    });
}
bash
php artisan vendor:publish --tag=customer-engagement-config