require("actions-on-google")// See https://github.com/dialogflow/dialogflow-fulfillment-nodejs
// for Dialogflow fulfillment library docs, samples, and to report issues
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');
const GoogleSpreadsheet = require("google-spreadsheet");
var admin = require("firebase-admin");
const express = require('express')
const app = express();
const bodyParser = require('body-parser');
const port = 3000;
const googleSheetCredentials = {
"type": "service_account",
"project_id": "improvesuggestion-gbqecy",
"private_key_id": "a5df49c2cb3cc6e336883f93b339bd7b805fb1d3",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDDvh9YiHwNxg63\n5bX1Am5xBWWw1s3lMQnK89uMgoNHo4yIo/eiGSwQPcBaDRG7ZctICBu3O4ASvMP6\n99DEgunFfMrdiunykY1rWIDdZuWHygZJm4rgg/hpn5B7GcGE59UpYFmHgIA5hPDI\nQLiRp65P19bH92qLWGRtrcJejvOVngw8gBo0fhZGwJr/lqiPR+1LKjHo/6R7KgxI\nVnX0XwwXkHC6qsZqYAfqwdlNDdKMTm5aIt1iD5FNCnpnKKM2M4RjtpPMUdItrd8O\nv+Me4XVunfAf7/4lcyCmpHxGKM6PLjtigzYqiRxmv5wjffGeXG2TFcibUovutuBo\nF6fzZriRAgMBAAECggEAAKSU90Y5fBUYssdtHdEkejgNkbNe6UAMO2+qGq/KDRfv\nK/q34z8oayQ8x77vvjkTHhkyuBsYrFcU4LPkKmUQrf6fLvOYGZ0bRQ09HR0Lp3LF\nKwQ5BExCqlwlDhZzUYOuakyf9qc4JJg4bzvxLz9I/gekM7NvFOaVK9wMfaGEEMt6\n30udUwwwEw1y05Rubtyd2zl3omKL6FLgV4+/mX7NIeLJMYvOdwHu8Iwvm3f7TnMy\nQlX4+G66mauiUR24lEI+8bt3lg5xRAmTNMyNJpMB1dQyRFNNU1u8cdapQenRxOBv\n6meQ+jQXpR7AhjTyYHGy06piEw4Xjuzh01xa7lZdDQKBgQDsjOWtk3KjTBtYqsCI\nmWmzlZBQO8w4N6H2ASgGnfBYSd464p2ayZy3gQUnNfolWGYKEVNNDsjLw5nnIe+9\nRZZyqn6IQyNucxL3poaOp0+pJ2nMwRs2cd3RjX802TSyciWVFw6121KLyAnzmo75\nLoFiXCYSXzbMRzyTUW9CGP4HtQKBgQDT1kWLD6LxDtYqNswAGEySgJbHY9fLkDO+\n7/Tb3roSbcGTs8b83waSvW80uxizhygRlruTaVbJ0bWSFLZvoIr877xGYQIAcfLr\nuDJA/cY8RMmUoHV0jlf/By4Vrt58NvQVYvcrP/dqAwgk3gECFMiVolHXm/KVHZaL\n1VPoJsT+7QKBgEpVFC9xMArkdYttTMcf/jkyfIDZ6ZiY0sotHtjFdKspuy2h3Iix\nZg+7+VSS/6IQny/2tch3Jt3w/0HERkOhxF8P+Gb1QgMJIiK0L4BQTxYGjpaK7/Qx\n39RjtF91CbwxZmHtNvAqlUvbdlUYcmkXFg1Ei6omRV/32q8oXd/VXq4pAoGAa3wM\nOzwK3C9AAZleNyodKDSwzKjfZL1dVCNi5XEEjrc8Alq0u7faGPifhWztYqJQdWQ6\n9tf7HloWu/FghBE8lIx7xmYQYvNuY6ZJcWqSfCAW/B/SmPpksdUN0BizcOldPcDC\nUyKYwiSZrEMs1cZ/5FTBHBpXosupiHgMo/2P9R0CgYBjEhsPBi4qRX3Um1Bapvow\nprX7Tcm8V8TzO10jYastCLfAi4f6hp+A6q2YQQUDcUunsd63L6FJ+uyDL9ZFTgxZ\nu1TFBJyDKWfhYIXLPMA+dsSxMKpaAqnNXWoxw5JTc0iJY4IjAwvzVQ7io6+rxeW8\nP7DCWkR++n5cqBhud5Tvgw==\n-----END PRIVATE KEY-----\n",
"client_email": "google-sheet-service-account@improvesuggestion-gbqecy.iam.gserviceaccount.com",
"client_id": "117445679582924123083",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/google-sheet-service-account%40improvesuggestion-gbqecy.iam.gserviceaccount.com"
};
var serviceAccount = {
"type": "service_account",
"project_id": "improvesuggestion-gbqecy",
"private_key_id": "bed3c7798d2037f3c5f70736ced8624c8b6f0e43",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCe6vDESqQWn1rY\nvfz0kaVK2TzWzZLSiVnUqvvyRNjkyMqzgq0XO7FgezmbNHMiEnxM4RTYSxp1pLgy\nz0zLKSHdP58pYIwUmJL9L6Z6aQodgCbRkL4DEEg/hpzor58cU3IFmBz+h54UdnC0\n1WYc4ObN7809aI2Ej6agN8ytZXaY7z8iIAWAjORs/jKtSqSgA54aN/7hGXWplNeO\n0x3C3ugAZaiZtoe4Ju6PZKMEU4fnq9q/67Ll7u51H9mXvvt5E8cZhUEBG7QvTxL0\nItZcgs0Vfef6JPaZ2RqWnDAErlb+eFn+zErey3irZoXwLYwyvAK98PlAukAOrbRe\n6BMEZCYLAgMBAAECggEAGIV3FkrQK/911KjoPdK1dymzJg/9fkgcWODzVGxELXVA\nNdfNnp6i3ZjWCDldJJ5GmNRIU6GvGQUMOSbcmiKkK5AUHp3br5flYnT2UsAfg/LQ\nyphzgWSDSW4bixoCSqwjlXJl0u6ZOV4XQQgGpCEd7Bv7BuU5pQFHfERv7DeSR8Gw\npb1Bw6bfqCm6pLtcbboTfTt1mxeybNQVJqLGSNMif6Q7mgNNnijz8QdW1oLKICDI\n1YQBd2Qn/zws4d2gQ3JqXXWvcA6q6ED2nw4+jrN1Z7M/l8oTrGciWECQBiWgQ+2Y\nY5iFL6KEZqTeG3y2CTbWaUWY6O9dzbyCyF/iq6o3TQKBgQDSmfghPmVdmDQAFqpt\nSNAkWFiPsqJYEMQXLhTjunEsJwjpfTLeRSt6Rkfm/AIRCzBBv0F2WTNDAQ8te6qt\nQjWDVoFRQ53ZFYAkaqJ/EbSc+XdxM9Y9xRGy1qDQqI+vJZQ0/VcGct/Stw8r1nX/\noXt9BmyKmcRyDQEoIpnfPiTrNQKBgQDBLM7vFT3ihZ6SXpPvKi2IooVuIS4HuVUm\niCklwMAtXjxmc4mohqz5e2TPbX/3AkfatpjE/RdtclBjQGGQcyBkjFITD7mzr+FQ\nVErL5TpOdViXex33QkwgaiC0l0CUiwMywnnkj8Y7QmtOf0LIOXzIMRskRnoYjqV7\n/68YVNm0PwKBgDhhYe08cBSrb5hqePvC134zbJojv5SGAIkYHB2PR0cDuD4R93FL\n4UTd1df/tWnsreGcGyFc5f1VJkQN7HZv2DWuDfa8fGCmgeS963zLN6ginRhgQUXO\nIVvYW7sgtT61d8Tr4cVnMYaO3W/l/TcPeyjQdHRykAXcd2fQQ5NhZq7VAoGABOzm\njdQF0uvDQkolDXkO1igGrOstqEbCdAwOuIa0n7OCaL5TaTed23KY/Gz3UU3+lQYI\n2ST23vSGNjGjCzLURZwKT7Ab9Qfr/8dWbOJ4XR3C14HtHqvTExSBpvkgTWlJ+JZa\n00gTLtmfsM2v3zkQBG60GXWukUe50nKPfVhUgLMCgYEAn9360riKeu1ciNdLWCik\n6roXN/iPiZVmonJa+V1dNw+FOKeUntWMGOIYwDagp2ksLyQ8eJ1lWZXIhpU+2dCH\nUJIlncXi2ND2MwuyQlMb7criQBKjZJ0PWVyL4WULDmJm2ehy6ygi4bN9trL/zPhH\ntNZ0qpvLI3tV5RGtWnJTlV8=\n-----END PRIVATE KEY-----\n",
"client_email": "firebase-adminsdk-fsbjo@improvesuggestion-gbqecy.iam.gserviceaccount.com",
"client_id": "108833506983550080070",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-fsbjo%40improvesuggestion-gbqecy.iam.gserviceaccount.com"
};
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://improvesuggestion-gbqecy.firebaseio.com"
});
var doc = new GoogleSpreadsheet("1r5r-Hrzf08D6DgfHwwiRnegS8v_TcdeZhtWWlj6HUP0");
// Get a database reference to our blog
var db = admin.database();
var usersRef = db.ref("improvesuggestion-gbqecy");
app.use(bodyParser());
app.post('/firebase', (request, response) => {
console.log('in firebase');
const agent = new WebhookClient({ request, response });
function welcome(agent) {
agent.add(`Welcome to my agent!`);
}
let sheet;
function survey(agent) {
console.log('in survey');
usersRef.push({
'Intent':request.body.queryResult.intent.displayName,
'Text':request.body.queryResult.queryText
});
doc.useServiceAccountAuth(googleSheetCredentials, function(err, res) {
console.log('in doc');
doc.getInfo(function(err, info) {
console.log('Loaded doc: '+info.title+' by '+info.author.email);
sheet = info.worksheets[0];
let intentMap1 = new Map();
intentMap1.set('SURVEY Q1 I would like to make a suggestion', {'SURVEY Q1 I would like to make a suggestion': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q10 Expected Implementation Return', {'SURVEY Q10 Expected Implementation Return': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q16 on SMART', {'SURVEY Q16 on SMART': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q11 Resources Needed To Implement', {'SURVEY Q11 Resources Needed To Implement': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q1 Ask Name', {'SURVEY Q1 Ask Name': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q1 Ask Company', {'SURVEY Q1 Ask Company': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q1 Role or Position', {'SURVEY Q1 Role or Position': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q1 Phone No Request', {'SURVEY Q1 Phone No Request': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q1UCConfidence', {'SURVEY Q1UCConfidence': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q1BenefitCode', {'SURVEY Q1BenefitCode': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q1Costs', {'SURVEY Q1Costs': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q12 NewprocessIT', {'SURVEY Q12 NewprocessIT': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q12 OperatingCosts', {'SURVEY Q12 OperatingCosts': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q12 PRIOR', {'SURVEY Q12 PRIOR': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q12 PRIOR - IMPACT', {'SURVEY Q12 PRIOR - IMPACT': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q12 PRIOR - IMPACT - SMART', {'SURVEY Q12 PRIOR - IMPACT - SMART': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q16 with SMART Descriptors', {'SURVEY Q16 with SMART Descriptors': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q16 SMART Explain S', {'SURVEY Q16 SMART Explain S': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q16 SMART Explain M', {'SURVEY Q16 SMART Explain M': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q16 SMART Explain A', {'SURVEY Q16 SMART Explain A': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q16 SMART Explain R', {'SURVEY Q16 SMART Explain R': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q16 Explain T', {'SURVEY Q16 Explain T': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q16 Ask to Send by Email', {'SURVEY Q16 Ask to Send by Email': request.body.queryResult.queryText});
intentMap1.set('SURVEY Q16 Ask to Send by Email - custom', {'SURVEY Q16 Ask to Send by Email - custom': request.body.queryResult.queryText});
//map1.set('SURVEY Q1 I\'d like to make a suggestion', {'SURVEY Q1 I\'d like to make a suggestion': request.body.queryResult.queryText})
console.log(intentMap1.get(request.body.queryResult.intent.displayName));
doc.addRow(1, intentMap1.get(request.body.queryResult.intent.displayName), function(err, addedRows) {
//console.log(addedRows);
});
});
});
}
function fallback(agent) {
agent.add(`I didn't understand`);
agent.add(`I'm sorry, can you try again?`);
}
// // Uncomment and edit to make your own intent handler
// // uncomment `intentMap.set('your intent name here', yourFunctionHandler);`
// // below to get this function to be run when a Dialogflow intent is matched
// function yourFunctionHandler(agent) {
// agent.add(`This message is from Dialogflow's Cloud Functions for Firebase editor!`);
// agent.add(new Card({
// title: `Title: this is a card title`,
// imageUrl: 'https://developers.google.com/actions/images/badges/XPM_BADGING_GoogleAssistant_VER.png',
// text: `This is the body text of a card. You can even use line\n breaks and emoji! š`,
// buttonText: 'This is a button',
// buttonUrl: 'https://assistant.google.com/'
// })
// );
// agent.add(new Suggestion(`Quick Reply`));
// agent.add(new Suggestion(`Suggestion`));
// agent.setContext({ name: 'weather', lifespan: 2, parameters: { city: 'Rome' }});
// }
// // Uncomment and edit to make your own Google Assistant intent handler
// // uncomment `intentMap.set('your intent name here', googleAssistantHandler);`
// // below to get this function to be run when a Dialogflow intent is matched
// function googleAssistantHandler(agent) {
// let conv = agent.conv(); // Get Actions on Google library conv instance
// conv.ask('Hello from the Actions on Google client library!') // Use Actions on Google library
// agent.add(conv); // Add Actions on Google library responses to your agent's response
// }
// // See https://github.com/dialogflow/dialogflow-fulfillment-nodejs/tree/master/samples/actions-on-google
// // for a complete Dialogflow fulfillment library Actions on Google client library v2 integration sample
// Run the proper function handler based on the matched Dialogflow intent name
let intentMap = new Map();
intentMap.set('Default Welcome Intent', welcome);
intentMap.set('Default Fallback Intent', fallback);
intentMap.set('SURVEY Q1 I would like to make a suggestion', survey);
intentMap.set('SURVEY Q10 Expected Implementation Return', survey);
intentMap.set('SURVEY Q16 on SMART', survey);
intentMap.set('SURVEY Q11 Resources Needed To Implement', survey);
intentMap.set('SURVEY Q1 Ask Name', survey);
intentMap.set('SURVEY Q1 Ask Company', survey);
intentMap.set('SURVEY Q1 Role or Position', survey);
intentMap.set('SURVEY Q1 Phone No Request', survey);
intentMap.set('SURVEY Q1UCConfidence', survey);
intentMap.set('SURVEY Q1BenefitCode', survey);
intentMap.set('SURVEY Q1Costs', survey);
intentMap.set('SURVEY Q12 NewprocessIT', survey);
intentMap.set('SURVEY Q12 OperatingCosts', survey);
intentMap.set('SURVEY Q12 PRIOR', survey);
intentMap.set('SURVEY Q12 PRIOR - IMPACT', survey);
intentMap.set('SURVEY Q12 PRIOR - IMPACT - SMART', survey);
intentMap.set('SURVEY Q16 with SMART Descriptors', survey);
intentMap.set('SURVEY Q16 SMART Explain S', survey);
intentMap.set('SURVEY Q16 SMART Explain M', survey);
intentMap.set('SURVEY Q16 SMART Explain A', survey);
intentMap.set('SURVEY Q16 SMART Explain R', survey);
intentMap.set('SURVEY Q16 Explain T', survey);
intentMap.set('SURVEY Q16 Ask to Send by Email', survey);
intentMap.set('SURVEY Q16 Ask to Send by Email - custom', survey);
// intentMap.set('your intent name here', yourFunctionHandler);
// intentMap.set('your intent name here', googleAssistantHandler);
agent.handleRequest(intentMap);
});
app.listen(port, () => console.log(`Example app listening on port ${port}!`))