Я не верю, что ты можешь.Обычно вы делаете что-то подобное, передавая значения через Activity.ChannelData
, но ChannelData
не существует в ConversationReference
.
В комментариях ниже @Ryan указал, что вы можете передатьданные по ConversationAccount.Properties
.Обратите внимание, однако, что в настоящее время это доступно только в C # SDK.Я открыл проблему , чтобы перенести это в Node SDK, но ETA на данный момент неизвестна.
Вместо этого я бы предложил использовать нечто более родное для C #, например:
- Создать
ConcurrentDictionary
private ConcurrentDictionary<string, string> _idMap;
Карта
MySpecialId
на
Conversation.Id
(в вашей функции Get)
_idMap.AddOrUpdate(conversationReference.Conversation.Id, MySpecialId, (key, newValue) => MySpecialId);
Доступ к
MySpecialId
из
Activity.Conversation.Id
(в BotCallback)
var ConversationState = await MyConversationState.GetAsync(turnContext, () => new MyConversationData(), cancellationToken);
ConversationState.MySpecialId = _idMap.GetValueOrDefault(turnContext.Activity.Conversation.Id);
Сохранить
ConversationState
await ConversationState.SaveChangesAsync(turnContext, false, cancellationToken);
Есть и другие способы, которыми вы могли бы сделать это, и некоторые проверки правильности, которые вам нужно добавить, но это должно помочь вам начать.