Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mediumart/intercom
Intercom API [Macroable] client adapter for laravel
https://github.com/mediumart/intercom
api intercom laravel php
Last synced: 3 months ago
JSON representation
Intercom API [Macroable] client adapter for laravel
- Host: GitHub
- URL: https://github.com/mediumart/intercom
- Owner: mediumart
- License: mit
- Created: 2017-02-22T13:46:30.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2022-06-21T17:43:24.000Z (over 2 years ago)
- Last Synced: 2024-09-26T03:00:06.418Z (4 months ago)
- Topics: api, intercom, laravel, php
- Language: PHP
- Homepage:
- Size: 139 KB
- Stars: 8
- Watchers: 2
- Forks: 1
- Open Issues: 6
-
Metadata Files:
- Readme: readme.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Mediumart Intercom
[![Build Status](https://travis-ci.org/mediumart/intercom.svg?branch=master)](https://travis-ci.org/mediumart/intercom)
[![Coverage Status](https://coveralls.io/repos/github/mediumart/intercom/badge.svg)](https://coveralls.io/github/mediumart/intercom)
[![Latest Stable Version](https://poser.pugx.org/mediumart/intercom/v/stable)](https://packagist.org/packages/mediumart/intercom)
[![License](https://poser.pugx.org/mediumart/intercom/license)](https://packagist.org/packages/mediumart/intercom)
[![Total Downloads](https://poser.pugx.org/mediumart/intercom/downloads)](https://packagist.org/packages/mediumart/intercom)> Mediumart Intercom Client is 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:
```php
Mediumart\Intercom\IntercomServiceProvider::class
```and the facade reference inside the `'aliases'` array:
```php
'Intercom' => Mediumart\Intercom\Intercom::class
```## Configuration
You need to create an `app` with an associated `access_token` from your [intercom.io](https://app.intercom.io/admins/sign_in) account. You can find informations on how to do that [here](https://developers.intercom.com/building-apps/docs/authorization).
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' => ''
]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:
```php
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 :
```php
// 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`:
```php
$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](https://developers.intercom.com/intercom-api-reference/reference#users) and the api usage for each resource [here](https://github.com/intercom/intercom-php/blob/master/README.md#users).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 MacrosTo 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.
```php
// 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
```php
// facade
$userEmails = Intercom::usersEmails();// instance
$userEmails = $intercom->usersEmails();
```## License
Mediumart Intercom is an open-sourced software licensed under the [MIT license](https://github.com/mediumart/intercom/blob/master/LICENSE.txt).