我一直在使用Microsoft Bot Framework来创建可以在MS团队和AWS之间进行交互的机器人。我一直在尝试编写一些JS函数,但是没有成功地让它们按照我的要求运行。
以下是我目前正在进行的工作,并坚持下去:
我正在制作一个' ping'类似功能,因此僵尸程序用户可以ping AWS中的实例并接收其状态,无论其是否正在运行并且已通过系统检查。我的代码目前能够接受ping的用户请求,从AWS检索信息,甚至可以将该信息打印到控制台。但是,当我尝试从我设置的对象中检索该信息并将其打印到MS Teams时,它表示我的变量未定义。
以下是一些代码段:
class aws_Link {
constructor (mT, ping_1, i_state, i_status) {
this.myTag = mT;
this.ping = ping_1;
this.instance_state = i_state; // I declare this here, but should I?
this.instance_status = i_status; // I declare this here, but should I?
}
//i_state and i_status are just passed NULL when the object is initialized
//so they would be holding some value, not sure if I have to do this
api_link () {
var mainLink = API_LINK_TAKEN_OUT_FOR_OBVIOUS_REASONS;
var myTagFill = "myTag=";
var ampersand = "&";
var pingFill = "ping=";
var completeLink = String(mainLink + myTagFill + this.myTag + ampersand + pingFill + this.ping);
var finalLink = completeLink;
finalLink = finalLink.split(' ').join('');
//set up API-key authenticication
var options = {
url: finalLink,
headers: {
'x-api-key': 'AWS-PRIVATE-TOKEN'
}
};
if(this.ping == "TRUE") { // if the user wants to use /ping
var res = request(options, function(error, response, body) {
console.log("PING REQUEST"); //debug
body = JSON.parse(body);
var h_state = body['instanceState'];
var h_status = body['instanceStatus'];
this.instance_state = h_state;
this.instance_status = h_status;
console.log("STATE: " + h_state); //debug
console.log("STATUS: " + h_status); //debug
});
}
}
pingFunction () {
var tmp = "Instance State: " + this.instance_state + " Instance Status: " + this.instance_status;
return tmp;
}
}
这里我称之为api_link()函数和pingFunction():
var apiLink1 = new aws_Link("MY_TAG_VALUE", "TRUE", "NULL", "NULL");
var completeAPILink = apiLink1.api_link();
session.send('Request complete.');
session.send("PING: " + apiLink1.pingFunction());
所以基本上用户输入了一些信息,这些信息会传递给我创建"新aws_Link"然后我的理解是,创建一个名为apiLink1的对象。从那里,它在我的api_link()函数中向AWS发出请求,该函数检索我想要的信息。当我执行以下操作时,我以为我正在保存此信息:this.instance_state = h_state; & this.instance_status = h_status;
。那么当我在apiLink1上再次调用pingFunction()时,我以为我能够使用this.instance_state and this.instance_status
将信息检索回来,但是所有打印出的信息都是未定义的。任何有关我当前代码无法正常工作以及我可以做出的任何更改或改进的澄清都将非常感激。
谢谢!