@555platform/555-js-sdk

JavaScript SDK for 555 Platform

Usage no npm install needed!

<script type="module">
  import 555platform555JsSdk from 'https://cdn.skypack.dev/@555platform/555-js-sdk';
</script>

README

555-js-sdk

Build Status

555 JavaScript SDK

555-js-sdk provides simple APIs to build chat based applications using 555 Platform.

Getting started

npm i @555platform/555-js-sdk

Usage - Examples

import SDK from '@555platform/555-js-sdk';
  1. Make connection using 555token, ConnectOptions and MessageAdapter

    const sdk = SDK.Client.create(
                userData.access_token,
                {
              url: '',
              automaticReconnect: true
                },
                new SDK.QueuedMessageAdapter<SDK.MessagePayload>()
            );
        
        
    sdk.chat.connect();
    
  2. Get list of rooms current user is a member of.

    const iter: SDK.Paginator<
        SDK.RoomDescriptor,
        SDK.RoomIterator
      > = await sdk.chat.getUserRoomDescriptors(0, 0);
    
  3. Callbacks and Events from SDK.

    SDK.Client.Chat.on(
        SDK.CMF.ChatServerEventTypes.RoomAdded,
        this.onRoomsChanged
     );
    
    SDK.Client.Chat.on(
      SDK.CMF.ChatServerEventTypes.UserJoinedRoom,
      this.onRoomsChanged
    );
    
    SDK.Client.Chat.on(
      SDK.CMF.ChatServerEventTypes.UserLeftRoom,
      this.onRoomsChanged
    );
    
    SDK.Client.Chat.on(
      SDK.CMF.ChatServerEventTypes.RoomReceivedMessage,
      this.onRoomReceivedMessage
    );
    
    sdk.onTokenAboutToExpire(() =>
     // renewToken is a function you need to implement to fetch new token
     // from application server
     renewToken(renewedToken => sdk.updateToken(renewedToken));
    );
    ```	
    
    

APIs

Connect

Methods

<static> create(accessToken, ConnectOptions, messageAdapter)

Factory method to create and initialize Client

Parameters

Name Type Argument Description
accessToken string required 555 Platform access token
options ConnectOptions required Options to customize 555 Connection behavior
messageAdapter MessageAdapter required Message adapter class conforming to MessageAdapter interface

Returns

Type

Client|Error

updateToken(accessToken)

Updates current token. Used to update Client with refreshed token.

Parameters

Name Type Argument Description
accessToken string required 555 Platform access token

Returns

Type

void

connect()

Connect to platform.

Parameters

Name Type Argument Description
options ConnectOptions optional Connection options

Returns

Type

Promise.<Client|void>

disconnect()

Manually disconnect the client.

Returns

Type

Promise.<void|Error>

on(event, callback)

Register handler for event.

Parameters

Name Type Description
event Event Event type
callback Function Callback function

AccessTokenAboutToExpire

Triggered 5 minutes before access token is to expire.

client.onTokenAboutToExpire(() =>
  // renewToken is a function you need to implement to fetch new token
  // from application server
  renewToken(renewedToken => sdk.updateToken(renewedToken));
);

Options

ConnectOptions

These options are parameters for connecting to platform.

Type

Object

Properties

Name Type Argument
url string required
protocol string[] optional
automaticReconnect boolean optional
reconnectionAttempts number optional
reconnectDelay number optional
reconnectBackoffAlgorithm BackoffAlgorithm optional
pollInterval number optional
requestTimeout number optional
requestRetries number optional
paginatorDefaultPageSize number optional
nextPingDelay number optional
pingWaitDelay number optional

Chat

Methods

createRoom(options)

Create room on the server with current user as the member.

Parameters

Name Type Argument Description
options CreateRoomOptions Create room options

Returns

Type

Promise.<Room>

getRoomById(roomId)

Get room by its ID.

Parameters

Name Type Description
roomId String room ID

Returns

Type

Promise.<Room>

getPublicRoomDescriptors()

Get list of public rooms.

Returns

Type

Promis.<Paginator.<RoomDescriptor>>

getUserRoomDescriptors()

Get list of rooms current user is a member of.

Returns

Type

Promise.<Paginator.<RoomDescriptor>>

getUser(userId)

Return User object for the user ID.

Parameters

Name Type Description
userId String User ID

Returns

Type

Promise.<User>

getCurrentUser()

Return User object for currently logged in user.

Returns

Type

Promise.<User>

disconnect()

Gracefully disconnect SDK from the platform

Returns

Type

Promise.<void>

updateLastConsumedMessageIndex(index)

Set last consumed message index to new index.

Parameters

Name Type Description
index Number Message index to set last read to

Returns

Type

Promise.<number|Error>

Events

roomReceivedMessage

Type

Object

Properties

Name Type Description
room RoomDescriptor Room descriptor with updated last message and consumed message index
message Message Message object with the new message

UserJoinedRoom

Triggered when user joins the room.

Type

User

UserLeftRoom

Triggered when user leaves the room.

Type

User

MessageUpdated

Triggered when message was updated.

Type

Object

Properties

Name Type Description
message Message Updated Message
index Number Index of the updated message

UserIsTyping

Triggered when a user in the room started typing.

Type

User

Options

CreateRoomOptions

These options are parameters for creating a room.

Type

Object

Properties

Name Type Argument
attributes Object optional
friendlyName String required
createdBy string required
isPrivate boolean required
isDirect boolean required
isSMS boolean optional
smsNumber string optional
members string[] required

Room

Properties

Name Type Description
roomId String Room ID
friendlyName String Room display name
createdAt Date Date of creation
createdBy User User who created the room
updatedAt Date Date of update
members Array.<User> Users who are members of this room
isPrivate Boolean Is room private or public ('public' or 'private')
isArchive boolean Is room archived
isSms boolean Is sms
smsNumber string sms number
attributes Object Object with room's custom attributes
lastMessageIndex number Index of last message
lastConsumedMessageIndex number Index of last consumed message
consumedMessageOffset number Number of unread messages by user this message is directed to

Methods

inviteUsers(userId)

Invite a user to the room.

Parameters

Name Type Description
userId String User ID

Returns

Type

Promise.<Room|Error>

leaveRoom(options)

Leave the Room.

Returns

Type

Promise.<Room|Error>

options

Properties

Name Type Argument
roomId string required

removeUser(roomId, userId)

Remove user from the Room.

Returns

Type

Promise.<Room|Error>

archiveRoom()

Archives the Room.

Returns

Type

Promise.<Room|Error>

deleteRoom()

Deletes the Room.

Returns

Type

Promise.<Room|Error>

updateRoom(room)

Update the Room.

Returns

Type

Promise.<Void|Error>

updateMessage(messageId, messageUpdate)

update message.

Returns

Type

Promise.<Void|Error>

deleteMessage(options)

delete message.

Returns

Type

Promise.<Message|Error>

options

Properties

Name Type Argument
roomId string required
messageId string required

removeUser(userId)

Remove user from this Room.

Parameters

Name Type Description
userId String User ID

Returns

Type

Promise.<void|Error>

Events

UserJoinedRoom

Triggered when user joins the room.

Type

User

UserLeftRoom

Triggered when user leaves the room.

Type

User

MessageUpdated

Triggered when message was updated.

Type

Object

Properties

Name Type Description
message Message Updated Message
index Number Index of the updated message

UserIsTyping

Triggered when a user in the room started typing.

Type

User

RTC JS SDK

Import JS SDK as below:

import { JSSDK } from '@555platform/555-js-sdk';

And declare global variables inside .ts wrapper to access Rtc components via window object.

declare var window: any;

or

declare var IrisRtcSession: any;

JS SDK Documenation is available here