Skip to main content

Get Chat Members

Retrieves all members (participants) of a specific Microsoft Teams chat.

Common Properties

  • Name - The custom name of the node.
  • Color - The custom color of the node.
  • Delay Before (sec) - Waits in seconds before executing the node.
  • Delay After (sec) - Waits in seconds after executing node.
  • Continue On Error - Automation will continue regardless of any error. The default value is false.
info

If ContinueOnError property is true, no error is caught when the project is executed even if Catch node is used.

Input

  • Client Id - The client ID from the Connect node. Optional if using direct credentials.
  • Chat Id - The unique identifier of the chat to get members from (required).

Output

  • Members - Collection of chat members containing:
    • value - Array of member objects
    • Each member has:
      • Id - Member identifier
      • DisplayName - Member's display name
      • Email - Member's email address (if available)
      • Roles - Member roles in the chat
      • UserId - Azure AD user ID

Options

  • Credentials - OAuth2 credentials JSON (optional if using Client ID). Allows direct authentication without Connect node.

Examples

List All Chat Members

Get all participants in a chat:

chat_id = "19:meeting_abc123..."

// Get Chat Members node
// Output: members collection

members_list = members.value

console.log("Chat has " + members_list.length + " members:")
for (member of members_list) {
console.log("- " + member.DisplayName)
console.log(" Email: " + member.Email)
}

Check if User is in Chat

Verify specific user is chat participant:

chat_id = "19:meeting_abc123..."
target_email = "john.doe@company.com"

// Get Chat Members node
members = message.members.value

// Check if user exists
is_member = members.some(m =>
m.Email === target_email
)

if (is_member) {
console.log("User is in chat")
// Proceed with operation
} else {
console.log("User not found in chat")
}

Get Member Count

Count participants in chat:

chat_id = "19:meeting_abc123..."

// Get Chat Members node
members = message.members.value

member_count = members.length

if (member_count > 10) {
console.log("Large group chat with " + member_count + " members")
} else {
console.log("Small chat with " + member_count + " members")
}

Extract Member Emails

Get list of all member email addresses:

chat_id = "19:meeting_abc123..."

// Get Chat Members node
members = message.members.value

// Extract emails
emails = members
.map(m => m.Email)
.filter(e => e) // Remove nulls

console.log("Member emails:")
console.log(emails.join(", "))

Find Chat Owner

Identify chat owners/administrators:

chat_id = "19:meeting_abc123..."

// Get Chat Members node
members = message.members.value

// Find owners
owners = members.filter(m =>
m.Roles && m.Roles.includes("owner")
)

console.log("Chat owners:")
for (owner of owners) {
console.log("- " + owner.DisplayName)
}

Tips for Effective Use

  • Pagination: For large chats, be aware of potential pagination
  • Cache members: Store member list to avoid repeated calls
  • Handle nulls: Email may be null for some members (guests, bots)
  • Role checking: Check Roles array for permissions
  • Member validation: Verify members before sending targeted messages
  • Privacy: Respect user privacy when processing member data

Common Errors and Solutions

"Chat Id cannot be empty"

Cause: No chat ID provided.

Solution: Get chat ID from ListChats or GetChat:

// List Chats node
chats = message.chats.value
chat_id = chats[0].Id

// Then Get Chat Members

Chat Not Found

Cause: Chat ID doesn't exist or user doesn't have access.

Solution:

  • Verify chat ID is correct
  • Ensure user is a member of the chat
  • Use ListChats to find valid chat IDs

Empty Members List

Cause: Chat has no members or API returned empty result.

Solution:

  • Verify chat is active and has members
  • Check user permissions to view members
  • Handle empty array gracefully:
members = message.members.value || []
if (members.length === 0) {
console.log("No members found")
}

Best Practices

  1. Error handling: Handle empty member lists gracefully
  2. Null checks: Check for null/undefined email addresses
  3. Performance: Cache member data for frequently accessed chats
  4. Privacy: Process member data securely and according to policies
  5. Validation: Verify member exists before targeted operations
  6. Logging: Log member counts for audit purposes
  7. Filtering: Filter out bots or system accounts if needed

Member Data Structure

// Example member object
{
"Id": "MCMjMCMjZGNkMjE5ZGQtYmM...",
"DisplayName": "John Doe",
"Email": "john.doe@company.com",
"Roles": ["owner"],
"UserId": "8ea12d16-3e32-4cd4-b09d-...",
"VisibleHistoryStartDateTime": "2024-01-01T00:00:00Z"
}