{"id":48987439,"url":"https://github.com/dix/teams.sh","last_synced_at":"2026-04-18T13:10:37.363Z","repository":{"id":309182370,"uuid":"1035382866","full_name":"dix/teams.sh","owner":"dix","description":"Bash script sending Microsoft Teams notifications using Workflows webhooks","archived":false,"fork":false,"pushed_at":"2025-11-01T11:35:54.000Z","size":783,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-01T13:22:21.518Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dix.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2025-08-10T09:28:01.000Z","updated_at":"2025-11-01T11:35:58.000Z","dependencies_parsed_at":"2025-08-10T12:24:50.936Z","dependency_job_id":"84e973f2-b37a-4922-b445-9f7bdfd53c37","html_url":"https://github.com/dix/teams.sh","commit_stats":null,"previous_names":["dix/teams.sh"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/dix/teams.sh","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dix%2Fteams.sh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dix%2Fteams.sh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dix%2Fteams.sh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dix%2Fteams.sh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dix","download_url":"https://codeload.github.com/dix/teams.sh/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dix%2Fteams.sh/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31969989,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"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":"2026-04-18T13:10:35.088Z","updated_at":"2026-04-18T13:10:37.354Z","avatar_url":"https://github.com/dix.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# teams.sh\n\n* [Presentation](#presentation \"Presentation\")\n* [Dependencies](#dependencies \"Dependencies\")\n* [Usage](#usage \"Usage\")\n* [Options](#options \"Options\")\n* [Docker](#docker \"Docker\")\n* [Getting a webhook URL](#getting-a-webhook-url \"Getting a webhook URL\")\n* [Limitations](#limitations \"Limitations\")\n* [Acknowledgements](#acknowledgements \"Acknowledgements\")\n\n## Presentation\n\nA pure bash script sending Microsoft Teams notifications through Workflows' webhooks.\n\n[![Notification example](./static/notification_example.png#center \"Notification example\")](./static/notification_example.png)\n\nWorks with (group) conversations or channels.\n\n## Dependencies\n\n* [jq](https://jqlang.org/ \"JQLang\")\n\n## Usage\n\n1. Create a Workflow and get a webhook URL (see [Getting a webhook URL](#getting-a-webhook-url \"Getting a webhook URL\"))\n2. Download `teams.sh` and make sure it has the `execute` authorization (`chmod +x teams.sh`)\n3. Call `teams.sh --webhook-url $WEBHOOK_URL` to test it\n4. Fully configure your notifications using the whole set of options described below\n\n## Options\n\n[![Notification content](./static/notification_content.png#center \"Notification content\")](./static/notification_content.png)\n\n1. `--title`\n2. `--username`\n3. `--avatar`\n4. `--description`\n5. `--style`\n6. `--field`\n7. `--link`\n\n⚠️ **None of those parameters are required** ⚠️\n\n### `--title STRING`\n\nSet a title to the notification\n\n### `--username STRING`\n\nSet an author to the notification\n\n### `--avatar URL`\n\nSet a custom avatar for the notification author\n\n### `--description STRING`\n\nAdd a text description to the notification\n\n### `--style (emphasis/accent/good/attention/warning)`\n\nSet the style of the notification card.\n\nInherited from the [Container.style](https://adaptivecards.io/explorer/Container.html \"Microsoft\") property.\n\n### `--field STRING;STRING`\n\nAdd a field `NAME: Value` to the notification.\n\nThis option can be provided O to n times to add n fields.\n\n### `--link STRING;URL`\n\nAdd a link in the form of a clickable button to the notification.\n\nThis option can be provided O to n times to add n links.\n\n## Docker\n\nA Docker image is available: `ghcr.io/dix/teams.sh`.\n\nIt can be used directly within a CI job to send notifications using a lightweight image.\n\nList of tags: [https://github.com/dix/teams.sh/pkgs/container/teams.sh](https://github.com/dix/teams.sh/pkgs/container/teams.sh \"GitHub\").\n\n## Getting a webhook URL\n\nThe goal here is to create a Workflow on PowerAutomate that is going to publish messages on Teams, in the form of an [Adaptive Card](https://adaptivecards.io/ \"Microsoft\"), using a webhook as a trigger.\n\nThe official [Microsoft Support documentation](https://support.microsoft.com/en-us/office/create-incoming-webhooks-with-workflows-for-microsoft-teams-8ae491c7-0394-4861-ba59-055e33f75498 \"Microsoft\") works but can be quite cumbersome.\n\nA more straightforward way to get a webhook URL is to open Teams, right-click on the (group) conversation or channel in which you want to publish notifications, and choose `Workflows`.\nNext: \n* Search `webhook`\n* Choose `Send webhook alerts to a chat/channel`\n* Put an explicit `Name` (useful for its maintenance later on; not displayed in the notifications)\n* `Next`\n* `Add workflow`\n* Wait a few seconds and copy the webhook URL provided under `Workflow added successfully!`\n\n### Maintenance/debug\n\nAll the workflows created on your Microsoft account are available on [PowerAutomate](https://make.powerautomate.com/ \"Microsoft\") under the `My flows` section.\n\nBy clicking on a given workflow, you can see its execution history, turn it On/Off, delete it, update its details and also by clicking on `Edit`, open the workflow editor and by clicking on the `When a Teams webhook request is received`, access the `HTTP URL` of the webhook used to trigger the flow.\n\n## Limitations\n\nIn its current iteration, the script relies on some hard-coded settings that can't be modified through parameters and require important changes to the source code, mainly:\n- timezones for the notifications\n- content of the [Adaptive Card](https://adaptivecards.io/ \"Microsoft\")\n\n## Acknowledgements\n\nHeavily inspired by [fieu/discord.sh](https://github.com/fieu/discord.sh \"GitHub\").","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdix%2Fteams.sh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdix%2Fteams.sh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdix%2Fteams.sh/lists"}