3

重现步骤:

步骤1:

使用 composer(在 mac 上从 DMG 安装 v1.0.0)创建一个机器人,选择 Echo Bot 模板。

第2步:

从当前 repo 克隆 echo 技能示例: 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'

有人遇到过同样的问题吗?

4

1 回答 1

1

您可以在文档中看到您的技能主机端点需要结束,api/skills而不仅仅是api

从作曲家菜单中选择技能。​​能页面中,如果您的技能是远程的,请<ngrok address>/api/skills技能主机端点字段中输入。如果您的技能是本地的,您应该localhost:port/api/skills技能主机端点字段中输入。

技能主机端点用作发送到技能的活动中的服务 URL,这意味着它将是技能调用的任何对话 API 方法的基本 URI。如果您的技能尝试向不存在的 URL 发送请求,那么您应该期望得到 404。Composer 机器人会将请求路由到以 开头的路由,api/skills因此您应该将其放入服务 URL。

于 2020-06-02T20:08:00.280 回答