我正在尝试将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中发现错误
答案 0 :(得分:0)
添加Microsoft.Bot.Builder.Solutions
和Microsoft.Bot.Builder.Skills
NuGet程序包。
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
现在,您可以更新控制器以从包含SkillController
和api/skill/messages
端点的api/skill/manifest
派生。
[ApiController]
public class BotController : SkillController
{
public BotController(IServiceProvider serviceProvider, BotSettingsBase botSettings)
: base(serviceProvider, botSettings)
{ }
}