[{"data":1,"prerenderedAt":21},["ShallowReactive",2],{"content:integrations\u002Fmicrosoft-teams":3},{"body":4,"toc":5},"\u003Ch1>Schedule Microsoft Teams messages\u003C\u002Fh1>\n\u003Cp>Post to a Microsoft Teams channel on a schedule: weekly reminders, daily numbers, and alerts filled in from any API. cronservices sends the message as an Adaptive Card through a Teams Workflows webhook.\u003C\u002Fp>\n\u003Ch2 id=\"example-a-monday-kickoff-reminder\">\u003Ca class=\"anchor\" href=\"#example-a-monday-kickoff-reminder\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>Example: a Monday kickoff reminder\u003C\u002Fh2>\n\u003Cdiv class=\"code-block site-code\">\u003Cspan class=\"code-lang\">json\u003C\u002Fspan>\u003Cpre>\u003Ccode>\u003Cspan style=\"color:#9ABDF5\">{\u003C\u002Fspan>\n  \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#7AA2F7\">name\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">Weekly kickoff\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">,\u003C\u002Fspan>\n  \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#7AA2F7\">cron\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#9ABDF5\">{\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#0DB9D7\">expression\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">45 8 * * MON\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">,\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#0DB9D7\">time_zone\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">Europe\u002FLondon\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan> \u003Cspan style=\"color:#9ABDF5\">}\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">,\u003C\u002Fspan>\n  \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#7AA2F7\">nodes\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#9ABDF5\">[\u003C\u002Fspan>\n    \u003Cspan style=\"color:#9ABDF5\">{\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#0DB9D7\">id\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">post\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">,\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#0DB9D7\">teams_post_message\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#9ABDF5\">{\u003C\u002Fspan>\n        \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#7DCFFF\">webhook_url\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">https:\u002F\u002Fprod-12.westeurope.logic.azure.com:443\u002Fworkflows\u002Fabc123\u002Ftriggers\u002Fmanual\u002Fpaths\u002Finvoke?api-version=2016-06-01&amp;sig=XYZ\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">,\u003C\u002Fspan>\n        \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#7DCFFF\">text\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">**Weekly kickoff in 15 minutes.** Agenda: {{ format(now:Europe\u002FLondon, \u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">\\&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">dddd DD MMMM\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">\\&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">) }} priorities and blockers.\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan> \u003Cspan style=\"color:#9ABDF5\">}\u003C\u002Fspan> \u003Cspan style=\"color:#9ABDF5\">}\u003C\u002Fspan>\n  \u003Cspan style=\"color:#9ABDF5\">]\u003C\u002Fspan>\n\u003Cspan style=\"color:#9ABDF5\">}\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cbutton type=\"button\" class=\"icon-btn code-copy\" data-copy aria-label=\"Copy code\">\u003Csvg class=\"icon\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Ch2 id=\"example-whos-on-call-every-morning\">\u003Ca class=\"anchor\" href=\"#example-whos-on-call-every-morning\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>Example: who&#39;s on call, every morning\u003C\u002Fh2>\n\u003Cdiv class=\"code-block site-code\">\u003Cspan class=\"code-lang\">json\u003C\u002Fspan>\u003Cpre>\u003Ccode>\u003Cspan style=\"color:#9ABDF5\">{\u003C\u002Fspan>\n  \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#7AA2F7\">name\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">On-call to Teams\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">,\u003C\u002Fspan>\n  \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#7AA2F7\">cron\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#9ABDF5\">{\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#0DB9D7\">expression\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">0 9 * * 1-5\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">,\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#0DB9D7\">time_zone\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">America\u002FChicago\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan> \u003Cspan style=\"color:#9ABDF5\">}\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">,\u003C\u002Fspan>\n  \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#7AA2F7\">nodes\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#9ABDF5\">[\u003C\u002Fspan>\n    \u003Cspan style=\"color:#9ABDF5\">{\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#0DB9D7\">id\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">oncall\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">,\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#0DB9D7\">pagerduty_list_on_calls\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#9ABDF5\">{\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#7DCFFF\">credential_id\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">YOUR_PAGERDUTY_API_KEY_ID\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">,\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#7DCFFF\">escalation_policy\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">PABC123\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">,\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#7DCFFF\">limit\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#FF9E64\">1\u003C\u002Fspan> \u003Cspan style=\"color:#9ABDF5\">}\u003C\u002Fspan> \u003Cspan style=\"color:#9ABDF5\">}\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">,\u003C\u002Fspan>\n    \u003Cspan style=\"color:#9ABDF5\">{\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#0DB9D7\">id\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">post\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">,\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#0DB9D7\">teams_post_message\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#9ABDF5\">{\u003C\u002Fspan>\n        \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#7DCFFF\">webhook_url\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">https:\u002F\u002Fprod-12.westeurope.logic.azure.com:443\u002Fworkflows\u002Fabc123\u002Ftriggers\u002Fmanual\u002Fpaths\u002Finvoke?api-version=2016-06-01&amp;sig=XYZ\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">,\u003C\u002Fspan>\n        \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#7DCFFF\">text\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">:\u003C\u002Fspan> \u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan>\u003Cspan style=\"color:#9ECE6A\">On call today: **{{ $.oncalls[0].user.summary }}**\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\u003C\u002Fspan> \u003Cspan style=\"color:#9ABDF5\">}\u003C\u002Fspan> \u003Cspan style=\"color:#9ABDF5\">}\u003C\u002Fspan>\n  \u003Cspan style=\"color:#9ABDF5\">]\u003C\u002Fspan>\n\u003Cspan style=\"color:#9ABDF5\">}\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cbutton type=\"button\" class=\"icon-btn code-copy\" data-copy aria-label=\"Copy code\">\u003Csvg class=\"icon\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Ch2 id=\"set-up\">\u003Ca class=\"anchor\" href=\"#set-up\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>Set up\u003C\u002Fh2>\n\u003Cp>In Teams, open the channel&#39;s \u003Cstrong>Workflows\u003C\u002Fstrong> and choose \u003Cstrong>Post to a channel when a webhook request is received\u003C\u002Fstrong>. Copy the URL it gives you into \u003Ccode>webhook_url\u003C\u002Fcode>. Older \u003Ccode>webhook.office.com\u003C\u002Fcode> connector URLs work too, while Microsoft still accepts them.\u003C\u002Fp>\n\u003Ch2 id=\"reference\">\u003Ca class=\"anchor\" href=\"#reference\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>Reference\u003C\u002Fh2>\n\u003Ch3 id=\"post-a-microsoft-teams-message-teams-post-message\">\u003Ca class=\"anchor\" href=\"#post-a-microsoft-teams-message-teams-post-message\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>Post a Microsoft Teams message: \u003Ccode>teams_post_message\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Sends\u003C\u002Fstrong> POST to the Workflows webhook URL with an Adaptive Card holding the text. \u003Cstrong>Output\u003C\u002Fstrong> for the next step: The webhook’s response.\u003C\u002Fp>\n\u003Cdiv class=\"table-wrap\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Field\u003C\u002Fth>\n\u003Cth>Type\u003C\u002Fth>\n\u003Cth>Notes\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Ccode>webhook_url\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>string, required\u003C\u002Ftd>\n\u003Ctd>A Teams Workflows (&quot;Post to a channel when a webhook request is received&quot;) URL on \u003Ccode>logic.azure.com\u003C\u002Fcode>, or a legacy \u003Ccode>webhook.office.com\u003C\u002Fcode> connector URL.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>text\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>string, required\u003C\u002Ftd>\n\u003Ctd>Up to 4,000 characters. Adaptive Card text supports simple markdown. Placeholders allowed.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003C\u002Fdiv>\u003Ch2 id=\"more-ideas\">\u003Ca class=\"anchor\" href=\"#more-ideas\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>More ideas\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>Post the sprint&#39;s open bug count from your tracker&#39;s API every morning.\u003C\u002Fli>\n\u003Cli>Remind the team to submit expenses on the last weekday of the month: \u003Ccode>0 10 LW * *\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Post a release freeze notice once, at an exact time, with \u003Ccode>run_at\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n",[6,9,12,15,18],{"id":7,"html":8},"example-a-monday-kickoff-reminder","Example: a Monday kickoff reminder",{"id":10,"html":11},"example-whos-on-call-every-morning","Example: who&#39;s on call, every morning",{"id":13,"html":14},"set-up","Set up",{"id":16,"html":17},"reference","Reference",{"id":19,"html":20},"more-ideas","More ideas",1793404038803]