C# MS Enterprise Bot(v4)-如何准确地让用户以编程方式提及

C# MS Enterprise Bot(v4)-如何准确地让用户以编程方式提及,c#,.net,botframework,bots,C#,.net,Botframework,Bots,我真的厌倦了微软不完整的文档。几天来,我一直在脑子里胡思乱想,只是为了引起用户的注意。扫描互联网上的代码并尝试合并,但我仍然没有让它工作 var reply = turnContext.Activity.CreateReply($"Test mention <at>@{name}</at>"); var entity = new Entity(); entity.SetAs(new Mention() {

我真的厌倦了微软不完整的文档。几天来,我一直在脑子里胡思乱想,只是为了引起用户的注意。扫描互联网上的代码并尝试合并,但我仍然没有让它工作

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);
var reply=turnContext.Activity.CreateReply($“测试提及{name}”);
var实体=新实体();
entity.SetAs(新名称()
{
Text=$“@{name}”,
已提及=新的ChannelAccount()
{
名称=$“{Name}”,
Id=Id
}
});
if(turnContext.Activity.Entities==null | |!turnContext.Activity.Entities.Any())
{
var list=新列表{entity};
turnContext.Activity.Entities=列表;
}
其他的
turnContext.Activity.Entities.Add(实体);
等待turnContext.SendActivityAsync(回复);
有人想过如何通过编程方式发布/发送/回复用户提及的消息吗


提前谢谢。

很抱歉文档不容易找到。dotnet和Node SDK尚未完全支持提及。但是,这可以通过当前的dotnet SDK实现。编辑:现在这两种SDK都完全支持

您的代码看起来相当不错,只是您将实体添加到
TurnContext
,而不是
reply
我认为这是您的问题)。试试这个,我已经测试过了,效果很好:

var userId=“29:1lpScfExyzx-ASDFASDFASDFASDFASDF_fasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf”;
var userName=“YourName”;
var reply=turnContext.Activity.CreateReply();

reply.Text=$”有额外的文档和方法。它作为Botbuilder SDk的包装器,使一些团队特定的事情变得更容易。请注意,这是一个有点棘手的搜索,与只支持V3机器人不同。

谢谢@mdrichardson-MSFT,我们将立即尝试这一个