gpt4 book ai didi

javascript - 如何从nodejs中的内部函数调用外部函数?我正在为 Google dialogflow fulfillment 编码

转载 作者:行者123 更新时间:2023-11-30 13:45:32 24 4
gpt4 key购买 nike

  1. 你好, friend 们,请帮助我编写 dialogflow fulfillment。
  2. 这是我在内部请求模块中调用 GET Api 的代码,我想将 api 的输出输出到 conv.ask('Sales is 100 万公吨 ' + b) 中的外部函数

代码:

var request = require('request');
var code1 = null;
const bodyParser = require('body-parser')
const { dialogflow } = require('actions-on-google');

const assistant = dialogflow({
clientId: "305xxxx407-rv9kocdxxxxxxxxxciouuq8f9ul2eg.apps.googleusercontent.com"
});

module.exports = (app) => {
const logger = console;
assistant.intent('Sales', (conv) => {
const baseurl = 'https://www.ixxxxxxt.in:3500/getunits?unitcode=4';
var a = request(baseurl, function(error, res, body) {
var Unit = JSON.parse(body);
if (!error && res.statusCode == 200) {
var code = JSON.stringify(Unit.description);
//res.render(test(Unit));
console.log(code); // Print the google web page.
}
})
var b = (a.code);
console.log(b);
conv.ask('Sales is 1 million metric tonnes ' + b);
})

最佳答案

这里有一些问题。

首先是了解request() 正在做什么。您可能不想要 request() 返回的内容,而是想要访问您从定义的函数中获得的 body

该函数实际上是您传递给 request() 的第二个参数。它被称为 回调函数,因为当 request() 从 URL 获取数据时,它会调用该函数。所以你想用 body 做的所有事情都需要在回调函数中完成。

但是,由于您使用的是 Dialogflow 库,并且这是在 Intent Handler 中完成的,因此您需要返回一个 Promise 以表明您正在等待结果才能回复用户。虽然您可以request() 包装在 Promise 中,但还有更好的解决方案,最值得注意的是使用 request-promise-native包,它与请求包非常相似,但使用了 Promises。

这让事情变得容易很多。您的代码可能看起来更像这样(未经测试):

var request = require('request-promise-native');
var code1 = null;
const { dialogflow } = require('actions-on-google');

const assistant = dialogflow({
clientId: "305xxxx407-rv9kocdxxxxxxxxxciouuq8f9ul2eg.apps.googleusercontent.com"
});

module.exports = (app) => {
const logger = console;
assistant.intent('Sales', (conv) => {
const baseurl = 'https://www.ixxxxxxt.in:3500/getunits?unitcode=4';
return request(baseurl)
.then( body => {
// You don't need the body parser anymore
let code = body.description;
conv.ask('Sales is 1 million metric tonnes ' + code);
})
.catch( err => {
console.error( err );
conv.ask('Something went wrong. What should I do now?');
});
})

关于javascript - 如何从nodejs中的内部函数调用外部函数?我正在为 Google dialogflow fulfillment 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59416443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com