mediumart / intercom by isaacesso

Intercom API [Macroable] client adapter for laravel
52,474
8
2
Package Data
Maintainer Username: isaacesso
Maintainer Contact: daprod2009@gmail.com (Isaac Esso)
Package Create Date: 2017-02-22
Package Last Update: 2022-06-21
Home Page:
Language: PHP
License: MIT
Last Refreshed: 2024-12-19 03:01:10
Package Statistics
Total Downloads: 52,474
Monthly Downloads: 198
Daily Downloads: 8
Total Stars: 8
Total Watchers: 2
Total Forks: 1
Total Open Issues: 6

Mediumart Intercom

Build Status Coverage Status Latest Stable Version License Total Downloads

Mediumart Intercom Client is now macroable !

Installation

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::class

and the facade reference inside the 'aliases' array:

'Intercom' => Mediumart\Intercom\Intercom::class

Configuration

You 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.

Usage

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 :

  • users
  • events
  • companies
  • messages
  • conversations
  • leads
  • visitors
  • admins
  • tags
  • segments
  • counts
  • bulk
  • notes

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);

Defining Macros

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();

License

Mediumart Intercom is an open-sourced software licensed under the MIT license.