nexmo-conversation v0.1.21
Deprecated (Moved to nexmo-stitch)
Please npm install nexmo-stitch instead
Conversation SDK for JavaScript
Quick Steps
- Create your Nexmo account
- Install
nexmo-cli
tool - Create a new application
- Generate a JWT token
- Register your new user to the Conversation Service
- Generate a JWT token (with sub=
[username]
)
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
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago