GithubHelp home page GithubHelp logo

andrewpye / ember-intercom-io Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mike-north/ember-intercom-io

0.0 0.0 0.0 3.12 MB

Deep intercom.io integration for Ember.js apps

License: MIT License

JavaScript 93.20% CSS 0.19% HTML 5.37% Handlebars 1.25%

ember-intercom-io's Introduction

ember-intercom-io

Build Status Code Climate Dependency Status devDependency Status Ember Observer Score

Intercom.io integration for Ember.js apps.

Setup

Install this addon with ember-cli ember install ember-intercom-io

Add the {{intercom-io}} component to one of your templates` The chat widget will appear whenever this component has been rendered, and should disappear whenever it's destroyed.

Configuration

In your config/environment.js file, you must provide your appId

module.exports = function(environment) {
  ...
  intercom: {
    appId: null, // <-- REPLACE WITH YOUR INTERCOM.IO app_id
    enabled: true, // <-- Setting to false in your testing environment prevents unneccessary network requests (true by default)
    userProperties: {
      createdAtProp: 'createdAt',
      emailProp: 'email',
      nameProp: 'name',
      userHashProp: 'hash',
      userIdProp: 'id'
    }
  },
  ...
};

Users vs Leads

In the intercom.io world, a lead is a visitor to your site or app, without an email or name associated with them. A user has a name and email, and is a good construct for tracking the history of all interactions w/ a single person.

You can make ember-intercom-io aware of a "user" context (shifting into "users" mode instead of "leads" mode) by adding an object to the intercom service (i.e., your user authentication service).

When the application updates the intercom.user object, changes will be sent to Intercom and reflected in your Intercom dashboard.

app/services/authentication.js

import Service, {inject as service} from '@ember/service';

export default Service.extend({
  intercom: service(), // the intercom service
  didLogin(user) {
    ...
    this.get('intercom').set('user.name', 'Joe Username');
    this.get('intercom').set('user.email', '[email protected]');
    this.get('intercom').set('user.createdAt', 1447135065173);
  }
});

Custom Properties

To send custom properties on to intercom, add them to the intercom.user object. All property names will be underscored prior to being sent. undefined values will be removed (however, null is kept).

  let customProperties = {
    myCustomThing: 1,
    numberOfCats: false,
    notDefined: undefined
  }
  set(this, 'intercom.user', customProperties);

becomes

{
  my_custom_thing: 1,
  number_of_cats: false
}

API

The intercom service exposes several public API methods that match Intercom.com's existing Javascript API. For full details on the client API, read the Intercom docs.

Properties

Name Type
autoUpdate Boolean
hideDefaultLauncher Boolean
isOpen Boolean
isBooted Boolean
unreadCount Integer
user Object

Methods

The following intercom methods are implemented. See services/intercom.js for full details.

boot()

update()

shutdown()

hide()

show()

showMessages()

showNewMessage()

trackEvent()

getVisitorId() Returns the current id of the logged in user.

startTour() Your intercom account needs to support product tours

Events

Subscribe to events in your app with event listeners:

//fancy-component.js

...

intercom: service(),
newMessageAlert: on('intercom.unreadCountChange', function() {
    alert('Unread Count Changed!');
}),

...

Available Events

(Read the Intercom documentation for full details)[https://developers.intercom.com/v2.0/docs/intercom-javascript#section-intercomonhide]

Ember Event Intercom Event
hide onHide
show onShow
unreadCountChange onUnreadCountChange

Installation

  • git clone this repository
  • npm install

Linting

  • npm run lint:hbs
  • npm run lint:js
  • npm run lint:js -- --fix

Running tests

  • ember test – Runs the test suite on the current Ember version
  • ember test --server – Runs the test suite in "watch mode"
  • ember try:each – Runs the test suite against multiple Ember versions

Running the dummy application

For more information on using ember-cli, visit http://www.ember-cli.com/.

Copyright (c) 2015 Levanto Financial, 2016-18 Mike Works, Inc.

ember-intercom-io's People

Contributors

backspace avatar bgentry avatar cmcclure avatar davidphilip avatar donaldwasserman avatar ember-tomster avatar greenkeeper[bot] avatar greenkeeperio-bot avatar ivanvanderbyl avatar jamess-m avatar mike-north avatar renovate-bot avatar renovate[bot] avatar semantic-release-bot avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.