簡體   English   中英

如何在Azure數據存儲和MS Bot Framework中使用(獲取和設置)用戶數據?

[英]How to use (get and set) user data with Azure Data Storage and MS Bot Framework?

我在MS Bot Framework項目中使用Azure存儲。 我已經在本文中了解了該漫游器中服務的配置,並且已經將其正確地應用於了我的項目。 我知道有這些原語用於訪問和使用對話/用戶/ ...數據( 在此進行描述)。 問題在於最后一頁中描述的方法都是過時且無用的。 我想知道是否有辦法在Azure存儲中使用這些舊方法,或者有類似的方法使用它,或者我被迫使用原始的Azure存儲方法來訪問此數據(如this ),因為在MS文檔我只找到了如何配置存儲而沒有找到如何使用它。

您可以使用3個數據databags來存儲狀態數據。 它們生活在context對象中。 它們是UserDataConversationDataPrivateConversationData

至於如何訪問它們(獲取/設置),這取決於您嘗試從何處獲取數據。 如果您在消息控制器中(無法訪問上下文對象),則必須執行以下操作:

var message = activity as IMessageActivity;
using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, message))
{
    var botDataStore = scope.Resolve<IBotDataStore<BotData>>();
    var key = Address.FromActivity(message);

    ConversationReference r = new ConversationReference();
    var userData = await botDataStore.LoadAsync(key, BotStoreType.BotUserData, CancellationToken.None);

    //set state data
    userData.SetProperty("key 1", "value1");
    userData.SetProperty("key 2", "value2");
    //get state data
    userData.GetProperty<string>("key 1");
    userData.GetProperty<string>("key 2");

    await botDataStore.SaveAsync(key, BotStoreType.BotUserData, userData, CancellationToken.None);
    await botDataStore.FlushAsync(key, CancellationToken.None);
}

在對話框中或當您有權訪問上下文對象時,它就像

context.UserData.SetValue("KEY ONE", "value1");
context.UserData.GetValue<string>("KEY ONE");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM