/ / Bot działa lokalnie, ale nie reaguje na usługę Bot - node.js, azure, cloud, botframework, azure-bot-service

Bot działa lokalnie, ale nie reaguje na Bot Service - node.js, lazur, chmura, botframework, azure-bot-service

Mam skonfigurowanego bota do ciągłej integracjiprzez VSTS. Bot działa na planie usługi App Service (dopiero niedawno odkryłem, że boty planu konsumpcji działają jako funkcje.) Mam działającego bota w chmurze na temat konsumpcji, ale to ogranicza moją zdolność do rozwoju.

Dla tego bota zrobiłem czysty deploy of a Promptbot - ale próba uruchomienia go w chmurze spowodowała błąd w oknie dialogowym. Skomentowałem więc kod programu i zamieniłem go w bota echa. Nadal działa dobrze lokalnie, ale nie ma odpowiedzi z usługi. Próbowałem zalogować się do konsoli Kudu i uruchomić ręczną instalację npm, ale to nie pomogło. Próba ręcznego uruchomienia bota w kudu powoduje błąd Bad Request.

Wersja węzła 6.11.2. Drzewo plików zawiera wszystkie pliki dostarczone przez usługę Bot w momencie pierwszego wdrożenia, w tym iisnode i web.config.

Tutaj są moje app.js i package.json. Czy ktoś inny ma problemy z lokalnie poprawnymi botami, które nie reagują na wdrożenie w chmurze? Jakieś sztuczki, których nie próbowałem?

AKTUALIZACJA: Wystąpił błąd podczas uruchamiania za pośrednictwem strumienia dziennika Azure, ale nie wiem, jak to naprawić. Błąd: prośba o "https://state.botframework.com/v3/botstate/webchat/conversations/(snip)"failed: [500] Błąd wewnętrznego serwera na Request._callback

var dotenv = require("dotenv");
dotenv.load();
var restify = require("restify");
var builder = require("botbuilder");

// Setup Restify Server
var server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function () {
console.log("%s listening to %s", server.name, server.url);
});

// Create chat connector for communicating with the Bot Framework Service
var connector = new builder.ChatConnector({
appId: process.env.MicrosoftAppId,
appPassword: process.env.MicrosoftAppPassword,
});

// Listen for messages from users
server.post("/api/messages", connector.listen());

var bot = new builder.UniversalBot(connector, function (session, args) {
console.log("Initialized the bot.");
session.send("You said: %s", session.message.text);
});

Package.json:

{
"name": "heretohelp-app",
"version": "1.0.0",
"description": "Azure bot",
"main": "app.js",
"dependencies": {
"applicationinsights": "^0.21.0",
"botbuilder": "^3.9.1",
"botbuilder-azure": "^3.0.2",
"dotenv": "^4.0.0",
"restify": "^5.2.0"
},
"devDependencies": {
"request": "^2.81.0",
"zip-folder": "^1.0.0"
}
}

Odpowiedzi:

0 dla odpowiedzi № 1

Minęło mnóstwo kopania, ale kiedy znalazłem zarejestrowany błąd, doprowadziło mnie to do wątku dotyczącego problemu, który Bot Service miał w zeszłym tygodniu ze środowiskiem prototypowania: https://github.com/Microsoft/BotBuilder/issues/3463

Znalazłem kilka ślepych zaułków, próbując uruchomić własną pamięć stanu, ale ten artykuł w końcu dał mi funkcjonalność: https://docs.microsoft.com/en-us/bot-framework/nodejs/bot-builder-nodejs-state-azure-table-storage

Utworzono konto magazynu Azure, używane powyżej artykułuaby umieścić go w swoim bocie. Przerywa łącze do (wciąż pozornie uszkodzonej) usługi zarządzania stanem prototypów. Po wykonaniu tego kroku działa czat internetowy.