0.3.0 • Published 4 years ago
dialogflow-chatbot-extension v0.3.0
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-extensionconst 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 detailsData
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 CardContributing
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.