Laravel notification driver and bindings of PHP Intercom API
Via composer:
composer require zhuk/laravel-intercom
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.
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);
}
}