Wiederholungen und Zustand
#Was als Erfolg zählt
Jeder 2xx-Status innerhalb von 10 Sekunden. Alles andere ist ein Fehlschlag: eine Zeitüberschreitung, ein Verbindungsfehler, ein Status 3xx, 4xx oder 5xx. Weiterleitungen werden nie befolgt, deshalb ist eine 3xx-Antwort ein Fehlschlag.
- 410 Gone schaltet den Endpunkt sofort ab. Nutze es, wenn SmartChat aufhören soll.
- Bei 429 und 5xx beachtet SmartChat den Header
Retry-After(höchstens 24 Stunden).
#Zeitplan der Wiederholungen
Eine fehlgeschlagene Zustellung wird noch einmal versucht. Es gibt bis zu 9 Versuche, und zwar spätestens 72 Stunden nach dem Ereignis (der letzte Versuch wird auf diesen Zeitpunkt vorgezogen). Zu jeder Wartezeit kommt eine zufällige Änderung von bis zu 20 Prozent, damit viele Zustellungen nicht im selben Moment ankommen. Der Header SmartChat-Delivery-Attempt sagt dir, den wievielten Versuch du bekommen hast.
| Attempt | Wait before the attempt |
|---|---|
| 1 | immediately |
| 2 | 30 seconds |
| 3 | 2 minutes |
| 4 | 10 minutes |
| 5 | 1 hour |
| 6 | 4 hours |
| 7 | 12 hours |
| 8 | 1 day |
| 9 | 2 days |
Nach dem letzten Versuch ist die Zustellung failed. Fehlgeschlagene Zustellungen bleiben 30 Tage im Zustellprotokoll. Du kannst sie von Hand noch einmal senden.
#Zustand eines Endpunkts
Ein Endpunkt wird nie nach einer einzigen fehlgeschlagenen Zustellung abgeschaltet.
| Zustand | Was er bedeutet | Wie er sich ändert |
|---|---|---|
active | Empfängt Ereignisse. | 5 fehlgeschlagene Versuche hintereinander: degraded. |
degraded | Empfängt noch Ereignisse. Der Zustand steht in der App und im Endpunkt (status). SmartChat sendet noch keine Warn-Mail, prüfe den Status also ab und zu. | Ein Erfolg: active. Mindestens 3 Tage ohne Erfolg und mindestens 20 Versuche hintereinander: paused. |
paused | Empfängt keine Ereignisse. Zustellungen, die beim Pausieren des Endpunkts warten, schlagen mit endpoint_paused fehl und werden nicht von selbst später gesendet. | 7 Tage ohne Erfolg: disabled. Der Aufruf "Wieder einschalten" macht ihn wieder active. |
disabled | Empfängt keine Ereignisse. | Eine 410-Antwort schaltet einen Endpunkt sofort ab. Der Aufruf "Wieder einschalten" macht ihn wieder active. |
Der Test-Aufruf ändert den Zustand eines Endpunkts nicht.
Ereignisse während einer Pause kommen nur mit einem Replay zurück. Solange ein Endpunkt paused oder disabled ist, werden seine Ereignisse nicht für ihn eingereiht und wartende Zustellungen werden als fehlgeschlagen markiert. Schaltest du ihn wieder ein, sende replay_since im Aufruf "Wieder einschalten" (die Zeit deiner letzten guten Zustellung, höchstens 7 Tage zurück und 10.000 Ereignisse), oder rufe danach "Ereignisse erneut senden (Replay)" auf. Ohne Replay gehen diese Ereignisse für diesen Endpunkt verloren.
#Verpasste Ereignisse zurückholen
- Eine Zustellung noch einmal senden: der Aufruf "Erneut zustellen" bei einer Zustellung.
- Einen Endpunkt wieder einschalten: der Aufruf "Wieder einschalten" (für Endpunkte mit
pausedunddisabled). Du kannst im selben Aufruf verlangen, dass Ereignisse ab einer Zeit erneut gesendet werden. - Ereignisse erneut senden (Replay): Der Aufruf "Ereignisse erneut senden (Replay)" sendet Ereignisse eines Zeitraums noch einmal (höchstens 7 Tage zurück und 10.000 Ereignisse; er braucht einen
Idempotency-Key).
Alle Aufrufe stehen in der Webhook-Endpunkte API.