Skip to content

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 17 Sep 05:02
· 132 commits to main since this release

The voice channel — the top escalation rung. A phone call that speaks the
alarm and hangs up, via Twilio.

Read this before enabling it

This has never placed a real call. Every test runs against a local
server using Twilio's documented response shapes, not against Twilio. That
is enough to catch a great deal — it caught a bug that would have reported
every successful call as a failure — but it is not the same as having
worked. Treat your first call as the test, on a trial account, to one
number, while you are watching.

Calls cost money, and an escalation ladder is designed to repeat. A rung
that telephones somebody every five minutes until acknowledged will bill for
every one of those calls.

What it does

One REST call to Twilio's Calls resource with inline TwiML: it speaks a short
script and hangs up. Nothing is exposed — no inbound endpoint, no callback
URL, no tunnel, no port forward.

The spoken script is deliberately terse because Twilio bills text-to-speech
per 100 characters, so a wordy alert is charged for being wordy.

Three things that will surprise you otherwise

It is on no default escalation ladder. Enabling voice is not enough: it is
configured, healthy, and will never ring anybody until you put it on a rung
yourself. A shipped default that telephones somebody at 3am the first time an
alarm fires is not a decision to make on your behalf.

The test button places no call. A test that costs money and wakes somebody
is not a harmless test, so it verifies your credentials against Twilio and
tells you plainly that it did not dial anyone. It does not prove your From
number can reach your recipients.

A call reports as delivered when Twilio accepts it, not when anybody
answers. Answered, busy, voicemail and no-answer are not distinguished in this
release, so the ladder keeps escalating on the basis that the call was placed.
It is a way of waking somebody, not proof that somebody woke.

Not in this release

Press 1 to acknowledge. The design for it is in docs/ARCHITECTURE.md §8
and it needs a Studio Flow authored by hand in the Twilio console plus a poller
for the collected digit. Acknowledge from the link in another channel, or from
the interface.

Also

A configured channel that fails to start is now reported at startup and in the
audit record. It was being recorded internally and read by nothing, so a
channel that could not deliver still looked enabled everywhere you would check.

Setup instructions are in docs/SETUP.md.


Verifying this release

Every binary is signed. Verification instructions, including how to
rebuild from source and compare hashes, are in
docs/RELEASING.md.

Linux / macOS — cosign (keyless, no key to trust in advance):

cosign verify-blob notifymatrix-linux-amd64 \
  --bundle notifymatrix-linux-amd64.sigstore.json \
  --certificate-identity-regexp '^https://github\.com/suburbazine/Unifi-Notification-Matrix/' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

Download the .sigstore.json next to the binary; it carries the
signature, the certificate and the transparency-log proof. Keep
--certificate-identity-regexp — without it cosign verifies a
signature from anyone.

Build provenance (any platform):

gh attestation verify notifymatrix-linux-amd64 --repo suburbazine/Unifi-Notification-Matrix

Windows: the .exe is Authenticode-signed and timestamped.
Right-click → Properties → Digital Signatures, or:

Get-AuthenticodeSignature .\notifymatrix-windows-amd64.exe

This is source-available software under the
PolyForm Noncommercial License 1.0.0. Commercial use
requires a licence: licensing@xtremission.com

Full Changelog: v0.1.2.1...v0.1.3