{"id":19794878,"url":"https://github.com/bb-io/microsoftteams","last_synced_at":"2026-06-12T17:31:39.700Z","repository":{"id":175841242,"uuid":"654566349","full_name":"bb-io/MicrosoftTeams","owner":"bb-io","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-04T08:45:57.000Z","size":579,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-04T09:05:12.539Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bb-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-06-16T12:09:15.000Z","updated_at":"2026-06-04T08:46:02.000Z","dependencies_parsed_at":"2023-09-26T16:47:23.079Z","dependency_job_id":"9b46fea2-99fe-4085-a881-0ef0bddee466","html_url":"https://github.com/bb-io/MicrosoftTeams","commit_stats":null,"previous_names":["bb-io/microsoftteams"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bb-io/MicrosoftTeams","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bb-io%2FMicrosoftTeams","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bb-io%2FMicrosoftTeams/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bb-io%2FMicrosoftTeams/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bb-io%2FMicrosoftTeams/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bb-io","download_url":"https://codeload.github.com/bb-io/MicrosoftTeams/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bb-io%2FMicrosoftTeams/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34256180,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T07:14:44.308Z","updated_at":"2026-06-12T17:31:39.693Z","avatar_url":"https://github.com/bb-io.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Blackbird.io Microsoft 365 Teams\n\nBlackbird is the new automation backbone for the language technology industry. Blackbird provides enterprise-scale automation and orchestration with a simple no-code/low-code platform. Blackbird enables ambitious organizations to identify, vet and automate as many processes as possible. Not just localization workflows, but any business and IT process. This repository represents an application that is deployable on Blackbird and usable inside the workflow editor.\n\n## Introduction\n\n\u003c!-- begin docs --\u003e\n\nMicrosoft 365 Teams is a collaborative communication platform that combines chat, video conferencing and file sharing, providing a centralized hub for teams to work together seamlessly. It enables organizations to connect, collaborate, and communicate efficiently, whether in remote or office settings.\n\n## Before setting up\n\nBefore you can connect you need to make sure that you have a Microsoft 365 account. \n\n### Using webhooks and actions for channel messages\n\nIf you want to use webhooks and/or actions for channel messages, you need to have organization's admin approval. There are two ways to grant admin consent. \n\nThe first way is to grant tenant-wide admin consent to Blackbird application: \n\n- Sign in to the [Microsoft Entra admin center](https://entra.microsoft.com/) as [global administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#global-administrator), [privileged role administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#privileged-role-administrator) or user with the [permission to grant permissions to applications](https://learn.microsoft.com/en-us/azure/active-directory/roles/custom-consent-permissions). \n- Browse to _Identity_ \u003e _Applications_ \u003e _Enterprise applications_ \u003e _All applications_.\n- Enter _Blackbird_ in the search box, and then select the Blackbird application from the search results.\n- Browse to _Security_ \u003e _Permissions_.\n- Click on _Grant admin consent for Blackbird.io International LLC_.\n\n![Searching for Blackbird application](image/README/searching_for_app.png)\n\nThe second way is to configure admin consent workflow:\n\n- Sign in to the [Microsoft Entra admin center](https://entra.microsoft.com/) as [global administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#global-administrator).\n- Browse to _Identity_ \u003e _Applications_ \u003e _Enterprise applications_ \u003e _Consent and permissions_ \u003e _Admin consent settings_.\n- Under _Admin consent requests_, select _Yes_ for _Users can request admin consent to apps they are unable to consent to_.\n- Configure the following settings:\n    * _Who can review admin consent requests_ - select users, groups, or roles that are designated as reviewers for admin consent requests. Reviewers can view, block, or deny admin consent requests, but only global administrators can approve admin consent requests. To approve requests, a reviewer must have the [permissions required](https://learn.microsoft.com/en-us/azure/active-directory/roles/custom-consent-permissions) to grant admin consent for the application requested. People designated as reviewers can view incoming requests in the _My Pending tab_ after they have been set as reviewers. Any new reviewers aren't able to act on existing or expired admin consent requests. \n    * _Selected users will receive email notifications for requests_ - enable or disable email notifications to the reviewers when a request is made.\n    * _Selected users will receive request expiration reminders_ - enable or disable reminder email notifications to the reviewers when a request is about to expire.\n    * _Consent request expires after (days)_ - Specify how long requests stay valid.\n- Click _Save_. \n\n![Enable admin consent workflow](image/README/enable-admin-consent-workflow.png)\n\n### Custom Azure app\n\nIf you want to use a custom Azure application for authorization, you should do the following:\n\n- Go to Azure \u003e _App registrations_ \u003e _New registration_.\n- Enter the name of your application and choose the supported account types. Click _Register_.\n- Go to _Manage_ \u003e _API permissions_ and select the required scopes:\n    * _If you only need to manage channel and chat messages_, select the following permissions:\n      User.Read, Team.ReadBasic.All, Chat.ReadWrite, Channel.ReadBasic.All, ChannelMessage.Read.All, \n      ChannelMessage.Send, offline_access\n    * _If you need to manage channel messages_, select the following permissions: \n      User.Read, User.ReadBasic.All, Team.ReadBasic.All, Chat.ReadWrite, Channel.ReadBasic.All, ChannelMessage.Read.All, \n      ChannelMessage.Send, Files.ReadWrite, offline_access\n    * _If you don't need to manage channel messages_, select the following: \n      User.Read, User.ReadBasic.All, Team.ReadBasic.All, Channel.ReadBasic.All, Chat.ReadWrite, ChannelMessage.Send, \n      Files.ReadWrite, offline_access\n    * Alternatively, use the `OAuth2 (Azure app) with custom scopes` connection type to specify your own scopes. \n      Paste them exactly as they appear in your Azure app - Microsoft will reject authorization \n      if you include any scopes not registered there.\n- Go to _Manage_ \u003e _Authentication_ and click _Add a platform_. Choose _Web_ and enter this redirect URI: https://bridge.blackbird.io/api/AuthorizationCode\n- Go to _Manage_ \u003e _Certificates \u0026 secrets_ and click _New client secret_. Enter a description (optional) and set the expiration time. **Copy the created secret value, as you won't be able to see it again**.\n- Go to _Overview_ and copy the _Application (client) ID_ and _Directory (tenant) ID_. Use these values to register your connection in Blackbird.\n\n## Connecting\n\nNavigate to apps and search for Microsoft 365 Teams, click _Add Connection_ and name your connection for future reference e.g. 'My organization'.\n\n### OAuth2\n\n1. Under _Channel messages scope required_ specify _Yes_ if you want to use webhooks and/or actions for channel messages \nand _No_ if not. Different scopes are added to authorization request based on the value of this connection parameter.\n2. Click _Authorize connection_.\n3. Follow the instructions that Microsoft gives you, authorizing Blackbird.io to act on your behalf.\n4. When you return to Blackbird, confirm that the connection has appeared and the status is _Connected_.\n\n![Connecting using OAuth2](image/README/oauth.png)\n\n### OAuth2 (Azure app)\n\n\u003e **Note**: Different scopes are added to the authorization request based on the value of the first two connection parameters.\n\n1. Under _Chats, channels and messages only scopes_ specify _Yes_ if you want to use this app only to send messages to\nchannels and chats. Specify _No_ to be able to fully use the app.\n2. Under _Channel messages scope required_ specify _Yes_ if you want to use webhooks and/or actions for channel messages \nand _No_ if not.\n3. Enter the _Application (client) ID_, _Directory (tenant) ID_ and _Client secret_ obtained from your custom Azure app.\n4. Follow the instructions that Microsoft gives you, authorizing Blackbird.io to act on your behalf.\n5. When you return to Blackbird, confirm that the connection has appeared and the status is _Connected_.\n\n![Connecting using Azure app](image/README/azure.png)\n\n### OAuth2 (Azure app) with custom scopes\n\n1. Enter the _Application (client) ID_, _Directory (tenant) ID_ and _Client secret_ obtained from your custom Azure app.\n2. Enter your Azure app scopes, space-separated. Example: `Team.ReadBasic.All Channel.ReadBasic.All Chat.Read`.\n3. Follow the instructions that Microsoft gives you, authorizing Blackbird.io to act on your behalf.\n4. When you return to Blackbird, confirm that the connection has appeared and the status is _Connected_.\n \n![Connecting using Azure app](image/README/azure_customscopes.png)\n\n## Actions\n\n### Chat\n\n- **List chats** returns the list of chats that the user is part of.\n- **Get chat message** retrieves a single message or a message reply in a chat.\n- **Download files attached to chat message**.\n- **Get the most recent chat messages**.\n- **Send message to chat** sends a new message to the specified chat. Optionally, you can attach file from OneDrive and/or file obtained as a result of the previous action.\n- **Delete message from chat**.\n\n### Channel\n\n- **Get channel message** retrieves a single message or a message reply in a channel.\n- **Download files attached to channel message**.\n- **Send message to channel** sends a new message to the specified channel. Optionally, you can attach file from OneDrive and/or file obtained as a result of the previous action.\n- **Reply to message in channel** sends a reply to a message to a specified channel. Optionally, you can attach file from OneDrive and/or file obtained as a result of the previous action.\n\n### Users\n\n- **Get my user information** retrieves information about current account.\n- **List all users** returns a list of users in your organization.\n- **Get user**.\n- **Get chat members** lists all conversation members in a chat.\n\n## Events\n\n- **On message sent to chat** is triggered when a new message is sent to the chat.\n- **On message with attachments sent to chat** is triggered when a new message with attachments is sent to the chat.\n- **On user mentioned in chat** is triggered when a new message is sent to the chat with specified user mentioned.\n- **On message sent to channel** is triggered when a new message is sent to the channel.\n- **On message with attachment sent to channel** is triggered when a new message with attachments is sent to the channel.\n- **On user mentioned in channel** is triggered when a new message is sent to the channel with specified user mentioned.\n\n## Missing features\n\nIn the future we can add:\n\n- Webhooks for online meeting recording and transcript \n- Webhooks for chat/channel members\n- More actions for teams, channels, chats\n- Online meeting actions\n- Shift and schedule actions\n\nLet us know if you're interested!\n\n\u003c!-- end docs --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbb-io%2Fmicrosoftteams","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbb-io%2Fmicrosoftteams","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbb-io%2Fmicrosoftteams/lists"}