[{"data":1,"prerenderedAt":18},["ShallowReactive",2],{"content:integrations\u002Fmattermost":3},{"body":4,"toc":5},"\u003Ch1>Schedule Mattermost messages\u003C\u002Fh1>\n\u003Cp>Post to a Mattermost channel on a schedule, on Mattermost Cloud or your own server. cronservices sends the message through an incoming webhook and can fill it in from any API first.\u003C\u002Fp>\n\u003Ch2 id=\"example-nightly-build-status\">\u003Ca class=\"anchor\" href=\"#example-nightly-build-status\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>Example: nightly build status\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\">Nightly build status\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\">30 6 * * *\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\">UTC\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\">build\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\">request\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\">method\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\">GET\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\">endpoint\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\u002Fci.example.com\u002Fapi\u002Fbuilds\u002Flatest?branch=main\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\">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_CI_TOKEN_ID\u003C\u002Fspan>\u003Cspan style=\"color:#89DDFF\">&quot;\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\">mattermost_send_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\u002Fchat.example.com\u002Fhooks\u002Fxjw7c9r4ofbx3ga6h1k8mzqp5e\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\">Nightly build #{{ $.number }}: **{{ $.status }}** in {{ $.duration_minutes }} min\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\">username\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\">ci-bot\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 Mattermost, open \u003Cstrong>Integrations → Incoming Webhooks → Add Incoming Webhook\u003C\u002Fstrong>, choose the channel, and copy the URL into \u003Ccode>webhook_url\u003C\u002Fcode>. To set \u003Ccode>username\u003C\u002Fcode>, the server must allow integrations to override usernames.\u003C\u002Fp>\n\u003Ch2 id=\"reference\">\u003Ca class=\"anchor\" href=\"#reference\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>Reference\u003C\u002Fh2>\n\u003Ch3 id=\"send-a-mattermost-message-mattermost-send-message\">\u003Ca class=\"anchor\" href=\"#send-a-mattermost-message-mattermost-send-message\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>Send a Mattermost message: \u003Ccode>mattermost_send_message\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Sends\u003C\u002Fstrong> POST to the incoming webhook URL with \u003Ccode>{&quot;text&quot;: …}\u003C\u002Fcode>. \u003Cstrong>Output\u003C\u002Fstrong> for the next step: The text \u003Ccode>ok\u003C\u002Fcode>.\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>An incoming webhook, \u003Ccode>https:\u002F\u002F&lt;your server&gt;\u002Fhooks\u002F&lt;id&gt;\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>text\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>string, required\u003C\u002Ftd>\n\u003Ctd>Markdown, up to 16,383 characters. Placeholders allowed.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>username\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>string\u003C\u002Ftd>\n\u003Ctd>Overrides the webhook’s name, if the server allows it.\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>A weekly on-call handoff note from \u003Ca href=\"\u002Fintegrations\u002Fpagerduty\">PagerDuty\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>A daily reminder to review open merge requests.\u003C\u002Fli>\n\u003Cli>A monthly security patch reminder on the second Tuesday: \u003Ccode>0 9 * * TUE#2\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n",[6,9,12,15],{"id":7,"html":8},"example-nightly-build-status","Example: nightly build status",{"id":10,"html":11},"set-up","Set up",{"id":13,"html":14},"reference","Reference",{"id":16,"html":17},"more-ideas","More ideas",1793404038804]