nc

nexmo-conversation

Nexmo Conversation SDK for JavaScript

Showing:

Popularity

Downloads/wk

30

Maintenance

No Maintenance Data Available

Package

Dependencies

9

Size (min+gzip)

55.9KB

License

Type Definitions

Tree-Shakeable

No?

Categories

Deprecated!
Please use npm i nexmo-stitch - This package has been deprecated

Readme

Deprecated (Moved to nexmo-stitch)

Please npm install nexmo-stitch instead

Conversation SDK for JavaScript

Quick Steps

Setup

$ npm install nexmo-conversation

create a nexmo application using the nexmo-cli

$ nexmo app:create "Application name" --type rtc --keyfile private.key
>Application created: xxxxxxxx-xxxx-xxxx-xxxx-xxxxsxxxxxxx
>Private Key saved to: private.key

get a token to create a user:

$ nexmo jwt:generate private.key application_id=[application_id]

create a user in your app

 $ curl -X POST -H 'Authorization: Bearer [JWT]' -H 'Content-Type:application/json' -d '{"name":"[username]"}' https://api.nexmo.com/beta/users

include the script in your web page

<script src="node_modules/nexmo-conversation/dist/conversationClient.js"></script>

get a user's token

$ nexmo jwt:generate private.key application_id=[application_id] sub=[username]

Usage

Create an instance and login

var rtc = new ConversationClient({debug:false});
// var token = request login token as above, with sub=<username>
rtc.login(token).then(
    function(application){
        // use the application object to manage the conversations
        // access the available conversations
        console.log(application.conversations);
    });

Create a new Conversation

var conversationData = {
    display_name:'Nexmo Conversation'
    };
application.newConversation(conversationData).then(
    function(conversation) {
        // join the created conversation
        conversation.join().then(
            function(member) {
                console.log("Joined as " + member.user.name);
            });
    }).catch(function(error) {
    console.log(error);
});

Get a conversation you are a member of

application.getConversation(conversation_id).then(
    function(conversation) {
         // console.log(conversation);
        });

Set up Text listener for incoming Text Events

conversation.on("text", function(sender, textEvent){
    if (textEvent.cid === conversation.id){
        // if (rtc.isVisible) { textEvent.seen(); }
        console.log("message received:", textEvent, sender);
    }
});

Sending a Text Event

conversation.sendText("Hi Nexmo").then(function(){
        console.log('message was sent');
    }).catch(function(error){
        console.log('error sending the message', error);
    });

Login Create a conversation, join it, send a message and listen for incoming messages

var rtc = new ConversationClient({debug:false});
// var token = request login token as above, with sub=<username>
rtc.login(token).then(
    function(application){
        // access the available conversations
        console.log(application.conversations);
        // you might already have conversations under `application.conversations[]` to get,
        // or join (if application.conversations[xxx].me.state === "joined" || "invited" respectively)

        application.newConversation().then( //not providing a name, the service will assign a random one for you
            function(conversation) {
                // join the created conversation
                // you can also find your user_id under rtc.application.me (as application === rtc.application)
                conversation.join().then(
                    function(member) {
                        console.log("Joined as " + member.user.name); //member.id is your member's id
                    });

                // listen for incoming text messages
                conversation.on("text", function(sender, textEvent){
                        // manage seen indication
                        // if (rtc.isVisible) { textEvent.seen(); }
                        console.log("message received:", textEvent, sender);
                });

                // send a text event to the conversation
                conversation.sendText("Hi Nexmo").then(
                    function(){
                        console.log('message was sent');
                    }).catch(function(error){
                        console.log('error sending the message', error);
                });
            }).catch(function(error) {
            console.log(error);
        });
    });

The main objects here are application and conversation you can use them to extend the use case. E.g. by inviting a second user to a conversation that you are a member (have joined). The second instance should see the conversation listed, and the member(or me).state as "invited" When both instances have attached listener to "text" events of a conversation they have both joined, you should be able to send/receive text events in that conversation.

Build

If you want to contribute:

Install SDK

clone this repo and enter in it's directory

$ npm install

build

$ npm start

it will build interracially your code.

or

$ npm run build

generate docs

$ npm run docs

it will generate your code in dist/conversationClient

Run the tests

you can run the test with

$ npm run test

NEXMO

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100