2017-03-23 2 views
0

私はLuisの助けを借りて簡単なボットを持っています。それは非常に基本的なコードなので、私はLuisの意図にメッセージを伝えた後になぜ412エラーが発生するのかわかりません。私のコードのようになります。ボットフレームワーク412 Luisと接続すると "データが変わります"

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); 
} 

ルイス意図:

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

助けてください!あなたのGlobal.asax.csファイルに次のコードを追加し

+0

エミュレータでこれが失敗していますか? –

+0

いいえ、テスト用にこのボットを公開しましたが、まだこの問題が発生しています –

+0

http://stackoverflow.com/questions/42860020/microsoft-bot-framework-exception-the-data-is-changed/42913460#42913460 – Artem

答えて

1

てみ

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

そして、この問題の周りに関連する技術のFAQ確認してください:

関連する問題