Laravel integration of the [Intercom PHP SDK](https://github.com/intercom/intercom-php).
homedoctor-es/laravel-intercom is a Laravel package for laravel integration of the [intercom php sdk](https://github.com/intercom/intercom-php)..
It currently has 0 GitHub stars and 3.264 downloads on Packagist (latest version 1.0.0).
Install it with composer require homedoctor-es/laravel-intercom.
Discover more Laravel packages by homedoctor-es
or browse all Laravel packages to compare alternatives.
Last updated
Laravel integration for the Intercom SDK.
The preferred way to install this extension is through composer.
With Composer installed, you can then install the extension using the following commands:
$ php composer.phar require homedoctor-es/laravel-intercom
or add
...
"require": {
"homedoctor-es/laravel-intercom": "*"
}
to the require section of your composer.json file.
config/app.php
return [
//other stuff
'providers' => [
//other stuff
\HomedoctorEs\Laravel\Intercom\IntercomServiceProvider::class,
];
];
config/app.php
return [
//other stuff
'aliases' => [
//other stuff
'Intercom' => \HomedoctorEs\Laravel\Intercom\Facades\Intercom::class,
];
];
php artisan vendor:publish --provider="HomedoctorEs\Laravel\Intercom\IntercomServiceProvider"
config/intercom.php
return [
'is_channel_active' => env('INTERCOM_CHANNEL_ACTIVE', false),
'api_token' => env('HOLDED_API_TOKEN'),
'api_version' => env('HOLDED_API_VERSION', '2.3'),
'admin_user_id' => env('INTERCOM_ADMIN_USER_ID')
];
INTERCOM_CHANNEL_ACTIVE=true
HOLDED_API_TOKEN=
HOLDED_API_VERSION=2.3
INTERCOM_ADMIN_USER_ID=
You can use the facade alias Intercom to execute services of the Intercom sdk. The authentication params will be automatically injected.
$contacts = \HomedoctorEs\Laravel\Intercom\Facades\Intercom::users();
Or use Laravel Service Container to get The Intercom Instance.
app(\HomedoctorEs\Laravel\Intercom\Intercom::class)->users();
Once you have done this steps, you can use all Intercom SDK endpoints as are described in the sdk package documentation.
##Notification channel usage
Now you can use the channel in your via() method inside the notification:
use HomedoctorEs\Laravel\Intercom\Notifications\Channel\IntercomChannel;
use HomedoctorEs\Laravel\Intercom\Notifications\Messages\IntercomMessage;
use Illuminate\Notifications\Notification;
class IntercomNotification extends Notification
{
public function via($notifiable)
{
return ["intercom"];
}
public function toIntercom($notifiable): IntercomMessage
{
return IntercomMessage::create("This is a test message")
->from(config('intercom.admin_user_id'))
->toUserId(xxxxx); //this param can be resolved later in routeNotificationForIntercom
}
}
And/or in your notifiable model define method returning an array or null if not routed field. Your model must be use Notifiable trait-
class User
{
use Notifiable;
// ...
public function routeNotificationForIntercom($notification): ?array
{
if (!$this->intercom_contact_id) {
return null;
}
return [
'type' => 'user',
'id' => $this->intercom_contact_id
];
}
}
body(''): Accepts a string value for the Intercom message bodyemail(): Accepts a string value for the Intercom message type emailinapp(): Accepts a string value for the Intercom message type inapp (default)subject(''): Accepts a string value for the Intercom message body (using with email type)plain(): Accepts a string value for the Intercom message plain templatepersonal(): Accepts a string value for the Intercom message personal templatefrom('123'): Accepts a string value of the admin's id (sender)to(['type' => 'user', 'id' => '321']): Accepts an array value for the recipient datatoUserId(''): Accepts a string value for the Intercom message user by id recipienttoUserEmail(''): Accepts a string value for the Intercom message user by email recipienttoContactId(''): Accepts a string value for the Intercom message contact by id recipientMore info about fields read in Intercom API Reference