繁体   English   中英

如何使用hapi Node.js框架对Google动作对话框进行整数运算?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM