/ / Bot funciona localmente pero no responde en el servicio Bot - node.js, azure, cloud, botframework, azure-bot-service

Bot funciona localmente, pero no responde en el servicio Bot - node.js, azure, cloud, botframework, azure-bot-service

Tengo un bot configurado para una integración continuaa través de VSTS. El bot se ejecuta en un plan del Servicio de aplicaciones (recientemente descubrí que los bots del plan de consumo se ejecutan como funciones). Tengo un bot de trabajo en la nube en Consumo, pero está limitando mi capacidad de expansión.

Para este bot, hice un despliegue limpio de un promptbot - pero intentar ejecutarlo en la nube arrojó un error de diálogo. Así que comenté el código de solicitud y lo convertí en un eco bot. Todavía funciona bien localmente, pero no hay respuesta del servicio. Intenté iniciar sesión en una consola Kudu y ejecutar una instalación manual de npm, pero no me ayudó. Intentar ejecutar manualmente el bot en kudu provoca un error de solicitud incorrecta.

Nodo versión 6.11.2. El árbol de archivos incluye todos los archivos proporcionados por Bot Service en el momento de la implementación inicial, incluidos iisnode y web.config.

Aquí está mi app.js y package.json. ¿Alguien más ha tenido problemas con bots válidos localmente que no responden en el despliegue en la nube? ¿Alguna trucos que no he probado?

ACTUALIZACIÓN: Encontré este error disparando a través de la secuencia de registro de Azure, pero no sé cómo solucionarlo. Error: solicitud de "https://state.botframework.com/v3/botstate/webchat/conversations/(snip)"failed: [500] Error interno del servidor en 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"
}
}

Respuestas

0 para la respuesta № 1

Me llevó un montón de búsquedas, pero una vez que encontré el error registrado me llevó a un hilo sobre un problema que el Servicio Bot estaba teniendo la semana pasada con el entorno de estado de creación de prototipos: https://github.com/Microsoft/BotBuilder/issues/3463

Encontré algunos callejones sin salida tratando de tener mi propio almacenamiento de estado funcionando, pero este artículo finalmente me puso funcional: https://docs.microsoft.com/en-us/bot-framework/nodejs/bot-builder-nodejs-state-azure-table-storage

Se creó una cuenta de almacenamiento de Azure, se utilizó el artículo anteriorpara poner eso en tu bot. Rompe el enlace al servicio de gestión del estado de creación de prototipos (aparentemente todavía roto). Una vez que se completa este paso, el chat web funciona.