Я пытаюсь построить свои веб-хуки, используя nodejs и не используя firebase.Я нашел ресурс и собрал свой файл index.js следующим образом:
const express = require('express');
const bodyParser = require('body-parser');
const {
dialogflow
} = require('actions-on-google');
const PORT = process.env.PORT || 5000;
const app = dialogflow({
debug: true
});
const server = express()
.use(bodyParser.urlencoded({
extended: true
}))
.use(bodyParser.json(), app)
.listen(PORT, () => console.log(`Listening on ${ PORT }`));
// Handle the Dialogflow intent named 'Default Welcome Intent'.
app.intent('Default Welcome Intent', (conv) => {
const name = conv.user.storage.userName;
if (!name) {
// Asks the user's permission to know their name, for personalization.
conv.ask(new Permission({
context: 'Hi there, to get to know you better',
permissions: 'NAME',
}));
} else {
conv.ask(`Hi again, ${name}. What are you looking for?`);
}
});
// Handle the Dialogflow intent named 'actions_intent_PERMISSION'. If user
// agreed to PERMISSION prompt, then boolean value 'permissionGranted' is true.
app.intent('actions_intent_PERMISSION', (conv, params, permissionGranted) => {
if (!permissionGranted) {
// If the user denied our request, go ahead with the conversation.
conv.ask(`OK, no worries. What are you looking for?`);
conv.ask(new Suggestions('Blue', 'Red', 'Green'));
} else {
// If the user accepted our request, store their name in
// the 'conv.user.storage' object for future conversations.
conv.user.storage.userName = conv.user.name.display;
conv.ask(`Thanks, ${conv.user.storage.userName}. ` +
`What are you looking for?`);
conv.ask(new Suggestions('Blue', 'Red', 'Green'));
}
});
// Handle the Dialogflow NO_INPUT intent.
// Triggered when the user doesn't provide input to the Action
app.intent('actions_intent_NO_INPUT', (conv) => {
// Use the number of reprompts to vary response
const repromptCount = parseInt(conv.arguments.get('REPROMPT_COUNT'));
if (repromptCount === 0) {
conv.ask('Which color would you like to hear about?');
} else if (repromptCount === 1) {
conv.ask(`Please say the name of a color.`);
} else if (conv.arguments.get('IS_FINAL_REPROMPT')) {
conv.close(`Sorry we're having trouble. Let's ` +
`try this again later. Goodbye.`);
}
});
module.exports = server;
Мое NodeJs приложение просто состоит из index.js и пакета.* 1009 JSON *.Я сделал npm install
, а затем загрузил два файла и node_modules в мое лазурное веб-приложение.Когда я тестировал свое приложение google Actions, оно получало ошибку webhook, потому что не может связаться.
Может кто-нибудь сказать мне, что мне нужно сделать, чтобы заставить его работать?
PS: Этомой package.json :
{
"name": "pyb-actions",
"description": "Actions on Google for PYB",
"author": "r3plica",
"private": true,
"scripts": {
"lint": "eslint .",
"start": "npm run shell"
},
"dependencies": {
"actions-on-google": "^2.0.0",
"express": "^4.16.4",
"i18n": "^0.8.3"
},
"devDependencies": {
"eslint": "^4.19.0",
"eslint-config-google": "^0.9.1"
}
}