我正在尝试使用具有以下代码的Teams SDK从机器人向团队发送主动1:1消息
MicrosoftAppCredentials.TrustServiceUrl(turnContext.Activity.ServiceUrl);
var connectorClient = new ConnectorClient(new Uri(turnContext.Activity.ServiceUrl), Configuration["MicrosoftAppId"], Configuration["MicrosoftAppPassword"]);
var userId = _operation.MemberTeamsId;
var tenantId = Configuration["TenantId"];
var parameters = new ConversationParameters
{
Members = new[] { new ChannelAccount(userId) },
ChannelData = new TeamsChannelData
{
Tenant = new TenantInfo(tenantId),
},
};
var conversationResource = await connectorClient.Conversations.CreateConversationAsync(parameters);
var message = Microsoft.Bot.Schema.Activity.CreateMessageActivity();
message.Text = _operation.Message;
await connectorClient.Conversations.SendToConversationAsync(conversationResource.Id, (Microsoft.Bot.Schema.Activity)message);
我对此有以下问题,
除非用户在部署后进行了事先对话,否则漫游器无法发送主动消息
Bot部署
Bill to Bot-Works
凭单付款-工作
重新部署机器人
按期付款-无法使用,因为重新部署后现在对话中没有成员
Bill to Bot-Works
Bot to Bill-现在工作,因为Bill在重新部署后进行了对话
Bot向用户多次发送相同的消息
Bill to Bot-Works
按期付款-主动工作-正确发送1条定义的消息
Sim to Bot-Works
Bot到Sim-发送2条相同的消息,因为现在对话中有两个成员
愿意机器人-工作
向遗嘱求助-发送3条相同的消息,因为现在对话中有3位成员
注意:我正在将Teams用户ID存储在数据库中,并使用它们将直接消息发送给用户
任何有关如何纠正此问题的帮助将不胜感激。谢谢。
答案 0 :(得分:1)
根据评论中的答案,我认为我对场景的理解更好,并且我觉得问题在于您无论如何都没有设置会话ID-尽管您告诉Bot哪个用户< / em>,您需要知道是否要直接 (即1-1)与他们互动,或者是在某个地方或团队频道中作为群聊的一部分。< / p>
您需要通过在Activity实例上配置“对话”属性(在您的情况下为“ message”变量)来进行设置。有关更多详细信息,请参见此处的我的信息:Programmatically sending a message to a bot in Microsoft Teams 希望有帮助-如果没有,请告诉我