dialogflow-chatbot-extension
v0.3.0
Published
This is a custom dialogflow chatbot extension
Downloads
2
Readme
Dialogflow Chatbot Extension
Table of Contents
Overview
Dialogflow Chatbot Extension is a Node JS extension for chatbots built with Dialogflow and utilize Firebase Cloud Functions. Dialogflow Chatbot Extension allows connection with Firebase Realtime Database and Google Spreadsheet.
Installation
Using npm:
$ npm install dialogflow-chatbot-extension
const chatbotExtension = require("dialogflow-chatbot-extension");
Implementation
const details = require("./details.json");
const chatbotExtension = require("dialogflow-chatbot-extension");
const chatbot = new chatbotExtension().initializeApp({
credentials: serviceAccount
details: details });
initializeApp takes in two objects: A service account key and details. The details.json file has this format.
{
"name": "Chatbot Name",
"databaseURL": "Firebase Realtime Database url",
"spreadsheetId": "Google Spreadsheet ID",
"timeZone": "Africa/Lagos",
"queryClusterType": "Saving order for query clusters. daily | weekly | monthly | yearly"
}
Details
const chatbotname = chatbot.getName() //Returns Chatbot Name defined in details
const databaseURL = chatbot.getDatabaseURL() //Returns databaseURL defined in details
const spreadsheetId = chatbot.getSpreadsheetId() //Returns spreadsheetId defined in details
const timeZone = chatbot.getTimezone() //Returns timeZone defined in details
const credentials = chatbot.getCredentials() //Returns service account credentials
const details = chatbot.getDetails() //Returns all details
Data
All Data related functions should be called from an async function.
async function getData(query) {
let snapshot = await chatbot.getDatabyQuery(sheetName, query);
console.log(snapshot)
};
All Data functions
await chatbot.getData(sheetName);
await chatbot.getDatabyQuery(sheetName, query, queryColumn='name'||'response');
await chatbot.authorize({email, ipaddress, deviceDetails, location});
await chatbot.getRealtimeData(tableName);
await chatbot.getSession(sessionId);
await chatbot.getSessionKey(sessionId);
await chatbot.saveQuery(sessionId, response);
await chatbot.saveSession(sessionId, session);
Response Formatting
Dialogflow Chatbot Extension current supports eight(8) response types which are formatted to the appropriate dialogflow-fulfillment datatypes.
- Text
agent.add(chatbot.ResponseText(data.response[i]))
- List
agent.add(chatbot.ResponseList(data.response[i]))
- Image
agent.add(chatbot.ResponseImage(data.response[i]))
- Suggestion
agent.add(chatbot.ResponseSuggestion(data.response[i]))
- TextCard
- ImageCard
- FullCard
- ContactCard
agent.add(chatbot.ResponseTextCard(data.response[i])) // Text Card
agent.add(chatbot.ResponseImageCard(data.response[i])) // Image Card
agent.add(chatbot.ResponseFullCard(data.response[i])) // Full Card
agent.add(chatbot.ResponseContactCard(data.response[i])) // Contact Card
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Please make sure to update tests as appropriate.