Bot framework 412 “The data is change” when connect with Luis

馋奶兔 提交于 2019-12-25 05:19:17

问题


I have a simple bot with help of Luis. It's very basic code and I don't know why I get 412 error after I past message to Luis intent. My code look like:

MessageController:

if (activity.Type == ActivityTypes.Message)
{
    // Get any saved values
    StateClient sc = activity.GetStateClient();
    await sc.BotState.GetUserDataAsync(activity.ChannelId,activity.From.Id);

    var haveGreeting = userData.GetProperty<bool>("HaveGreeting");
    // Create text for a reply message   
    StringBuilder strReplyMessage = new StringBuilder();
    if (haveGreeting == false)
    {
        strReplyMessage.Append($"Hi, how are you today?");
        userData.SetProperty("HaveGreeting", true);
    }
    else
    {
        await Conversation.SendAsync(activity, () => new MeBotLuisDialog());
    }

    // Save BotUserData
    var botaData = await sc.BotState.SetUserDataAsync(activity.ChannelId,
        activity.From.Id, userData);
    // Create a reply message
    ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
    Activity replyMessage = activity.CreateReply(strReplyMessage.ToString());
    await connector.Conversations.ReplyToActivityAsync(replyMessage);
}

Luis intent:

[LuisIntent("HowAreYou")]
public async Task HowAreYou(IDialogContext context, IAwaitable<IMessageActivity> activity, LuisResult result)
{
    await context.PostAsync("Great! Thank for asking");
    context.Wait(MessageReceived);
}

Please help!


回答1:


Try adding the following code in your Global.asax.cs file

var builder = new ContainerBuilder();
builder
    .Register(c => new CachingBotDataStore(c.Resolve<ConnectorStore>(), CachingBotDataStoreConsistencyPolicy.LastWriteWins))
    .As<IBotDataStore<BotData>>()
    .AsSelf()
    .InstancePerLifetimeScope();
builder.Update(Conversation.Container);

And please, review the relevant technical FAQs around this issue:

  • What is an ETag? How does it relate to bot data bag storage?
  • What causes “precondition failed” (412) or “conflict” (409) HTTP errors?
  • How can I fix “precondition failed” (412) or “conflict” (409) HTTP errors?


来源:https://stackoverflow.com/questions/42967003/bot-framework-412-the-data-is-change-when-connect-with-luis

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!