Webhook-en ikuspegi orokorra
Zer dira webhook-ak?
Webhook-ek vitalera-ri zure aplikaziora denbora errealeko HTTP POST jakinarazpenak bidaltzea ahalbidetzen diote plataforman gertaerak gertatzen direnean. APIa aldaketen bila kontsultatu beharrean, webhook-ek datuak zure amaiera-puntura bultzatzen dituzte gertaerak gertatzen diren bezain laster.
Nola funtzionatzen du
- Konfiguratu webhook URL bat zure vitalera erakundearen ezarpenetan
- Hautatu jaso nahi dituzun gertaera motak
- Ezarri sekretua sinadura-egiaztapenerako
- vitalera-k HTTP POST eskaerak bidaltzen ditu zure URLra bat datozen gertaerak gertatzen direnean
Gertaera motak
| Gertaera mota | Aktibatzailea |
|---|---|
observation.created | Paziente batentzako behaketa berri bat erregistratzen da |
alarm.triggered | Alarma-arau bat behaketa batek aktibatzen du |
alarm.resolved | Aurretik aktibatutako alarma bat ebazten da |
consent.granted | Paziente batek datu-partekatzeko adostasuna ematen du |
consent.revoked | Paziente batek adostasuna errebokatzen du |
questionnaire_response.submitted | Paziente batek galdetegi-erantzun bat bidaltzen du |
care_plan.activated | Zainketa-plan bat aktibatzen da |
care_plan.completed | Zainketa-plan batek amaiera-data iristen du edo osatzen da |
Webhook-aren karga
Webhook karga guztiek egitura koherente bat jarraitzen dute:
{
"event_type": "observation.created",
"timestamp": "2024-01-15T10:30:00Z",
"organization_id": 42,
"data": {
"id": 810,
"resourceType": "Observation",
"observation_definition": {
"observation_name": "heart_rate",
"observation_method": "device"
},
"category": "physiological_data",
"value": "72",
"value_type": "int",
"value_unit": "bpm",
"issued": "2024-01-15T10:30:00Z",
"effective_datetime": "2024-01-15T10:30:00Z",
"source_id": 1
}
}
Aktibatutako alarma adibidea
{
"event_type": "alarm.triggered",
"timestamp": "2024-01-15T10:31:00Z",
"organization_id": 42,
"data": {
"alarm_id": 55,
"alarm_name": "High Heart Rate",
"severity": "high",
"patient_id": 123,
"triggering_observation": {
"observation_name": "heart_rate",
"value": "145",
"value_unit": "bpm"
}
}
}
Sinadura-egiaztapena
Webhook dei guztiek x-webhook-signature goiburu bat biltzen dute eskaeraren gorputzaren HMAC-SHA256 sinadura batekin, zure webhook sekretuarekin kalkulatua.
Webhook bat egiaztatzeko:
- Atera
x-webhook-signaturegoiburuaren balioa - Kalkulatu eskaeraren gorputz gordinaren HMAC-SHA256 zure webhook sekretuarekin
- Konparatu kalkulatutako sinadura goiburuaren balioarekin (erabili denbora-konstanteko konparazioa)
Python adibidea
import hmac
import hashlib
def verify_webhook(payload: bytes, signature: str, secret: str) -> bool:
expected = hmac.new(
secret.encode("utf-8"),
payload,
hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature)
Node.js adibidea
const crypto = require('crypto');
function verifyWebhook(payload, signature, secret) {
const expected = crypto.createHmac('sha256', secret).update(payload).digest('hex');
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
}
Segurtasun-jardunbide onak
- Beti erabili HTTPS amaiera-puntuak
- Ezarri sekretu bakarra webhook konfigurazio bakoitzeko
- Egiaztatu sinadura sarrerako eskaera bakoitzean prozesatu aurretik
- Erantzun
200 OKazkar eta prozesatu karga asinkronoki - Gorde webhook sekretua modu seguruan (adib., ingurune-aldagaia, sekretu-kudeatzailea)
Berriro saiatze-politika
Zure amaiera-puntuak 2xx ez den erantzun bat itzultzen badu edo denbora-muga gaindituko balu, vitalera-k atzerapen esponentzialarekin saiatzen da berriro:
| Saiakera | Atzerapena |
|---|---|
| 1. saiakera | ~1 minutu |
| 2. saiakera | ~5 minutu |
| 3. saiakera | ~30 minutu |
| 4. saiakera | ~2 ordu |
Saiakera guztiak agortzen direnean, gertaera huts egin duen gisa markatzen da. Huts egindako bidalketak zure erakundearen ezarpenetan berrikusi ditzakezu.
Laguntza behar duzu?
Jarri harremanetan support@vitalera.io helbidean zure erakundearentzat webhook-ak konfiguratzeko.