Event Webhooks
A webhook lets VoicerOnePBX tell your software the moment something happens — a call was answered, a voicemail was left, a fax arrived. Instead of your app constantly asking "anything new?", the PBX pushes a small, signed HTTP message to a URL you provide.
Setting one up
- Open Settings → Integrations and add an integration with your endpoint URL and a secret.
- Subscribe it to the events you care about.
- When an event fires, the PBX
POSTs a JSON body to your URL, signed so you can trust it.
A few of the events
call.answered,call.ended— call lifecycle.voicemail.left— a new voicemail.fax.received— an inbound fax landed.
Verifying the signature
Each request carries an HMAC signature so you know it genuinely came from your PBX and wasn't forged or
altered. The header X-Voicer-Signature: sha256=<hex> is HMAC-SHA256 over
timestamp . body using your shared secret. Recompute it and compare:
expected = HMAC_SHA256(secret, X-Voicer-Timestamp + "." + raw_body)
if hex(expected) == signature_from_header: # good — it's really from the PBX
process(body)
Deliveries are retried with backoff if your endpoint is briefly down, every attempt is recorded in a delivery log you can inspect, and a persistently failing endpoint is temporarily suspended (a circuit breaker) so it doesn't hold everything up. Outbound requests are also SSRF-guarded — they can't be tricked into hitting internal addresses.
Webhooks are great for reacting instantly. If you'd rather poll for received messages on your own schedule, use the Inbox API instead — or use both.