BotFramework Composer, ошибка 404 при обратном вызове навыка
Действия по воспроизведению:
Шаг 1:
Создайте бота с помощью композитора (версия 1.0.0 установлена из DMG на Mac), выбрав шаблон Echo Bot.
Шаг 2:
Образец умения клонировать эхо из текущего репозитория: https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/python/80.skills-simple-bot-to-bot
Шаг 3:
Запустите навык локально.
Шаг 4:
Подключиться к навыку:
Конечная точка на картинке с портом 3980, но при последних попытках основной бот обслуживается композитором текущего бота. Дело в том, что я установил URL-адрес обратного вызова как URL-адрес, на котором работает основной бот.
Шаг 5:
Добавьте умение в диалог неизвестного намерения, после эхо-ответа:
Ошибка:
Я устраняю ошибку на уровне навыков. После отладки навыка я обнаружил, что проблема заключается в обратном вызове, который возвращает ошибку 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 ответ
Вы можете увидеть в документации, что ваши навыки хозяина конечной точки должна заканчиватьсяapi/skills
и не только api
:
Выберите Навыки в меню композитора. На странице навыков, если ваш навык удаленный, введите
<ngrok address>/api/skills
в поле Конечная точка хоста навыков. Если ваш навык местный, вам следует ввестиlocalhost:port/api/skills
в поле Конечная точка хоста навыков.
Конечная точка хоста навыка используется в качестве URL-адреса службы в действиях, отправляемых навыку, что означает, что это будет базовый URI для любых методов API разговоров, которые вызывает навык. Если ваш навык пытается отправить запросы на несуществующий URL-адрес, вы должны ожидать получения 404-х адресов. Бот Composer будет перенаправлять запросы на маршруты, начинающиеся сapi/skills
так что это то, что вы должны указать в URL-адресе вашей службы.