[英]How to integerate Google actions dialogflow with hapi nodejs framework?
我正在尝试创建一个简单的Google Home操作。 我能够成功尝试google firebase函数中的一些基本函数。 但是,当我尝试对Hapi框架执行相同操作时,我无法使其正常工作吗? 当我尝试搜索时,只能看到Express和lambda的框架?
我试图与hapi集成,但只有500个响应。 我也在粘贴它的片段
const { dialogflow } = require('actions-on-google')
const app = dialogflow({
debug: true
})
const welcomeIntent = (conv) => {
conv.contexts.set('previousintent', 1, { 'previousintent': 'welcomeIntent' })
if (!conv.surface.capabilities.has('actions.capability.MEDIA_RESPONSE_AUDIO')) {
conv.close('Sorry, this device does not support audio playback.')
return
}
console.log('welcome intent')
conv.ask('Welcome')
};
app.intent('Default Welcome Intent', welcomeIntent)
fulfillmentRoute.push({
path: `${constants.V1_API_PATH}/vee/fulfillment`,
method: 'POST',
handler: app
})
这是Hapi的示例,
const Hapi = require('@hapi/hapi');
const dialogflow = require('dialogflow');
const credentials = {
client_email: process.env.GOOGLE_CLIENT_EMAIL,
private_key: process.env.GOOGLE_PRIVATE_KEY,
};
const sessionClient = new dialogflow.SessionsClient(
{
projectId: process.env.GOOGLE_PROJECT_ID,
credentials
}
);
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
server.route({
method: 'POST',
path: '/',
handler: async (request, h) => {
const sessionID = "unique ID" // unique id
const response = await sendTextQueryToDialogFlow(sessionID,request.payload.query)
return response[0].queryResult;
}
});
await server.start();
console.log('Server running on %s', server.info.uri);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
init();
async function sendTextQueryToDialogFlow(sessionId, text, params = {}) {
const sessionPath = sessionClient.sessionPath(config.GOOGLE_PROJECT_ID, sessionId);
const request = {
session: sessionPath,
queryInput: {
text: {
text: text,
languageCode: process.env.DF_LANGUAGE_CODE,
},
},
queryParams: {
payload: {
data: params
}
}
};
return await sessionClient.detectIntent(request);
}
使用JSON数据向服务器发送POST请求,例如,
{ query:"hello" }
您会得到回应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.