node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »



Simple BLiP SDK for JavaScript

This is a work in progress

bitHound Overall Score npm version npm downloads Gitter Travis branch huBoard Commitizen friendly semantic-release

See more about BLiP here



If you are using node.js (or webpack), it's necessary to install blip-sdk package (via npm) to access the BLiP server.

npm install --save blip-sdk lime-transport-websocket


If you are using a web application (on browser) with "pure" Javascript is possible to install the package via npm using the <script> tag. For this case beyond blip-sdk package it's necessary install others dependences as the lime-js and lime-transport-websocket packages:

<script src="./node_modules/lime-js/dist/lime.js" type="text/javascript"></script>
<script src="./node_modules/lime-transport-websocket/dist/WebSocketTransport.js" type="text/javascript"></script>
<script src="./node_modules/blip-sdk/dist/blip-sdk.js" type="text/javascript"></script>

You can also use unpkg to get the packages if you are not using npm on development:

<script src="" type="text/javascript"></script>
<script src="" type="text/javascript"></script>
<script src="" type="text/javascript"></script>

Instantiate the BlipSdk Client

You will need an identifier and a access key to connect a chatbot to BLiP. To get them:

  • Go to Painel BLiP and login;
  • Click on Chatbots and then click on Create chatbot;
  • Choose SDK model option;
  • Create your chatbot, then your identifier and access key will be displayed.

In order to instantiate the client use ClientBuilder class informing the identifier and access key:

import * as BlipSdk from 'blip-sdk';
import * as WebSocketTransport from 'lime-transport-websocket'
// Create a client instance passing the identifier and accessKey of your chatbot 
let client = new BlipSdk.ClientBuilder()
    .withTransportFactory(() => new WebSocketTransport())
// Connect with server asynchronously
// Connection will occurr via websocket on 8081 port.
client.connect() // This method return a 'promise'.
    .then(function(session) { 
        // Connection success. Now is possible send and receive envelopes from server. */ 
    .catch(function(err) { /* Connection failed. */ }); 

Each client instance represent a server connection and can be reused. To close a connection use:

    .then(function() { /* Disconnection success */ })  
    .catch(function(err) { /* Disconnection failed */ }); 


All messages sent to the chatbot are redirected to registered receivers of messages and notifications. You also can define filters to each receiver. The following example show how to add a simple message receiver:

client.addMessageReceiver(true, function(message) {
  // Process received message

The next sample show how to add notification receiver with filter to received event type:

client.addNotificationReceiver("received", function(notification) {
  // Process received notifications

It's also possible use a custom function as receiver filter:

Example of message receiver with filter of originator:

client.addMessageReceiver(function(message) { message.from === "" }, function(message) {
  // Process received message
// Using expression lambda
client.addNotificationReceiver(() => true, function(message) {
  // Process received notifications

Each registration of receivers return a handler that can be used to cancel the registration:

var removeJsonReceiver = client.addMessageReceiver("application/json", handleJson);
// ...


It's possible send notifications and messages only after sessions has been stablished.

The following sample show how to send a message after connection has been stablished:

    .then(function(session) {
      // After connection is possible send messages
      var msg = { type: "text/plain", content: "Hello, world", to: "" };

The following sample show how to send a notification after connection has been stablished:

    .then(function(session) {
      // Sending "received" notification
      var notification = { id: "ef16284d-09b2-4d91-8220-74008f3a5788", to: "", event: Lime.NotificationEvent.RECEIVED };


For information on how to contribute to this package, please refer to our Contribution guidelines.