Mediumart Intercom Client is macroable !
To install, first require the package via composer:
$ composer require mediumart/intercom
Next add the following to your config/app.php inside the 'providers' array:
Mediumart\Intercom\IntercomServiceProvider::classand the facade reference inside the 'aliases' array:
'Intercom' => Mediumart\Intercom\Intercom::classYou need to create an app with an associated access_token from your intercom.io account. You can find informations on how to do that here.
Once you got your access token, open the config/services.php in your laravel project and add a key for the intercom service like this:
'intercom' => [
'access_token' => '<your_access_token>'
]
The package will automatically pick out the token to authenticate any api request to your own intercom data.
You can resolve the intercom Client in many ways:
use Mediumart\Intercom\Client;
/**
* Manually resolving from the container
* */
$intercom = app('intercom');
// or
$intercom = app(Client::class);
/**
* using type hinting and laravel's automatic resolution
* */
public function index(Client $intercom)
{
/.../
}
/**
* Simply leverage the facade
* */
$intercomUsers = Intercom::users();Using the instance or the facade, any resource type is mirrored as a method on the Client, that can be used to gain the corresponding resource object :
// facade
$leads = Intercom::leads();
// instance
$intercom = app('intercom');
$conversations = $intercom->conversations();Using the instance approach you can also resolve the resource instance as a property of the Client:
$conversations = $intercom->conversations;Here is the list of all the Intercom resources types :
userseventscompaniesmessagesconversationsleadsvisitorsadminstagssegmentscountsbulknotes
You can find related informations on their official documentation page and the api usage for each resource here.
In addition, you can also set the token in a fluent way, after the Client has been resolved, using the setToken method:
$intercom->setToken($token)->users->getUser($id);
To create a macro function, you can use the macro method on either the facade or the instance, this method accepts a name as its first argument, and a callable as its second.
// facade
Intercom::macro('usersEmails', function () {
return // your logic here ...
});
// instance
$intercom->macro('usersEmails', function () use ($intercom) {
return // your logic here ...
});Your macro can now be called as a regular method on intercom facade or instance
// facade
$userEmails = Intercom::usersEmails();
// instance
$userEmails = $intercom->usersEmails();Mediumart Intercom is an open-sourced software licensed under the MIT license.