我的情况是向用户的会话发送事件或消息,以检查他是否处于活动状态。 我已经有sessionId,Bot频道帐户和用户连接详细信息。 我遵循与here相同的步骤。
所看到的问题是,无论用户是否处于活动状态,我始终会获得ConversationId作为响应,这无助于我确定会话的可用性。我认为,如果会话不可用,我的事件或消息将被忽略。
有人可以帮我吗?
添加更多信息:
我的要求是更新所有非活动用户的状态。 我有这些用户所属的会话的所有各个会话ID。 为了确定用户是否仍在进行网络聊天(也就是说,他还没有关闭网络聊天窗口),我通过提供我们在该会话中拥有的sessionId来将事件活动从机器人发送到该用户的会话。 下面是示例代码段。
var eventActivity = Activity.CreateEventActivity();
eventActivity.From = user.Bot.ChannelAccount;
eventActivity.Recipient = user.Connection.ChannelAccount;
eventActivity.Conversation = user.Connection.ConversationAccount;
eventActivity.Value = userSession;
eventActivity.Name = message.Name;
var connector = new ConnectorClient(new Uri(user.Connection.ServiceLink));
var response = await connector.Conversations.SendToConversationAsync((Activity)eventActivity).ConfigureAwait(false);
userSession此处包含两个属性UPN和ConversationId,它们唯一地标识会话。 此外,此UserSession的ConversationId与user.Connection.ConversationAccount.ConversationId相同。 下图包含User.Bot和user.Connection对象。