Created
June 8, 2020 13:08
-
-
Save valenso/829ab31eb8473ba3ba61d50b1d5672dd to your computer and use it in GitHub Desktop.
DialogFlow Weather Fulfillment
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// See https://github.com/dialogflow/dialogflow-fulfillment-nodejs | |
// for Dialogflow fulfillment library docs, samples, and to report issues | |
'use strict'; | |
const functions = require('firebase-functions'); | |
const {WebhookClient} = require('dialogflow-fulfillment'); | |
const {Card, Suggestion} = require('dialogflow-fulfillment'); | |
var rp = require('request-promise'); | |
process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements | |
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => { | |
const agent = new WebhookClient({ request, response }); | |
console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers)); | |
console.log('Dialogflow Request body: ' + JSON.stringify(request.body)); | |
function welcome(agent) { | |
agent.add(`Welcome to my agent!`); | |
} | |
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) { | |
const city = request.body.queryResult.parameters.city; | |
const url = 'https://api.openweathermap.org/data/2.5/weather'; | |
var options = { | |
uri: url, | |
qs: { | |
appid: '533a5504db42388fea0071626c3e0de8', | |
q: city, | |
units: 'metric' | |
}, | |
headers: { | |
'User-Agent': 'Request-Promise' | |
}, | |
json: true // Automatically parses the JSON string in the response | |
}; | |
return rp(options) | |
.then(function (repos) { | |
//agent.add(`*${JSON.stringify(repos)}*`); | |
agent.add("The Weather in " + city + " for today" + | |
"\n\nIt is " + repos.weather[0].description + | |
"\nTemperature: " + repos.main.temp + | |
", but feels like " + repos.main.feels_like); | |
}) | |
.catch(function (err) { | |
// API call failed... | |
}); | |
} | |
// // 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/fulfillment-actions-library-nodejs | |
// // 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('weather', yourFunctionHandler); | |
// intentMap.set('your intent name here', googleAssistantHandler); | |
agent.handleRequest(intentMap); | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "dialogflowFirebaseFulfillment", | |
"description": "This is the default fulfillment for a Dialogflow agents using Cloud Functions for Firebase", | |
"version": "0.0.1", | |
"private": true, | |
"license": "Apache Version 2.0", | |
"author": "Google Inc.", | |
"engines": { | |
"node": "8" | |
}, | |
"scripts": { | |
"start": "firebase serve --only functions:dialogflowFirebaseFulfillment", | |
"deploy": "firebase deploy --only functions:dialogflowFirebaseFulfillment" | |
}, | |
"dependencies": { | |
"actions-on-google": "^2.2.0", | |
"firebase-admin": "^5.13.1", | |
"firebase-functions": "^2.0.2", | |
"dialogflow": "^0.6.0", | |
"dialogflow-fulfillment": "^0.5.0", | |
"request": "^2.81.0", | |
"request-promise": "^4.2.5" | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment