将v4机器人转换为自定义技能时缺少技能清单终点

时间:2019-10-31 07:26:08

标签: c# botframework

我正在尝试将v4机器人转换为自定义技能。具有所有文件的机器人正在按预期工作。但是它缺少将技能连接到虚拟助手所需的 / api / skill / manifest 端点。

更新问题

在BotController.cs文件中进行更改后,我的机器人抛出了 $allmarketers = ProductStock::take(3)->get()[2];

在编辑BotControler.cs文件之前,是这样的

post 500 directline.PostACtivity error

像这样更改后,机器人没有响应

[Route("api/messages")]
    [ApiController]
    public class BotController : ControllerBase
    {
        private readonly IBotFrameworkHttpAdapter Adapter;
        private readonly IBot Bot;

        public BotController(IBotFrameworkHttpAdapter adapter, IBot bot)
        {
            Adapter = adapter;
            Bot = bot;
        }

        [HttpPost]
        public async Task PostAsync()
        {
            // Delegate the processing of the HTTP POST to the adapter.
            // The adapter will invoke the bot.
            await Adapter.ProcessAsync(Request, Response, Bot);
        }
    } 

也在BotController.cs中发现错误

enter image description here

1 个答案:

答案 0 :(得分:0)

添加软件包

添加Microsoft.Bot.Builder.SolutionsMicrosoft.Bot.Builder.Skills NuGet程序包。

创建一个SkillAdapter

public class MySkillAdapter : SkillAdapter
{
    public MySkillAdapter(
        BotSettings settings,
        ICredentialProvider credentialProvider,
        BotStateSet botStateSet,
        ResponseManager responseManager,
        IBotTelemetryClient telemetryClient,
        UserState userState) : base(credentialProvider)
    {
        //
        Use(new SkillMiddleware(userState));
    }
}

Startup.cs

添加瞬变
services.AddTransient<IBotFrameworkHttpAdapter, DefaultAdapter>();
services.AddTransient<SkillAdapter, MySkillAdapter>();

更新BotController.cs

现在,您可以更新控制器以从包含SkillControllerapi/skill/messages端点的api/skill/manifest派生。

[ApiController]
public class BotController : SkillController
{
  public BotController(IServiceProvider serviceProvider, BotSettingsBase botSettings)
      : base(serviceProvider, botSettings)
  { }
}