Я следую учебному пособию по Azure EchoBot для добавления состояний, и у меня возникла проблема с запуском бота в эмуляторе Bot Framework. (Бот может подключиться. EchoBot без каких-либо модификаций будет работать нормально). Это то, что я добавил в функцию ConfigureServices в моем Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
// Create the Bot Framework Adapter.
services.AddSingleton<IBotFrameworkHttpAdapter, AdapterWithErrorHandler>();
//// Create the User state
services.AddSingleton<UserState>();
//// Create the Conversation State
services.AddSingleton<ConversationState>();
// Create the bot as a transient. In this case the ASP Controller is expecting an IBot.
services.AddTransient<IBot, EchoBot>();
}
Это то, что я добавил в EchoBot.cs
private readonly BotState _userState;
private readonly BotState _conversationState;
public EchoBot (ConversationState conversationState, UserState userState)
{
_conversationState = conversationState;
_userState = userState;
}
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
var conversationStateAccessors = _conversationState.CreateProperty<ConversationFlow>(nameof(ConversationFlow));
var flow = await conversationStateAccessors.GetAsync(turnContext, () => new ConversationFlow());
var userStateAccessors = _userState.CreateProperty<UserProfile>("User");
var profile = await userStateAccessors.GetAsync(turnContext, () => new UserProfile());
await _conversationState.SaveChangesAsync(turnContext);
await _userState.SaveChangesAsync(turnContext);
await turnContext.SendActivityAsync(MessageFactory.Text($"Echo: {turnContext.Activity.Text}"), cancellationToken);
}
Ошибка, которую я получаю в эмуляторе, это просто POST 500 directline.conversationUpdate, и это скриншот ошибки, которую я получаю с консоли бота:
Спасибо! Если потребуется какое-либо разъяснение, я сделаю все возможное, чтобы обновить его.