我真的很厌倦了Microsoft不完整的文档。我已经bangin了几天,只是为了创建用户提及。扫描互联网以获取一些代码并试图组合,但我仍然没有使它起作用。
var reply = turnContext.Activity.CreateReply($"Test mention <at>@{name}</at>");
var entity = new Entity();
entity.SetAs(new Mention()
{
Text = $"<at>@{name}</at>",
Mentioned = new ChannelAccount()
{
Name = $"{name}",
Id = id
}
});
if (turnContext.Activity.Entities == null || !turnContext.Activity.Entities.Any())
{
var list = new List<Entity> { entity };
turnContext.Activity.Entities = list;
}
else
turnContext.Activity.Entities.Add(entity);
await turnContext.SendActivityAsync(reply);
有人对如何与用户提及的编程发布/发送/回复消息有想法?
预先感谢。
我道歉,文档并不容易找到。提到的尚未完全支持Dotnet和Node SDK。但是,这可能与当前的dotnet SDK一起进行。编辑:现在在两个SDKS中都完全支持
您的代码看起来不错,除了您将实体添加到TurnContext
,而不是reply
I Think think 这是您的问题(。尝试一下,我已经测试并有效:
var userId = "29:1lpScfExyzx-asdfasdfasdfasdf_fasdfasdfasdfasdfasdfasdfasdfasdfasdf";
var userName = "YourName";
var reply = turnContext.Activity.CreateReply();
reply.Text = $"<at>{ userName }</at> testing....";
var mentioned = new ChannelAccount()
{
Id = userId,
Name = userName
};
var entity = new Mention()
{
Mentioned = mentioned,
Text = $"<at>{ userName }</at>",
};
reply.Entities = new List<Entity>() { entity };
await turnContext.SendActivityAsync(reply);
确保reply.Text
包含entity.Text
否则它将不起作用(在示例中,<at>{ userName }</at>
都在两者中(。
如果您遇到问题,Visual Studio不会提供太多的错误信息。但是,如果您打开Azure>您的Web应用程序bot>频道并查看团队频道问题,它将提供更多有关可能出了什么问题的信息。
团队还拥有一个Botbuilder Teams dotnet SDK,其中包含其他文档和方法。它是围绕Botbuilder SDK的包装纸,使一些特定于团队的事情变得更加容易。请注意,这是一个棘手的搜索,与仅支持V3 bot的SDK不同。