Microsoft Teams Node
The Microsoft Teams node provides integration with your Microsoft Teams workspace in SkyStudio workflows. You can read and send channel messages, create meetings, share files, and run AI-powered queries. To connect, you must create an App Registration on Azure.
Connection Setup and Management
To use the Teams node, you must create an App Registration in the Azure Portal, define the required permissions, also known as Graph API permissions, and enter the generated Tenant ID, Client ID, and Client Secret information into SkyStudio.
🎬 Click to watch the video →
Creating an Azure App Registration
1. Register a New Application
- Sign in to portal.azure.com.
- Type
App registrationsin the search bar and go to the App registrations service. - Click the + New registration button.
- Give the application a name, such as
SkyStudio. - For Supported account types, select Accounts in this organizational directory only (Single tenant).
- Click the Register button.
2. Copy Client ID and Tenant ID
After the application is created, the Overview page displays the following information:
- Application (client) ID → This is your Client ID
- Directory (tenant) ID → This is your Tenant ID
Copy both values and save them somewhere safe. You can access this information again later.
3. Create a Client Secret
- Go to Certificates & secrets from the left menu.
- In the Client secrets tab, click the + New client secret button.
- Enter a Description and select an Expiration period.
- Click the Add button.
- Immediately copy the value in the Value column of the generated secret.
Critical Note: The Client Secret value is displayed only at the time it is created. After you close the page, you will not be able to access the full value again. If you forget to copy it, you must delete the secret and create a new one.
4. Add API Permissions
- Go to API permissions from the left menu.
- Click the + Add a permission button.
- Select Microsoft Graph.
- Select the Application permissions tab.
- Search for and add the required permissions for the Teams node:
| Permission | Description |
|---|---|
Team.ReadBasic.All | Used to read the list of teams |
Channel.ReadBasic.All | Used to read the list of channels |
ChannelMessage.Read.All | Used to read channel messages |
ChannelMessage.Send | Used to send messages to channels |
Chat.ReadWrite.All | Used to read and send chat messages |
OnlineMeetings.ReadWrite.All | Used to create meetings and access meeting records |
Files.ReadWrite.All | Used to send files |
User.Read.All | Used to read user information |
- After adding the permissions, click Grant admin consent to approve them.
Note: Admin consent requires a Microsoft 365 administrator account. If you are not authorized, ask your IT department for help.
Adding the Connection to SkyStudio
- Go to Application Connections from the left menu in SkyStudio.
- Click the Add New Connection button.
- Select Microsoft Teams as the provider.
- Fill in the following fields:
| Field | Description |
|---|---|
| Connection Name | A descriptive name, such as Company Teams |
| Tenant ID | The Directory (tenant) ID copied from Azure |
| Client ID | The Application (client) ID copied from Azure |
| Client Secret | The secret value copied from Azure |
| User Email operating user | The email address of the user on whose behalf the workflow will run |
- Click the Save button.
Assigning the Connection to the Node
After adding the Microsoft Teams node to the canvas, select the saved connection from the Application Connections dropdown in the right panel.
Operations
The Microsoft Teams node provides 12 operations:
| Operation | Category | Description |
|---|---|---|
| List Channels | Featured | Lists channels in a team |
| Read Channel Messages | Featured | Retrieves the message history of a specific channel |
| Send Channel Message | Featured | Sends a message to a specific channel |
| Send Chat Message | Featured | Sends a message to a specific chat |
| Create Meeting | Featured | Creates a new Teams meeting |
| Teams AI Assistant | Featured | Queries Teams data using natural language |
| List Teams | Standard | Lists all teams in the organization |
| List Chats | Standard | Lists the user’s chats |
| User Information | Standard | Retrieves information for a specific user |
| List Users | Standard | Lists users in the organization |
| Send File | Standard | Sends a file to a channel |
| Meeting Recordings | Standard | Retrieves recordings of a meeting |
List Channels
Returns all channels in the specified team. It is used to discover Channel IDs.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Teams connection to use |
| Team ID | Yes | ID of the team whose channels will be listed |
Read Channel Messages
Returns the message history of the specified channel.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Teams connection to use |
| Team ID | Yes | ID of the team that contains the channel whose messages will be read |
| Channel ID | Yes | ID of the channel whose messages will be read |
| Limit | No | Maximum number of messages to return |
Send Channel Message
Sends a message to the specified Teams channel. It is used in notification and report-sharing workflows.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Teams connection to use |
| Team ID | Yes | ID of the team that contains the target channel |
| Channel ID | Yes | ID of the channel where the message will be sent |
| Message | Yes | Message content to send |
| Content Type | No | Message type: text for plain text or html for HTML content |
Send Chat Message
Sends a message to a specific Teams chat, either one-to-one or group chat.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Teams connection to use |
| Chat ID | Yes | ID of the chat where the message will be sent |
| Message | Yes | Message content to send |
| Content Type | No | Message type: text or html |
Create Meeting
Creates a new Microsoft Teams meeting and returns the join link.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Teams connection to use |
| Meeting Title | Yes | Name of the meeting |
| Start | Yes | Meeting start date and time in YYYY-MM-DDTHH:MM:SS format |
| End | Yes | Meeting end date and time in YYYY-MM-DDTHH:MM:SS format |
| Timezone | No | Time zone, such as Europe/Istanbul |
| Participants | No | Email addresses of participants to invite, separated by commas |
Teams AI Assistant
Queries Teams data using natural language. As shown in the video transcript, you can ask questions in natural language, such as the title of your last meeting.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Teams connection to use |
| Query | Yes | Teams query in natural language |
| System Prompt | No | System instruction that customizes the AI assistant’s behavior |
Usage Example
Query: "What was the title of my last meeting?"
System Prompt: "Consider only meetings from the last 7 days. Respond in Turkish."
List Teams
Lists all teams in the organization. It is used to discover Team IDs.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Teams connection to use |
List Chats
Lists the chats, including one-to-one and group chats, that the user is included in.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Teams connection to use |
| Limit | No | Maximum number of chats to return |
User Information
Returns Microsoft 365 profile information for a specific user by ID or email.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Teams connection to use |
| User ID or Email | Yes | ID or email address of the user whose information will be retrieved |
List Users
Lists users in the organization. Search by name is supported.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Teams connection to use |
| Search | No | Search filter by user name or email |
| Limit | No | Maximum number of users to return |
Send File
Sends a file to a Teams channel. File content can be provided as base64 or plain text.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Teams connection to use |
| Team ID | Yes | ID of the team that contains the target channel |
| Channel ID | Yes | ID of the channel where the file will be sent |
| File Name | Yes | File name and extension, such as report.pdf |
| Content base64 or text | Yes | File content. Use base64 for binary files and plain text for text files |
Meeting Recordings
Returns recording information and access links for a specific meeting.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Teams connection to use |
| Meeting ID | Yes | ID of the meeting whose recordings will be retrieved |
Quick Start Examples
Example 1: Daily Summary Notification
A workflow that sends a daily summary message to a specific channel every morning:
Schedule (Every day at 09:00) → HubSpot (Get Deals) → LLM (summarize) → Send Channel Message
Send Channel Message settings:
- Team ID:
{sales-team-id} - Channel ID:
{general-channel-id} - Message:
{{llm.output}} - Content Type:
html
Example 2: Automatic Meeting Scheduling
A workflow that automatically creates a Teams meeting when a form is submitted:
Form Builder → Create Meeting → Send Channel Message (meeting link)
Create Meeting settings:
- Meeting Title:
{{form.topic}} - Meeting - Start:
{{form.date}}T{{form.time}}:00 - End:
{{form.end_time}} - Timezone:
Europe/Istanbul - Participants:
{{form.email}}
Example 3: Meeting Query with Teams AI
A chatbot that answers meeting questions asked by the user in natural language:
Text Input → Teams AI Assistant → Text Output
Teams AI Assistant settings:
- Query:
{{input.text}} - System Prompt:
"You are the company’s meeting assistant. Use only Teams data. Respond in Turkish."
Example 4: Sharing a File Report
A workflow that automatically sends the generated report to a Teams channel:
Schedule → Fetch Data → Artifact (create report) → Send File
Send File settings:
- Team ID:
{report-team-id} - Channel ID:
{reports-channel-id} - File Name:
weekly-report-{{date}}.html - Content base64 or text:
{{artifact.output}}
Common Errors
| Error | Possible Cause | Solution |
|---|---|---|
401 Unauthorized | Client Secret has expired or is incorrect | Create a new Client Secret from the Azure Portal and update the SkyStudio connection |
403 Forbidden | Required API permission has not been granted | Add the missing permission from Azure Portal → App Registration → API Permissions and click Grant admin consent |
Team/Channel not found | Team ID or Channel ID is incorrect | Find the correct IDs using the List Teams and List Channels operations |
Tenant ID error | Incorrect Tenant ID entered | Check the Directory (tenant) ID from Azure Portal → App Registration → Overview |
AADSTS700016 | Client ID cannot be found | Check that the Application (client) ID was copied correctly |
Notes
- The default Client Secret validity period in Azure is usually 6 months or 1 year. When it expires, you must create a new secret in Azure and update the SkyStudio connection.
- The account entered in the User Email operating user field must have access to Teams and must be a member of the organization.
- Admin consent is required for API permissions. This action can only be performed by users with the Microsoft 365 Global Admin or Application Admin role.
- In the Send File operation, you may need to convert large files to base64 format. You can do this in a previous node, such as LLM or Transform.
- The Teams AI Assistant operation can query all Teams data accessible by the connected account.