BotFramework Composer, ошибка 404 при обратном вызове навыка - PullRequest
3 голосов
/ 25 мая 2020

Шаги для воспроизведения:

Шаг 1:

Создайте бота, используя composer (v1.0.0, установленная из DMG на ma c), выбрав шаблон Echo Bot.

Шаг 2:

Клонировать образец умения эхо из текущего репо: https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/python/80.skills-simple-bot-to-bot

Шаг 3:

Запустить умение локально .

Шаг 4:

Подключение к навыку:

enter image description here

Конечная точка на картинке с портом 3980 но это связано с тем, что в последних попытках основной бот обслуживался composer текущим ботом. Дело в том, что я установил URL-адрес обратного вызова как URL-адрес, на котором работает основной бот.

Шаг 5:

Добавить навык в диалог неизвестного намерения, после эхо-ответа: enter image description here

Ошибка:

Я снимаю ошибку со стороны навыков. После отладки навыка я обнаружил, что проблема заключается в обратном вызове, который возвращает ошибку 404 обратно навыку при отправке активности.

uring handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victorvasiliev/PycharmProjects/BotBuilder-Samples/samples/python/80.skills-simple-bot-to-bot/echo-skill-bot/adapter_with_error_handler.py", line 71, in _send_eoc_to_parent
    await turn_context.send_activity(end_of_conversation)
  File "/usr/local/lib/python3.7/site-packages/botbuilder/core/turn_context.py", line 170, in send_activity
    result = await self.send_activities([activity_or_text])
  File "/usr/local/lib/python3.7/site-packages/botbuilder/core/turn_context.py", line 217, in send_activities
    return await self._emit(self._on_send_activities, output, logic())
  File "/usr/local/lib/python3.7/site-packages/botbuilder/core/turn_context.py", line 295, in _emit
    return await logic
  File "/usr/local/lib/python3.7/site-packages/botbuilder/core/turn_context.py", line 212, in logic
    responses = await self.adapter.send_activities(self, output)
  File "/usr/local/lib/python3.7/site-packages/botbuilder/core/bot_framework_adapter.py", line 686, in send_activities
    raise error
  File "/usr/local/lib/python3.7/site-packages/botbuilder/core/bot_framework_adapter.py", line 672, in send_activities
    activity.conversation.id, activity.reply_to_id, activity
  File "/usr/local/lib/python3.7/site-packages/botframework/connector/aio/operations_async/_conversations_operations_async.py", line 533, in reply_to_activity
    raise models.ErrorResponseException(self._deserialize, response)
botbuilder.schema._models_py3.ErrorResponseException: Operation returned an invalid status code 'Not Found'

Кто-нибудь сталкивался с такой же проблемой?

1 Ответ

1 голос
/ 02 июня 2020

Вы можете видеть в документации , что конечная точка хоста навыков должна заканчиваться api/skills, а не только api:

Выберите Навыки из меню Composer. На странице Навыки , если ваш навык удален, введите <ngrok address>/api/skills в Конечная точка хоста навыков . Если ваш навык является локальным, вы должны ввести localhost:port/api/skills в поле Конечная точка хоста навыков .

Конечная точка хоста навыка используется в качестве URL-адреса службы в действиях, отправляемых навыку , что означает, что это будет базовый URI для любых методов API разговоров, которые вызывает навык. Если ваш навык пытается отправлять запросы на несуществующий URL-адрес, вы должны ожидать получения 404-х адресов. Бот Composer будет перенаправлять запросы на маршруты, начинающиеся с api/skills, так что вы должны указать это в URL-адресе своей службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...