Skip to content

Rainbow-CPaaS/node-red-contrib-ale-rainbow

Repository files navigation

node-red-contrib-ale-rainbow

Description

Alcatel Lucent Enterprise Rainbow nodes for node-red.

Welcome to the Alcatel-Lucent Enterprise Rainbow nodes for node-red!

The Alcatel-Lucent Enterprise (ALE) Rainbow nodes for node-red is a node-red package for connecting your flow to Rainbow, The FREE app to text, call, video and share instantly with your business community.

Requirements

  1. Node.js v8.10.0 and above
  2. Node-RED v1.0.4 and above

Install via NPM

Install node-red and start it:


npm install -g node-red
node-red

Open the flow in a browser on the url provided in start logs:
30 Mar 14:36:40 - [info] Server now running at http://127.0.0.1:1880/
Manage palette from right menu to install node-red-contrib-ale-rainbow.

Note: For installation from sources look at DEVELOPER guide file.

What's inside?

It includes nine nodes:

  1. RBLogin : a unique CONFIG node that holds connection configuration for Rainbow. As a node-red 'config' node, it cannot be added to a graph, but it acts as a singleton object that gets created in the background when you add any other 'ALE Rainbow' node and configure it accordingly. You must configure here the sandbox or official system, and the credentials to be used to connect to Rainbow cloud services and optionnaly, an HTTP Proxy.
    Since v1.3.0 and it's dependency rainbow-node-sdk v1.69.0 connection to Rainbow is well supported.
    A valid AppID/secret are mandatory. Please check the HUB to create one: HUB

  2. RBSend_IM : Output node to send IM to a Rainbow identity (User or Bubble).
    You can configure a default recipient for outgoing IM in node parameters.
    Bubble only: and only if user is Bubble owner : msg.payload.customData if given (and if user is the Bubble owner), will also set the Bubble's customData.
    Accepted message format is:

{  
   "payload":{  
      "content":"Hello world",
      "destJid":"[email protected]",
      ...
   }
}
  • content is: IM content (string).
  • destJid is : Recipient JID (Jabber ID) for the IM. If not specified, Destination JID configured at node level is used.
  1. RBNotified_IM : Input node to listen for new incoming IM from a Rainbow user or Bubble.
    You can add filters to select which message may pass through (by type, RegExp, user or company).
    Delivered message format is:
{  
   "payload":{  
      "content":"Hello world",
      "fromJid":"[email protected]",
      ...
   },
   "contact": {...},
   "bubble": {}
}
  • content is: IM content (string).
  • fromJid is : Originator JID (Jabber ID) of the IM. Can be used to reply by copying this value for destJid.
    Others are described in the node and here Message.
  1. RBNotified_IM_Read : Input node to listen for message acknowledge.
    Delivered message format is:
{
  payload: {
    ack: message
};

with message described here Message

  1. RBAck_IM_Read : Output node to Ack (mark as read) IM received.

⚠ msg.payload should contain the complete message received with Notified_IM node.
Race condition could occur. It is highly recommended to add delay between IM reception and ack.

  1. RBNotified_Presence : Input node to listen for presence update of contact list. Delivered message format is:
{  
   "payload":{  
      "loginemail":"[email protected]",
      "displayname":"Alice Paul",
      "fromJid":"[email protected]",
      "presence":"busy",
      "status":"audio";
   }
}
  • loginemail is: Contact loginemail identifier.
  • displayname is: Contact plain text display name.
  • fromJid is : JID (Jabber ID) of the contact.
  • presence is: presence (can be offline, online, busy, xa, away) xa means dnd, busy means on the phone.
  • status is: presence sub status
    • When presence is online can be mobile
    • When presence is busy can be presentation, audio, video or sharing
  1. RBSet_Presence : Output node to set own presence . Accepted message format is:
{  
   "payload":"away"  
}
  • payload is: presence (can be online, dnd, away or invisible).
  1. RBGet_CnxState : Input node to get connection state . Delivered message format is:
{  
   "payload": "rainbow_onconnectionok"  
}
  • payload is: connection status.

Connection status can be :

  • rainbow_onconnectionok : Fired when the connection is successfull with Rainbow (signin complete)
  • rainbow_onready : Fired when the SDK is connected to Rainbow and ready to be used
  • rainbow_onconnectionerror : Fired when the connection can t be done with Rainbow (ie. issue on sign-in)
  • rainbow_onerror : Fired when something goes wrong (ie: bad 'configurations' parameter...)
  1. Rainbow_function : A JavaScript function rainbow to run against Rainbow Sdk by the node.

  2. RBSend_Channel : Output node to send a message to a Rainbow channel.
    You can configure a default channel for outgoing message in node parameters.
    Accepted message format is:

{  
   "payload":{  
      "message":"this is a message",
      "channel":{
        "id":"29487a323b00403297c1d2984b2f1d60",
        ...
      },
      "title":"For you to know, this is the HUB",
      "url":"https://hub.openrainbow.com"
      ...
   }
}
  • message is: message content (string).
  • channel is : channel (Channel). See Channel for the structure. If not specified, id configured at node level is used.
  • title is: message title (string, optional).
  • url is: url (string, optional).
  1. RBNotified_Channel : Input node to listen for new incoming message from a Rainbow Channel.
    You can configure a default channel for incoming message in node parameters.
    Delivered message format is:
{  
   "payload":{
      "messageId":"60034F1B3CF20",
      "fromJid":"[email protected]",
      "message":"Hello world",
      "title":"HUB news",
      "url":"https://hub.openrainbow.com",
      "channel":{
        "name": "The HUB",
        "id": '5b1541d01578105ad113f9d1',
        "visibility": 'company',
        ...
      }
      ...
   }
}
  • messageId is: Id of the message (string).
  • fromJid is : Originator JID (Jabber ID) of the Message.
  • message is: message content (string).
  • title is: message title (string, optional).
  • url is: url (string, optional).
  • date is: published Date (Date).
  • channel is : channel which got the message (Channel). See Channel for the structure.