我已经建立了一个在asp.net core中运行的Microsoft Bot Framework Instance,我已经使用Microsoft的Bot Channels注册连接到Slack。我已经使用微软的Bot Channels注册连接到Slack。
在我的机器人代码中,我有这样的内容。
protected override async Task OnMessageActivityAsync(
ITurnContext<IMessageActivity> turnContext,
CancellationToken cancellationToken)
{
var message = $"From: {turnContext.Activity.From.Name})";
await turnContext.SendActivityAsync(message, cancellationToken: cancellationToken);
}
总是返回 "From: BotName". 我希望 From.Name
将是机器人所回复的消息发送者的名字。
有没有办法获得发件人的用户名?我可以看到正确的懈怠用户ID在 turnContext.Activity.ChannelData
但我认为我可以通过正常的机器人框架API来实现。
的方式 turnContext.Activity.From.Name
你用来获取发件人姓名的方法是正确的。我认为这是获取发件人姓名的最好方法。
根据 ITurnContext<IMessageActivity> turnContext
我们可以检查这个IMessageActivity对象的属性,最后只有 turnContext.Activity.From.Name
符合我们的要求。
而你也想从 顶端 是可用的。从下图可以看到会员的信息。通过官方文档中的api,我们可以通过以下方式获取指定活动的成员信息。GET /v3/conversations/{conversationId}/activities/{activityId}/members
.
请看这个问题的答案 此处. 本质上,有一种选择是使用channeldata附带的slack API令牌,进行额外的调用回到slack中来检索你需要的东西。OP还发现他们可以使用node中的session对象,但我无法完成这个途径。