A node.js client for the Dialog API.
- Amazon Alexa (soon)
- Google Actions (soon)
- Twilio SMS (soon)
- Botpress
- Twilio Programmable Chat with Botkit
- Facebook Messenger with Botkit
- Facebook Messenger with Express
- Kik
Install using npm.
npm install dialog-api --save
This library needs to be configured with your API token which is available in your personal account, and a bot ID.
var Dialog = require('dialog-api');
var dialog = new Dialog(request.env('DIALOG_API_TOKEN'), request.env('DIALOG_BOT_ID'));
See docs.dialoganalytics.com/reference/track
var payload = {
message: {
platform: "messenger",
provider: "dialog-node",
mtype: "text",
sent_at: 1484948110.458,
nlp: {
intents: [
{
name: 'rocket.launch',
confidence: 0.98
}
]
},
properties: {
"text": "Launch some space rockets"
}
},
conversation: {
distinct_id: "0a4b6c44-55e0-4381-a678-34f02b2620d7"
},
creator: {
distinct_id: "d5ae3f5f-1645-40c3-a38a-02382cd0ee49",
type: "interlocutor",
username: "@elon",
first_name: "Elon",
last_name: "Musk",
email: "elon@spacex.com",
gender: "male",
locale: "US",
phone: "1234567890",
profile_picture: "http://spacex.com/elon.jpg",
timezone: -5
}
};
dialog.track(payload);
Example: Botpress bot with botpress-dialog
See botpress-dialog
Example: Twilio Programmable Chat bot built with Botkit
var Dialog = require('dialog-api/lib/botkit/twilioipm');
controller.middleware.receive.use(dialog.incomingMiddleware);
controller.middleware.send.use(dialog.outgoingMiddleware);
Example: Messenger bot built with Botkit
var Dialog = require('dialog-api/lib/botkit/messenger');
controller.middleware.receive.use(dialog.incomingMiddleware);
controller.middleware.send.use(dialog.outgoingMiddleware);
Example: Messenger bot built with expressjs/express
var Dialog = require('dialog-api/lib/messenger');
var app = express();
// ...
app.post('/webhook', function(req, res) {
dialog.incoming(req.body);
var messagingEvents = req.body.entry[0].messaging;
if (messagingEvents.length && messagingEvents[0].message) {
var event = req.body.entry[0].messaging[0];
var payload = {
recipient: {
id: event.sender.id
},
message: { text: 'Hey human!' }
};
var options = {
url: 'https://graph.facebook.com/v2.6/me/messages',
qs: { access_token: process.env.FACEBOOK_PAGE_ACCESS_TOKEN },
method: 'POST',
json: payload
};
request(options, function(error, response, body) {
dialog.outgoing(payload, body);
});
}
})
Example: Kik bot built with @kikinteractive/kik
var Dialog = require('dialog-api/lib/kik')
// ...
bot.use(function(message, next) {
dialog.incomingMiddleware(message, next)
})
bot.outgoing(function(message, next) {
dialog.outgoingMiddleware(message, next)
})
Send events to Dialog to keep track of your custom logic. Optionally pass an Interlocutor's distinct id to tie the event to one of your bot's interlocutors. See docs.dialoganalytics.com/reference/event#create
dialog.event('subscribed', 'interlocutorDistinctId', { custom: 'value' })
Record clicks by interlocutors inside a conversation using a trackable link. For every links that needs to be tracked, generate a trackable URL by passing the interlocutor's distinct Id (provided by the platform or provider) and the url
to the link
method. See docs.dialoganalytics.com/reference/click-tracking
dialog.link('http://example.com', interlocutorDistinctId)
// https://api.dialoganalytics.com/v1/b/7928374/clicks/?id=123456&url=http%3A%2F%2Fexample.com
Modify the current track
payload about to be sent to Dialog's API with this helper method.
For example, you can specify a message name:
dialog.attach('welcome')
dialog.attach({ message: { name: 'welcome' }}) // equivalent
This will modify the track
payload:
{
message: {
name: "welcome",
...
},
conversation: { ... },
creator: { ... }
}
See docs.dialoganalytics.com/reference/message#retrieve
dialog.retrieveMessage(conversationId, messageId)
List all messages in a conversation. See docs.dialoganalytics.com/reference/message#list
dialog.listMessages(conversationId)
See docs.dialoganalytics.com/reference/conversation#retrieve
dialog.retrieveConversation(conversationId)
See docs.dialoganalytics.com/reference/conversation#list
dialog.listConversations()
See docs.dialoganalytics.com/reference/interlocutor#list
dialog.listInterlocutors()
See docs.dialoganalytics.com/reference/interlocutor#retrieve
dialog.retrieveInterlocutor(interlocutorId)
See docs.dialoganalytics.com/reference/interlocutor#update
dialog.updateInterlocutor(interlocutorId, params)
To create an interlocutor, use the track
endpoint. An interlocutor must initially be created in association with a conversation. See docs.dialoganalytics.com/reference/track
See the API docs.