You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Bot添加成员时无法获取除ID外的成员信息问题求助

核心问题原因

  1. TeamsInfo.GetMemberAsync 是微软Teams渠道专属API,仅在机器人接入Teams渠道时可正常返回完整用户信息,你当前使用的Direct Line + WebChat渠道不支持该接口,调用后仅能获取到用户ID。
  2. 你当前的WebChat初始化配置写法存在错误,用户信息没有按照要求格式传入,导致服务端无法接收到姓名、角色等字段。

解决方案

步骤1:修正WebChat端配置

修正语法错误,同时将用户信息统一放入user配置项中透传给服务端,正确代码如下:

(async function() {
        const secret = 'XXX';
        const res = await fetch('https://directline.botframework.com/v3/directline/tokens/generate', {
            headers: {
            Authorization: `Bearer ${secret}`
            },
            method: 'POST'
        });
        const {token} = await res.json();

        window.WebChat.renderWebChat(
        {
          directLine: window.WebChat.createDirectLine({ token }),
          user: {
            id: 'WebChat_UserId',
            name: 'Web Chat User',
            role: 'user'
          },
          locale: 'en-US'
        },
        document.getElementById('webchat')
      );

      document.querySelector('#webchat > *').focus();

    })().catch(err => console.error(err));

步骤2:调整服务端获取用户信息的逻辑

删除TeamsInfo.GetMemberAsync调用,直接从membersAdded列表的ChannelAccount对象中读取透传过来的用户信息,调整后代码如下:

protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken){
            foreach (var member in membersAdded)
            {
                if (member.Id != turnContext.Activity.Recipient.Id)
                {
                    // 直接读取member对象属性即可拿到WebChat传入的用户信息
                    var userName = member.Name;
                    var userRole = member.Role;
                    var userId = member.Id;

                    var welcomeCard = CreateAdaptiveCardAttachment();
                    var response = MessageFactory.Attachment(welcomeCard, ssml: "Welcome to Bot Framework!");
                    await turnContext.SendActivityAsync(response, cancellationToken);
                    await Dialog.RunAsync(turnContext, ConversationState.CreateProperty<DialogState>("DialogState"), cancellationToken);
                }
            }
        }

补充说明

如果需要传递更多自定义用户属性,可直接在WebChat的user配置项中新增字段,服务端可从ChannelAccount.Properties属性中读取对应值。Direct Line渠道默认不会同步第三方身份体系的用户信息,所有用户属性都需要在前端初始化WebChat时主动传入。


内容的提问来源于stack exchange,提问作者Gianluca R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:39:00