NodeJS package for MACHAAO aka MessengerX.io npm module for building personalized chatbots on web and beyond
- Visit https://messengerx.rtfd.io/ for full documenation.
npm i --save machaao
-
Register via MessengerX Developer Portal and verify your account.
-
Create a new bot by clicking on 'Add New App'
-
You can set Webhook and Image Url as None till deployment of your Chat App to get started.
-
Once your bot is created, click on Settings and copy 'Token' value.
-
Install npm package in your server file by running
npm i --save machaao
-
Initialize the MessengerX SDK as show in the example below which takes in the
Token
that you copied in the above step, andserver
object. Currently our SDK supports express server object and other libraries will be supported in upcoming releases:
const MxSdk = require('machaao');
const express = require('express');
const server = express();
const lib = new MxSdk('<----Bot Token----->', 'prod', server);
server.listen(3000);
- Once you have initialised the SDK, you can easily read incoming user messages and send responses back to the user (Simple Text, Buttons, Quick Replies and Carousel)
- In order for the integration to be complete, you will need to update your bot settings in portal and update the Webhook Url with your server url and endpoint. (You may choose to use Ngrok.io for development purpose to test the integration.)
- Check out below sample that shows how you can setup a webhook that accepts incoming user message and responds back to the user.
const MxSdk = require('machaao');
const express = require('express');
const server = express();
const lib = new MxSdk('<---Bot Token---->', 'prod', server);
server.post('/incoming', async (req, res) => {
let x = await lib.getUserMessages(req); // read incoming user messages
await lib.sendTextMessage(req, 'hi');
await lib.sendButtonsOrQuickRepliesMessage(
req,
'test buttons',
[{ title: 'button', type: 'postback', payload: 'Hi' }], // sample buttons
[{ title: 'qr', content_type: 'text', payload: 'qr' }] // sample quick reply
);
//sample carousel
await lib.sendCarousel(req, 'test carousel', [
{
title: 'title',
subtitle: 'subtitle',
image_url: 'https://provogue.s3.amazonaws.com/provogue-duffle1.jpg',
buttons: [{ title: 'button', type: 'postback', payload: 'Hi' }],
},
{
title: 'title',
subtitle: 'subtitle',
image_url: 'https://provogue.s3.amazonaws.com/provogue-duffle1.jpg',
buttons: [{ title: 'button', type: 'postback', payload: 'Hi' }],
},
{
title: 'title',
subtitle: 'subtitle',
image_url: 'https://provogue.s3.amazonaws.com/provogue-duffle1.jpg',
buttons: [{ title: 'button', type: 'postback', payload: 'Hi' }],
},
]);
res.send(200);
});
server.listen(3000);
For any queries or questions, please write to [email protected] to reach us.
- Added support for User Tags API.
- Better API response handling