Я делал пробную версию, пытаясь интегрировать BotFramework с Amazon lex и, наконец, интегрировать бота в канал групп Microsoft. AWS-SDK используется для вызова бота Amazon Lex.
async callLex(context) {
let msg
var lexruntime = new AWS.LexRuntime();
const params = {
botAlias: 'tutorialbot',
botName: 'TutorialBot',
inputText: context.activity.text.trim(), /* required */
userId: context.activity.from.id,
//inputStream: context.activity.text.trim()
}
await lexruntime.postText(params, function(err,data) {
console.log("Inside the postText Method")
if (err) console.log(err, err.stack); // an error occurred
else {
console.log(data)
msg = data.message
console.log("This is the message from Amazon Lex" + msg)
context.sendActivity(MessageFactory.text(msg));
//turnContext.sendActivity(msg);
}
console.log("Completed the postText Method")
})
return msg;
}
Получен ответ от Lex, и когда я пытаюсь вернуть тот же ответ, context.sendActivity (MessageFactory.text (msg)) в функции обратного вызова для BotFramework выдает ошибку
Blockquote TypeError: Невозможно выполнить «получение» на прокси-сервере, который был отозван при ответе. (E: \ игровая площадка \ BotBuilder-Samples \ samples \ javascript_nodejs \ 02.echo-bot \ lexbot.js: 93: 25) по запросу. (E: \ игровая площадка \ BotBuilder-Samples \ samples \ javascript_nodejs \ 02.echo-bot \ node_modules \ aws-sdk \ lib \ request.js: 369: 18) в Request.callListeners (E: \ игровая площадка \ BotBuilder-Samples \ образцы \ javascript_nodejs \ 02.echo-bot \ node_modules \ aws-sdk \ lib \ sequence_executor.js: 106: 20) в Request.emit (E: \ игровая площадка \ BotBuilder-Samples \ samples \ javascript_nodejs \ 02.echo-bot \ node_modules \ aws-sdk \ lib \ sequence_executor.js: 78: 10)
Похоже, что после отправки сообщения Лексу прокси, который использует бот, больше не доступен. Не могли бы вы подсказать, как это исправить?
Это вызывающий код, вызывающий асинхронную функцию callLex.
class TeamsConversationBot extends TeamsActivityHandler {
constructor() {
super();
this.onMessage(async (context, next) => {
TurnContext.removeRecipientMention(context.activity);
var replyText = `Echo: ${ context.activity.text }`;
await this.callLex(context)
console.log("After calling the callLex Method")
await next();
});
this.onMembersAddedActivity(async (context, next) => {
context.activity.membersAdded.forEach(async (teamMember) => {
if (teamMember.id !== context.activity.recipient.id) {
await context.sendActivity(`Hi, I'm a TutorialBot. Welcome to the team ${ teamMember.givenName } ${ teamMember.surname }`);
}
});
await next();
});
}