Можно ли установить метаданные беседы для беседы без ответа?

В Microsoft Bot Framework можно установить метаданные беседы в ответном сообщении с помощью (задокументировано на http://docs.botframework.com/connector/tracking-bot-state):

// Set a property on the BotUserData 
public static void SetBotUserData(this Message message, string property, object data)

// Set a property on the BotConversationData 
public static void SetBotConversationData(this Message message, string property, object data)

// Set a property on the BotPerUserInConversationData 
public static void SetBotPerUserInConversationData(this Message message, string property, object data)

Однако это работает только в том случае, если ответное сообщение отправлено обратно. Можно ли установить состояние разговора, не отвечая на сообщение?


person sumitgouthaman    schedule 30.05.2016    source источник


Ответы (2)


Я нашел обходной путь.

Просто сделать что-то вроде:

var reply = message.CreateReplyMessage(null);
reply.SetBotConversationData("MyData", myData);
return reply;

Это работает. Бот не отвечает, и в разговоре устанавливается состояние. Хотя не уверен, что это хороший способ.

person sumitgouthaman    schedule 02.06.2016

Это. Вам понадобится botId, userId и сообщение. Вы можете сделать следующее:

using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, message))
{
    var client = scope.Resolve<IConnectorClient>();

    var data = await client.Bots.GetUserDataAsync(botId, userId);

    data.SetProperty("key", "value");

    await client.Bots.SetUserDataAsync(botId, userId, data);
}
person Ezequiel Jadib    schedule 31.05.2016