Skip to content

brandnewio/ember-intercom-api

Repository files navigation

npm version ember-cli version

ember-intercom-api

This addon simply inject Intercom.io's script at runtime and gives you a nice interface for interaction with the script via intercom service.

Installation

ember install ember-intercom-api

Usage

You need to provide appId for Intercom's script:

// config/environment.js

ENV['ember-intercom-api'] = {
  appId: '[YOUR_APP_ID]'
};

Please remember that you can make use of environment variable available in config/enviroment. This way you can set testing appId for your development or staging environment:

module.exports = function(environment) {
  var ENV = {
    //some stuff here
  };
  
  if (environment === 'staging' || environment === 'development') {
    ENV['ember-intercom-api'] = {
      appId: '[YOUR_TESTING_APP_ID]'
    };    
  }
}

Using API

Example:

import { inject as service } from '@ember/service';
import Route from '@ember/routing/route';

export default Route.extend({
  intercom: service(),

  beforeModel() {
    this.get('intercom').boot();
  }
});

Exposed API

These methods are exposed via intercom service and invoked on the Intercom script. Read The Intercom JavaScript API for more information.

  • .boot(intercomSettings) - intercomSettings param is optional. If not given then app_id provided in config/environment.js will be used
  • .getVisitorId()
  • .hide()
  • .show()
  • .showMessages()
  • .showNewMessage(text) - text param is optional
  • .shutdown()
  • .trackEvent(eventName, params)
  • .update(params)

Tests

You would rather like to avoid injecting Intercom's script to your Acceptance Tests and send the data.

This could be done by just not adding ember-intercom-api options to ENV variable:

module.exports = function(environment) {
  var ENV = {
    //some stuff here
  };
  
  if (environment !== 'test') {
    ENV['ember-intercom-api'] = {
      appId: '[YOUR_APP_ID]'
    };    
  }
}

or even better (as a more comprehensive example):

module.exports = function(environment) {
  var ENV = {
    //some stuff here
  };
  
  switch(environment) {
    case 'production':
      ENV['ember-intercom-api'] = {
        appId: '[YOUR_APP_ID]'
      };
      break;
       
    case 'staging':
    case 'development':
      ENV['ember-intercom-api'] = {
        appId: '[YOUR_TESTING_APP_ID]'
      }; 
      break;
    default:
      break;
  }
}

Linting

  • 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 https://ember-cli.com/.

License

This project is licensed under the MIT License.