Meldingen

Meldingen vanuit je eigen systeem

Gaat er een alarm af, valt een koelcel uit of ligt je website plat, dan wil je dat het juiste iemand het meteen ziet. Met één aanroep stuurt je eigen systeem een WhatsApp-bericht vanaf jouw bedrijfsnummer. Home Assistant, n8n en elke tool die een webadres kan aanroepen, kunnen het.

Wat je nodig hebt

Een WhatsApp-nummer dat aan Tobachat gekoppeld is. De melding komt van dat nummer, met jouw bedrijfsnaam erboven.

  • Een goedgekeurd template in de categorie Utility, met vaste tekst rond de variabelen. Bijvoorbeeld: Melding van {{1}}: {{2}}. Je krijgt dit bericht omdat je storingsmeldingen van ons ontvangt. Een template mag niet beginnen of eindigen met een variabele.
  • Een API-sleutel. Die maak je onder Koppelingen, bij Webhook / API. De sleutel is één keer zichtbaar, dus bewaar hem meteen in je wachtwoordmanager.
  • Het nummer van wie de melding krijgt, met landcode. Dat is iemand die erom vroeg: jijzelf, je team of een klant die zich voor meldingen aanmeldde.

De aanroep

Stuur een POST naar https://api.tobachat.nl/v1/send-template met je sleutel in de header X-API-Key. In de body staan het telefoonnummer, de naam van het template zoals je die bij Templates ziet, de taal en de waarden voor de variabelen.

Gebruik de nummers uit je template als sleutels ("1", "2"). Heeft je template benoemde variabelen, gebruik dan die namen. De taal mag weg als die templatenaam maar in één taal bestaat.

Zet er een Idempotency-Key bij, een eigen code per melding. Probeert je systeem het opnieuw omdat het geen antwoord kreeg, dan ziet Tobachat dat het dezelfde melding is en stuurt hem geen tweede keer. Dat geldt 24 uur.

Voorbeeld met curl
curl -X POST https://api.tobachat.nl/v1/send-template \
  -H "X-API-Key: tc_live_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: koelcel-2-2026-10-30T08:15" \
  -d '{
    "phone": "+31612345678",
    "template": "storingsmelding",
    "language": "nl",
    "variable_mapping": { "1": "Koelcel 2", "2": "8,4 graden" }
  }'

Home Assistant

In Home Assistant gebruik je een rest_command. Zet de sleutel in secrets.yaml, het commando in configuration.yaml en roep het aan vanuit een automatisering. Na een herstart van Home Assistant staat het commando klaar.

Het voorbeeld stuurt een melding zodra een lekmelder aanslaat. Elke andere trigger werkt net zo: een deur die openstaat, een accu die bijna leeg is, een vriezer die te warm wordt.

secrets.yaml
tobachat_api_key: tc_live_...
configuration.yaml
rest_command:
  tobachat_alert:
    url: https://api.tobachat.nl/v1/send-template
    method: POST
    headers:
      X-API-Key: !secret tobachat_api_key
    content_type: "application/json"
    payload: >-
      {"phone": "{{ phone }}",
       "template": "storingsmelding",
       "language": "nl",
       "variable_mapping": {"1": {{ where | to_json }}, "2": {{ what | to_json }}}}
automations.yaml
- alias: "Lek in de technische ruimte"
  triggers:
    - trigger: state
      entity_id: binary_sensor.lekmelder_technische_ruimte
      to: "on"
  actions:
    - action: rest_command.tobachat_alert
      data:
        phone: "+31612345678"
        where: "Technische ruimte"
        what: "water op de vloer"

n8n

In n8n gebruik je de node HTTP Request. Kies POST en vul het adres https://api.tobachat.nl/v1/send-template in. Kies bij Authentication Generic Credential Type en dan Header Auth, met als naam X-API-Key en als waarde je sleutel.

Zet Send Body aan, kies JSON en Using JSON, en zet het veld op Expression. Dan vult n8n de waarden uit de vorige stap in, bijvoorbeeld uit een monitor die meldt dat een website niet antwoordt. Wil je herhalingen tegenhouden, zet dan bij Send Headers de header Idempotency-Key op {{ $execution.id }}-{{ $itemIndex }}, zodat elke ontvanger in dezelfde run een eigen code heeft.

Body van de HTTP Request-node
{
  "phone": "+31612345678",
  "template": "storingsmelding",
  "language": "nl",
  "variable_mapping": {
    "1": "{{ $json.monitor }}",
    "2": "{{ $json.status }}"
  }
}

Wat je terugkrijgt

Een 200 betekent dat Meta het bericht heeft aangenomen. Of het is aangekomen, zie je aan de vinkjes bij de melding in je inbox, in het gesprek met de ontvanger. Bij een fout staat de code in het veld error.

AntwoordWat het betekentWat je doet
200 met wamidVerstuurd.Niets.
200 met duplicate: trueDeze Idempotency-Key is in de laatste 24 uur al gebruikt.Niets, de melding is al verstuurd.
401 MISSING_AUTHDe sleutel ontbreekt, klopt niet of is ingetrokken.Controleer de header X-API-Key.
403 CONTACT_OPTED_OUT of CONTACT_BLOCKEDDe ontvanger heeft zich afgemeld of is geblokkeerd.Niet opnieuw proberen.
404 RESOURCE_NOT_FOUNDGeen goedgekeurd template met die naam en taal.Kijk bij Templates naar de naam en de status.
409 TEMPLATE_NAME_AMBIGUOUSDe naam bestaat in meer dan één taal.Zet language erbij.
429 RATE_LIMIT_EXCEEDEDMeer dan 120 aanroepen per minuut met deze sleutel.Even wachten en dan opnieuw.
500 of hogerEr ging iets mis bij ons of bij Meta.Later opnieuw, met dezelfde Idempotency-Key.

De regels

Meldingen volgen dezelfde regels als elk ander bericht dat jij begint. Ze gaan alleen naar mensen die erom vroegen. Stuurt iemand STOP of een ander afmeldwoord uit je instellingen, dan weigert Tobachat vanaf dat moment elke melding naar dat nummer.

Meta beoordeelt zelf of een template een melding is of reclame. Zet er geen aanbieding in, anders kan Meta het template als marketing indelen. Dan kost het meer en mag het alleen nog naar contacten met toestemming voor marketing.

Meta rekent per template dat je verstuurt. Wat dat kost per land, staat bij Kosten. Antwoordt iemand op een melding, dan komt dat binnen in je inbox.

Behandel de sleutel als een wachtwoord. Wie hem heeft, kan berichten sturen vanaf jouw nummer. Lekt hij uit, trek hem dan in onder Koppelingen, bij Webhook / API, of maak een nieuwe. De oude werkt dan direct niet meer.

VolgendeKosten