C# 如何在Bot框架下将消息从Bot发送到多个客户端

C# 如何在Bot框架下将消息从Bot发送到多个客户端,c#,.net,botframework,C#,.net,Botframework,欢迎每一个人!我是Microsoft Bot Framework的新手,我想知道如何将消息从Bot发送到多个客户端(不使用聊天组)?请给我一些建议。谢谢 还有一个问题是,当客户端关闭浏览器时,我们如何保存Bot和客户端之间的对话,以便在客户端下次返回时检索对话? 阅读完这些文档后,我认为有一种方法可以向多个客户端发送电子邮件 但我认为您可以在for循环中使用CreateDirectConversation()方法,迭代您的用户帐户。这将启动与所有用户帐户的1:1对话。取自 开始对话 要启动对话

欢迎每一个人!我是Microsoft Bot Framework的新手,我想知道如何将消息从Bot发送到多个客户端(不使用聊天组)?请给我一些建议。谢谢 还有一个问题是,当客户端关闭浏览器时,我们如何保存Bot和客户端之间的对话,以便在客户端下次返回时检索对话?

阅读完这些文档后,我认为有一种方法可以向多个客户端发送电子邮件

但我认为您可以在for循环中使用
CreateDirectConversation()
方法,迭代您的用户帐户。这将启动与所有用户帐户的1:1对话。

取自


开始对话 要启动对话,您需要调用
CreateConversation()
CreateDirectConversation()
方法从频道获取
ConversationAccount
记录。一旦您拥有了
ConversationAccount
,就可以在对
SendToConversation()
的消息调用中使用它


创建1:1对话
CreateDirectConversation()
方法用于在bot和用户之间创建一个私人的1:1对话

要初始化
ConnectorClient
,请使用以前消息中保留的
ServiceUrl

例如:

var userAccount = new ChannelAccount(name: "Larry", id: "@UV357341");
var connector = new ConnectorClient(new Uri(incomingMessage.ServiceUrl));
var conversationId = await connector.Conversations.CreateDirectConversationAsync(botAccount, userAccount);
IMessageActivity message =  Activity.CreateMessageActivity();
message.From = botAccount;
message.Recipient = userAccount;
message.Conversation = new ConversationAccount(id: conversationId.Id);
message.Text = "Hello";
message.Locale = "en-Us";
await connector.Conversations.SendToConversationAsync((Activity)message); 
var connector = new ConnectorClient(new Uri(incomingMessage.ServiceUrl));
List<ChannelAccount> participants = new List<ChannelAccount>();
participants.Add(new ChannelAccount("joe@contoso.com", "Joe the Engineer"));
participants.Add(new ChannelAccount("sara@contso.com", "Sara in Finance"));
ConversationParameters cpMessage = new ConversationParameters(message.Recipient, true, participants, "Quarter End Discussion");
var conversationId = await connector.Conversations.CreateConversationAsync(cpMessage);
IMessageActivity message = Activity.CreateMessageActivity();
message.From = botAccount;
message.Recipient = new ChannelAccount("lydia@contoso.com", "Lydia the CFO"));
message.Conversation = new ConversationAccount(id: conversationId.Id);
message.ChannelId = incomingMessage.ChannelId;
message.Text = "Hey, what's up everyone?";
message.Locale = "en-Us";
await connector.Conversations.SendToConversationAsync((Activity)message);

创建小组对话
CreateConversation()
方法用于创建新的组对话

注意:目前,电子邮件是唯一支持机器人发起的群组对话的渠道

例如:

var userAccount = new ChannelAccount(name: "Larry", id: "@UV357341");
var connector = new ConnectorClient(new Uri(incomingMessage.ServiceUrl));
var conversationId = await connector.Conversations.CreateDirectConversationAsync(botAccount, userAccount);
IMessageActivity message =  Activity.CreateMessageActivity();
message.From = botAccount;
message.Recipient = userAccount;
message.Conversation = new ConversationAccount(id: conversationId.Id);
message.Text = "Hello";
message.Locale = "en-Us";
await connector.Conversations.SendToConversationAsync((Activity)message); 
var connector = new ConnectorClient(new Uri(incomingMessage.ServiceUrl));
List<ChannelAccount> participants = new List<ChannelAccount>();
participants.Add(new ChannelAccount("joe@contoso.com", "Joe the Engineer"));
participants.Add(new ChannelAccount("sara@contso.com", "Sara in Finance"));
ConversationParameters cpMessage = new ConversationParameters(message.Recipient, true, participants, "Quarter End Discussion");
var conversationId = await connector.Conversations.CreateConversationAsync(cpMessage);
IMessageActivity message = Activity.CreateMessageActivity();
message.From = botAccount;
message.Recipient = new ChannelAccount("lydia@contoso.com", "Lydia the CFO"));
message.Conversation = new ConversationAccount(id: conversationId.Id);
message.ChannelId = incomingMessage.ChannelId;
message.Text = "Hey, what's up everyone?";
message.Locale = "en-Us";
await connector.Conversations.SendToConversationAsync((Activity)message);
var connector=newconnectorclient(新Uri(incomingMessage.ServiceUrl));
列表参与者=新列表();
参与者。添加(新的渠道帐户(“joe@contoso.com“,”工程师乔“);
参与者。添加(新的渠道帐户(“sara@contso.com(“金融界的莎拉”);
ConversationParameters cpMessage=新的会话参数(message.Recipient,true,参与者,“季度末讨论”);
var conversationId=wait connector.Conversations.CreateConversationAsync(cpMessage);
IMessageActivity message=Activity.CreateMessageActivity();
message.From=botAccount;
message.Recipient=新的ChannelAccount(“lydia@contoso.com“,”首席财务官莉迪亚“);
message.Conversation=新的ConversationAccount(id:conversationId.id);
message.ChannelId=incomingMessage.ChannelId;
message.Text=“大家好吗?”;
message.Locale=“en-Us”;
等待connector.Conversations.SendToConversationAsync((活动)消息);

chk out这个链接实际上,我并不打算创建聊天组。我的情况是客户端与我的机器人聊天,我希望我的机器人将此消息转发到另一个web应用程序。@JustinJT然后你应该在问题中清楚地说出来。好的,谢谢你的帮助,这打开了我的心扉。如果客户端再次返回,我们如何在客户端关闭浏览器之前保存对话,以便检索以前的对话?你知道吗?@JustinJT如果你愿意,我可以更新答案。也许你可以编辑你的问题?我刚做了这是个好主意,谢谢你的朋友!