OfficeDev / microsoft-teams-apps-stickers

The awesome Stickers app can help your organization enhance messaging in Microsoft Teams!
MIT License
67 stars 42 forks source link

Get ms team user info #60

Open zqbe opened 2 years ago

zqbe commented 2 years ago

Hi Team,

we want to capture the MS team user info in app insights. I have added the code below but

private void LogActivityTelemetry(Activity activity) { var fromObjectId = activity.From?.Properties["aadObjectId"]?.ToString(); var fromTeamsId = activity.From?.Properties["id"]?.ToString(); var fromName = activity.From?.Properties["name"]?.ToString(); var clientInfoEntity = activity.Entities?.Where(e => e.Type == "clientInfo")?.FirstOrDefault(); var channelData = (JObject)activity.ChannelData;

        var properties = new Dictionary<string, string>
        {
            { "ActivityId", activity.Id },
            { "ActivityType", activity.Type },
            { "ActivityName", activity.Name },
            { "UserAadObjectId", fromObjectId },
            { "UserName",  string.IsNullOrEmpty(fromName)? "empty": fromName },
            { "UserTeamsId", fromTeamsId },
            {
                "ConversationType",
                string.IsNullOrWhiteSpace(activity.Conversation?.ConversationType) ? "personal" : activity.Conversation.ConversationType
            },
            { "TeamId", channelData?["team"]?["id"]?.ToString() },
            { "SourceName", channelData?["source"]?["name"]?.ToString() },
            { "Locale", clientInfoEntity?.Properties["locale"]?.ToString() },
            { "Platform", clientInfoEntity?.Properties["platform"]?.ToString() }
        };
        this.telemetryClient.TrackEvent("UserActivity2", properties);
    }

but the userName is always empty. Can you please advise?