Бот работает локально, но не отвечает на Bot Service

У меня есть бот, настроенный на непрерывную интеграцию через VSTS. Бот работает в плане службы приложений (я только недавно понял, что боты плана потребления работают как функции). У меня есть работающий бот в облаке на потреблении, но это ограничивает мои возможности расширения.

Для этого бота я выполнил чистое развертывание бота Prompt, но попытка запустить его в облаке привела к диалоговой ошибке. Поэтому я закомментировал код подсказки и превратил его в эхо-бота. Локально работает нормально, но сервис не отвечает. Пробовал войти в консоль Kudu и запустить ручную установку npm, но это не помогло. Попытка вручную запустить бота в куду вызывает ошибку Bad Request.

Версия узла 6.11.2. Дерево файлов включает все файлы, предоставляемые службой Bot во время первоначального развертывания, включая iisnode и web.config.

Вот мои app.js и package.json. Кто-нибудь еще сталкивался с проблемами, когда локальные боты не реагировали на развертывание в облаке? Есть какие-то трюки, которые я не пробовал?

ОБНОВЛЕНИЕ. Обнаружена эта ошибка в потоке журналов Azure, но не знаю, как ее исправить. Ошибка: запрос на 'https://state.botframework.com/v3/botstate/webchat/conversations/(snip)' не удалось: [500] Внутренняя ошибка сервера при запросе._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);
  });

Пакет.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"
  }
}

person C. Platz    schedule 14.09.2017    source источник
comment
Файл web.config находится в корне вашего приложения? Какую версию node.js вы используете?   -  person Aaron Chen    schedule 15.09.2017
comment
Версия узла 6.11.2. Да, web.config есть (длинный, но неотредактированный — с использованием версии, которую служба поместила в мой первоначальный zip-файл для непрерывного развертывания.)   -  person C. Platz    schedule 16.09.2017
comment
Вы все еще испытываете эту проблему?   -  person Eric Dahlvang    schedule 18.09.2017
comment
Да, у меня все еще есть эта проблема, и я все еще не могу двигаться дальше с Bot Service, пока она не будет решена. Я тщательно просмотрел документацию и исчерпал очевидные пути.   -  person C. Platz    schedule 18.09.2017
comment
Текущее поведение: бот работает локально, бот не показывает проблемы в списке служб ботов, сообщение отображается как отправленное в веб-консоли, но ответ не получен. Обновление основного Q с ошибкой, которую я обнаружил с помощью потока журнала.   -  person C. Platz    schedule 18.09.2017


Ответы (1)


Потребовалось много копаний, но как только я нашел зарегистрированную ошибку, это привело меня к ветке о проблеме, с которой Bot Service столкнулся на прошлой неделе в среде состояния прототипирования: https://github.com/Microsoft/BotBuilder/issues/3463

Я нашел несколько тупиков, пытаясь запустить собственное хранилище состояний, но эта статья в конечном итоге помогла мне работать: https://docs.microsoft.com/en-us/bot-framework/nodejs/bot-builder-nodejs-state-azure-table-storage

Создал учетную запись хранения Azure, используя приведенную выше статью, чтобы наложить ее на своего бота. Разрывает ссылку на (по-видимому, все еще неработающую) службу управления состоянием прототипирования. После выполнения этого шага веб-чат заработает.

person C. Platz    schedule 18.09.2017