Botframework 连接ETIMEDOUT 137.116.128.188:443,用于bot框架,可以扩展
因此,我有一个请求,它将运行至少1分钟,然后才会给出响应 为了帮助用户在我的请求仍在运行时不执行任何操作,我设置了一些sendTyping活动: 用于审查生产代码工作敏感信息 ,我的代码通常是这样的:Botframework 连接ETIMEDOUT 137.116.128.188:443,用于bot框架,可以扩展,botframework,Botframework,因此,我有一个请求,它将运行至少1分钟,然后才会给出响应 为了帮助用户在我的请求仍在运行时不执行任何操作,我设置了一些sendTyping活动: 用于审查生产代码工作敏感信息 ,我的代码通常是这样的: var queryDone = "No"; var xmlData = ''; let soappy = soapQuery("123", "456", "789",&q
var queryDone = "No";
var xmlData = '';
let soappy = soapQuery("123", "456", "789","getInfo");
soappy.then(function (res) {
queryDone = 'Yes';
xmlData = res;
console.log(xmlData);
}, function (err) {
queryDone = 'Timeout';
})
while (queryDone == 'No') {
await step.context.sendActivity({ type: 'typing' });
}
其中soapQuery()
是一个函数,用于发送和返回POST请求,如下所示:
return new Promise(function (resolve, reject) {
request.post(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
resolve(body);
}
else {
reject(error);
}
})
})
问题的出现是因为这1分钟的响应(由于大量数据和我的请求的验证,服务器至少需要1分钟来处理它,所以这不是真正可以协商的)
虽然1分钟后,控制台会打印响应,但遗憾的是,在此之前,机器人已经超时。
有没有建议如何解决这个问题,或者延长bot的运行时间
我需要sendtyping活动,以便用户了解请求尚未完成。再一次,我的请求需要1分钟才能得到响应
谢谢大家! 因此,出现这种情况的原因是HTTP请求在Bot框架中的工作方式与您预期的稍有不同: 因此,基本上,在您的场景中发生的是:
soapQuery
soapQuery
完成while
循环)soapQuery
完成,bot将丢失对话的上下文,因此您的soappy.then()
函数将需要发送一条消息。为此,您需要,然后在then()
函数中,您需要api/notify
端点上的请求后调用主动消息。你的不需要这么做。它只需要使用类似的代码发送主动消息