Delivery Channels

Finding the news is half the job. The other half is for the message to reach the place where you will read it: email, the work chat, or your own system. A channel is a delivery address together with the settings for reaching it.

Eight channel kinds

  • Email — the most universal option: fits digests and people who do not live in messengers. Needs a configured outgoing mail server.
  • Telegram — fast and familiar for a team. Needs a bot and a recipient (a private chat or a group).
  • Slack — for companies working in Slack.
  • Discord — the same for communities and teams on Discord.
  • Microsoft Teams — for companies on Microsoft 365.
  • Webhook — a call to your system’s address with a signature. Needed when an event must reach a program, not a human — a CRM, a warehouse or a support system.
  • API call — like a webhook, but finely tunable: the method, headers and request body are set by hand. For non-standard services.
  • Your own channel — the message is sent by your own Python code: useful for services not on the list, say a corporate messenger. The important difference: your code makes the outward call, not the product — so the internal-address restriction does not apply to such a channel.

Configuration

Channels are created by the agent at your request: “set up a mailing to this address”, “start a bot in our work group”. The special cases worth knowing in advance:

  • Email needs a configured mail server in the general settings. Without one, the channel honestly says it is not configured instead of silently piling up letters.
  • A webhook needs an address and a secret that signs every request: the recipient can verify the data came from you, not from a stranger.
  • Telegram needs a bot token and a recipient — a private chat or a group.

The mandatory channel check

Until a channel is verified by a test message, it sends nothing. This is protection from a very expensive mistake: you configured it, decided it works, and all that time the messages were silently not going out.

The check sends a real message to the real address — and, when all is well, unlocks the channel. After changing the address, the recipient or the token, the check must be passed again: what was verified is the former destination, not the new one.

What goes into a message

  • The summary — or the honest note that no confirmation was found for it.
  • The materiality rating — the number and the band.
  • The value changes — “12,900 → 9,600 (down 26%)”.
  • The monitor’s and the source’s names — so it is immediately clear what this is about.
  • The event link — opens the card with the evidence.

A webhook receives not text for a human but the full data set of the event — so that your program processes it itself.

The look of a message can be adjusted with your own Python code — say, rewriting the title your own way. The delivery journal records the already-corrected text: it shows what exactly went out.

The delivery journal

Every delivery leaves a record: the status, how many attempts there were, what the server answered, and the request and response texts. This answers the questions “did it arrive” and “why not” without a support thread: it shows what exactly went out and what you were answered.

Retries

When the recipient does not answer, the delivery is retried with growing pauses: quickly at first, then more rarely — from half a minute to several hours. Usually the recipient’s failure clears by itself in that time and the message gets through. After several failed attempts, the delivery is declared failed and stays in the journal; it can be repeated by hand when the recipient comes back to life.

Security

  • Protection from sending to internal addresses. A webhook and an API call will not send data to your network’s service addresses — so someone else’s configuration does not become a way to peek inside.
  • Secrets are masked. Tokens, passwords and addresses with keys are replaced with “***” when the settings are read. No real secrets are visible in the interface or in the agent’s replies.
  • A key can be revoked. A token went bad or a contractor left — access closes with one action.

Next → Publishing

← Back to the documentation index