MS Enterprise Bot(V4) - 如何准确地进行程序提及



我真的很厌倦了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不同。

最新更新