我正在尝试创建一个聊天机器人并在此tutorial上翻滚。按照说明操作,它出错了
'await'不能用作async方法或lambda表达式中的标识符
我的完整.cs代码:
using System;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Connector;
namespace chatbot.Dialogs
{
[Serializable]
public class RootDialog : IDialog<object>
{
public Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);
return Task.CompletedTask;
}
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{
var activity = await result as Activity;
// calculate something for us to return
int length = (activity.Text ?? string.Empty).Length;
// return our reply to the user
await context.PostAsync($"You sent {activity.Text} which was {length} characters");
context.Wait(MessageReceivedAsync);
}
}
}
我是这个Bot应用程序的新手,所以如果我错过了什么,请告诉我。
由于
答案 0 :(得分:1)
你需要把:
public async Task StartAsync(IDialogContext context)
取代
public Task StartAsync(IDialogContext context)
并替换
return Task.CompletedTask;
它看起来像:
using System;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Connector;
namespace chatbot.Dialogs
{
[Serializable]
public class RootDialog : IDialog<object>
{
public async Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);
}
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{
var activity = await result as Activity;
// calculate something for us to return
int length = (activity.Text ?? string.Empty).Length;
// return our reply to the user
await context.PostAsync($"You sent {activity.Text} which was {length} characters");
context.Wait(MessageReceivedAsync);
}
}
}
如果需要更多帮助,请随时恢复
答案 1 :(得分:1)
您的代码看起来很完美,我不认为您的代码引发了该问题。我发现你推荐的教程是2016年后的,可能已经过时了。也许模板的结构/代码已经改变,这引发了你的问题。
请参阅https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-quickstart了解.Net的官方快速入门,并将及时更新。
目前,样本中的所有参考资料都是:
<package id="Autofac" version="3.5.2" targetFramework="net46" />
<package id="Chronic.Signed" version="0.3.2" targetFramework="net46" />
<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.Bot.Builder" version="3.11.0" targetFramework="net46" />
<package id="Microsoft.Bot.Builder.CognitiveServices" version="1.1.1" targetFramework="net46" />
<package id="Microsoft.Bot.Connector" version="3.11.1" targetFramework="net46" />
<package id="Microsoft.IdentityModel.Protocol.Extensions" version="1.0.4.403061554" targetFramework="net46" />
<package id="Microsoft.Rest.ClientRuntime" version="2.3.2" targetFramework="net46" />
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="3.1.0" targetFramework="net46" />
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net46" />
<package id="System.IdentityModel.Tokens.Jwt" version="4.0.4.403061554" targetFramework="net46" />