【发布时间】:2019-01-21 12:13:01
【问题描述】:
我正在尝试使用 Teams 中的 Microsoft Bot Framework 将消息转发给选定的用户。 该功能在 Bot Emulator 中按预期工作,但在我的组织中使用 Teams(使用有效用户 ID)对其进行测试时
消息作为 Bot 直接发送给用户。
IMessageActivity newMessage = Activity.CreateMessageActivity();
newMessage.Type = ActivityTypes.Message;
newMessage.From = new ChannelAccount("Impersonated User ID", "Impersonated User Name");
newMessage.Conversation = context.Activity.Conversation;
newMessage.Recipient = new ChannelAccount("Recipient ID");
//newMessage.From.Name = "Stephane Fornaroli";
newMessage.ReplyToId = context.Activity.From.Id;
newMessage.Text = text;
await context.PostAsync(newMessage);
这也适用于频道对话,用于将消息转发到指定频道:
var messagee = JsonConvert.DeserializeObject<ConversationReference>(conversationReference).GetPostToBotMessage();
var channelData = context.Activity.ChannelData;
var message = Activity.CreateMessageActivity();
message.Text = text;
message.From = new ChannelAccount("Impersonated User ID", "Impersonated User Name");
var conversationParameters = new ConversationParameters
{
IsGroup = true,
ChannelData = channelData,
Activity = (Activity)message
};
var connectorClient = new ConnectorClient(new Uri(messagee.ServiceUrl));
await connectorClient.Conversations.CreateConversationAsync(conversationParameters);
【问题讨论】:
-
为了清楚起见,您是否尝试让用户 A 向机器人发送消息,然后机器人将消息“转发”给用户 B,但让它看起来好像消息来自用户一个?如果是这样,这是 Teams 中的故意限制,以防止机器人冒充一个人。或者,您可以让您的 Bot 将其作为 Bot 发送,但消息类似于“来自
的消息: ” -
是的,您对场景的看法是正确的。但是接下来我如何使用机器人来调度来自用户 A 和 C 的呼叫,以将其转发给可以接听他们的用户 B。
-
您描述的场景是正确的:(用户 A 向 Bot 发送消息,然后 bot 将消息“转发”给用户 B,但使其看起来好像消息来自用户A) 此功能在 Teams 中锁定的原因是什么?这种情况在 Skype for Business 中是可能的,并且随着 Microsoft 正在推动其客户从 Skype4B 迁移到 Teams,我们希望 Teams 能够涵盖相同的情况。
-
MSFT 不希望机器人能够出于透明度/隐私/安全原因冒充用户。我想在 SfB 中,这不是故意允许的。 (现在,机器人框架几乎不支持 SfB,仅供参考)。
-
This docs page 应该可以帮助您设置具有 Skype 功能的 MS 团队机器人,但由于它偏离主题,如果您遇到麻烦,应该提出自己的 StackOverflow 问题。
标签: c# botframework microsoft-teams