zhuk/laravel-intercom

Intercom client and notifications in Laravel

Downloads

215

Stars

1

Version

v1.0.0-alpha.2

laravel-intercom

GitHub GitHub release (latest SemVer including pre-releases) GitHub commits since latest release (by date including pre-releases)

Laravel notification driver and bindings of PHP Intercom API

Installation

Via composer:

composer require zhuk/laravel-intercom

API usage

Add service config in config/services.php and setup envs like

<?php

return [
    // ...
    'intercom' => [
        'token' => \env('INTERCOM_API_KEY'),
        'password' => \env('INTERCOM_PASSWORD'),
        'admin_user_id' => \env('INTERCOM_ADMIN_USER_ID'),
        'headers' => [
            'Intercom-Version' => '2.3',
        ],
    ],
// ...
];

Than use dependency injection for IntercomClient::class Refer to Intercom PHP for usage information.

Notification usage

Define class like

final class CommonIntercomNotification extends Notification implements NotificationInterface
{
    use Queueable;

    /**
     * @var string
     */
    private string $messageText;

    /**
     * @param string $message
     *
     * @return void
     */
    public function __construct(string $message)
    {
        $this->messageText = $message;
    }

    /**
     * @param mixed $notifiable
     *
     * @return array
     */
    public function via($notifiable)
    {
        return ['intercom'];
    }

    /**
     * @param mixed $notifiable
     *
     * @return IntercomMessage
     */
    public function toIntercom($notifiable): MessageInterface
    {
        return new InappMessage($this->messageText);
    }
}

and for example in User class define method returning ContactInterface. Don`t forget use Notifiable

final class User
{
    use Notifiable;

    // ...

    public function routeNotificationForIntercom($notification): ContactInterface
    {
        return new GenericMessageContact($this->intercom_contact_id);
    }
}

victorzhuk

Author

victorzhuk