gpt4 book ai didi

javascript - 机器人必须重新启动才能将用户输入传递给请求功能

转载 作者:行者123 更新时间:2023-12-03 06:24:48 24 4
gpt4 key购买 nike

我的 Node.js Skype Bot 中有一个看起来与此类似的 api

var SearchName = '',
TaxBillNu = ''
_rows = '10',
SearchDetail;

function getMobileData (Name, TaxBill, Rows) {
url = "http://example.com/api/search/OwnerName="+Name+"&TaxBill="+TaxBill+"&Rows="+Rows;
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
SearchDetail = body;
}else{
session.beginDialog('/');

err = error;
}
})
}

用户进入 REName 后,我会要求他们输入搜索查询,然后使用 API 转到搜索结果列表

bot.dialog('/REName', [
function (session) {
builder.Prompts.text(session, "Type a search query..");
},
function (session, results) {
if (results.response) {
SearchName = results.response;
getMobileData(SearchName, TaxBillNu, _rows)
if(err){
session.send(err);
}
session.beginDialog('/REList');
}
}
]);

到目前为止,我的问题是,即使我返回搜索结果(在第二次循环时),我首先会收到一个错误,表明发生了问题,搜索变量已保存,但该函数不会更新正文json 请求直到它重新启动之后。如何确保我可以在 bot.dialog('/REName', [) 之后运行该函数并第一次获取更新的 SearchDetail = body

编辑:此时需要重新启动 3 次才能完成 URL 的用户输入并向我传递我需要的内容。

最佳答案

使用异步编程技术来组织程序控制流。

由于您需要等待操作完成(REST API 请求),然后将该数据传递到下一步,因此您已经获得了 async.waterfall() 的完美用例。控制流模式。

例如,使用 Node.js 模块 async ,在对话框处理程序中构造一个 async.waterfall ,如下所示:

var async = require('async');

bot.dialog('/REName', [
function (session) {
builder.Prompts.text(session, "Type a search query..");
},
function (session, results) {
if (results.response) {
SearchName = results.response;
// do async stuff here
async.waterfall([
function(callback) {
// modify your getMobileData() method so it returns desired result
var mobileData = getMobileData(SearchName, TaxBillNu, _rows);
callback(null, mobileData);
},
function(mobileData, callback) {
// mobileData gets passed from the previous function
// then call session beginDialog
session.beginDialog('/REList');
callback(null);
}
], function (err, result) {
// handle errors here
session.send(err);
});

}
}
]);

关于javascript - 机器人必须重新启动才能将用户输入传递给请求功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38703863/

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