Antworten per Webhook an Ihren Endpunkt senden
Senden Sie jede Antwort, die eine Kampagne erhält, signiert an eine eigene HTTPS-Adresse, oder beliebige Nutzdaten per Workflow-Schritt. So unterscheidet sich der Webhooks-Connector von Einstellungen → API → Webhooks.
Auf dieser Seite
Der Connector Webhooks sendet jede Antwort, die eine Kampagne erhält, wenige Augenblicke später als signierten POST an eine Adresse auf Ihrem eigenen Server. Auch ein Workflow kann ihn nutzen, um alles zu senden, was der Lauf weiß. Am Ende dieser Anleitung haben Sie einen Endpunkt, der Antworten empfängt, und die Mittel, um zu prüfen, dass jede Anfrage wirklich von Polzy kommt.
Der Webhooks-Connector ist im Tarif Business enthalten. Nur ein Admin kann ihn verbinden und festlegen, wohin die Antworten einer Kampagne gehen.
Welchen Webhook brauchen Sie?
Polzy kann Ihren Server auf drei Arten aufrufen:
| Webhooks-Connector (dieser Artikel) | Einstellungen → API → Webhooks | Schritt Ausgehender Webhook | |
|---|---|---|---|
| Was gesendet wird | Jede Antwort einer Kampagne, oder die Nutzdaten eines Workflow-Schritts | Ereignisse im Arbeitsbereich: eine Antwort angelegt, eine Kampagne beendet, eine Aktion angelegt oder abgeschlossen | Was der Workflow-Schritt festlegt |
| Wo es eingestellt wird | Integrationen, dann der Tab Integrationen einer Kampagne oder ein Workflow-Schritt | Einstellungen → API → Webhooks | Ein Workflow |
| Tarif | Business | Team | Team |
| Signiert | X-Polzy-Signature, über den Body | X-Polzy-Signature, über Zeitstempel und Body | Nein |
| Wenn die Zustellung fehlschlägt | Insgesamt drei Versuche | Sechs Versuche in etwa einer halben Stunde, mit einem Protokoll jedes Versuchs | Die Fehlerregel des Schritts entscheidet |
Für Ereignisse im ganzen Arbeitsbereich siehe Webhooks senden und empfangen.
Bevor Sie beginnen
Sie brauchen:
- Einen Arbeitsbereich im Tarif Business und darin die Rolle Admin.
- Integrationen für den Arbeitsbereich eingeschaltet, unter Einstellungen → Allgemein → Was dieser Arbeitsbereich leistet.
- Einen Endpunkt im Internet, per HTTPS, der einen
POSTmit JSON-Body annimmt und innerhalb von 10 Sekunden mit einem 2xx-Status antwortet. Polzy lehnthttp://-Adressen und Adressen in einem privaten Netzwerk ab.
Den Webhooks-Connector verbinden
Beim Verbinden speichern Sie, was alle Anfragen gemeinsam haben: das Signaturgeheimnis und etwaige Header.
- Öffnen Sie in der Seitenleiste unter Automatisieren die Seite Integrationen und wählen Sie den Tab Verfügbar.
- Suchen Sie Webhooks und wählen Sie Verbinden.
- Geben Sie bei Signaturgeheimnis einen langen Zufallswert ein und bewahren Sie eine Kopie für Ihren Server auf.
- Fügen Sie unter HTTP-Header die Header hinzu, die mitgesendet werden sollen, etwa
Authorization. Ihre Werte werden verschlüsselt gespeichert. Wohin sie gehen, steht unter Gut zu wissen. - Wählen Sie Verbinden. Der Test antwortet Connected. Each survey and step names the endpoint it posts to.
Bleibt das Signaturgeheimnis leer, wird eines für Sie erzeugt – es wird aber nie angezeigt, sodass Sie damit keine Signaturen prüfen könnten. Geben Sie Ihr eigenes ein. Um es später zu ändern, wählen Sie Konfigurieren und tippen das neue über den gespeicherten Wert.
Einer Kampagne ihren Endpunkt geben
- Öffnen Sie Kampagnen, dann die Kampagne und ihren Tab Integrationen.
- Suchen Sie unter Verbindung hinzufügen Webhooks und wählen Sie Verbinden. Steht auf der Schaltfläche Einrichten, ist der Connector noch nicht mit dem Arbeitsbereich verbunden.
- Geben Sie bei Endpunkt die Adresse ein, an die die Antworten dieser Kampagne gesendet werden.
- Wählen Sie Änderungen speichern.
Webhooks erscheint dann unter Mit dieser Kampagne verbunden, mit Sendet an und der Adresse, dem Schalter, Konfiguration bearbeiten, Trennen und der Zahl der gesendeten und fehlgeschlagenen Antworten. Jede Kampagne kann an ihren eigenen Endpunkt senden.
Was Ihr Endpunkt empfängt
Jede Antwort ist ein POST mit diesen Headern:
| Header | Inhalt |
|---|---|
Content-Type | application/json |
X-Polzy-Event | response.submitted für eine Kampagnenantwort; aus einem Workflow der Ereignisname des Schritts. |
X-Polzy-Signature | Der HMAC-SHA256 des unveränderten Anfrage-Bodys, mit dem Signaturgeheimnis berechnet, hexadezimal geschrieben. |
X-Polzy-Timestamp | Der timestamp aus dem Body. |
Idempotency-Key | Nur aus einem Workflow-Schritt: gleich bei einer Wiederholung desselben Schritts, damit Sie sie ignorieren können. |
Und diesen JSON-Body:
| Feld | Inhalt |
|---|---|
event | response.submitted. |
timestamp | Wann die Anfrage gesendet wurde. Bei einer anonymen Antwort der Tag, an dem sie gegeben wurde. |
survey.id, survey.title | Die ID und der Titel der Umfrage. |
response.id | Die ID der Antwort in Polzy. Leer bei einer anonymen Antwort. |
response.submittedAt | Wann die Antwort abgeschlossen wurde. Bei einer anonymen Antwort nur der Tag. |
response.answers | Ein Eintrag je beantworteter Frage, jeweils mit questionId, questionText und value. |
response.score | Der Gesamtscore, falls er beim Senden der Anfrage schon berechnet war. |
Eine anonyme Antwort enthält ihren Inhalt, ihren Score und ihren Tag und nichts, womit sich die Person erkennen oder zeitlich einordnen ließe. Polzy wartet bei jeder Antwort auf die Sicherheitsprüfung, bis zu 10 Minuten, bevor es sie sendet; eine zur Sicherheitsprüfung zurückgehaltene Antwort kommt als Platzhaltertext an. Die Mindestgruppengröße hält einzelne Antworten nicht zurück.
Die Signatur prüfen
- Lesen Sie den Anfrage-Body genau so, wie er angekommen ist, bevor Sie ihn parsen.
- Berechnen Sie seinen HMAC-SHA256 mit Ihrem Signaturgeheimnis, hexadezimal geschrieben.
- Vergleichen Sie ihn mit
X-Polzy-Signature, mit einem Vergleich in konstanter Zeit. Weichen sie ab, lehnen Sie die Anfrage ab.
Der Zeitstempel ist Teil des Bodys – ein veränderter Zeitstempel macht also auch die Signatur ungültig.
Einen Webhook aus einem Workflow senden
- Öffnen Sie Workflows und den Workflow, oder legen Sie einen neuen an.
- Ziehen Sie unter Connectors in Installierte Schritte den Schritt Webhook senden · Webhooks auf die Arbeitsfläche.
- Geben Sie bei Endpunkt ein, wohin dieser Schritt sendet.
- Behalten Sie bei Ereignisname
workflow.stepoder nennen Sie das Ereignis, das Ihr Server erwartet. Es wird alsX-Polzy-Eventgesendet. - Lassen Sie Nutzdaten leer, um alles zu senden, was der Lauf weiß, oder schreiben Sie das gewünschte JSON, mit
{{für Werte aus dem Lauf. - Wählen Sie Test senden, um eine Anfrage mit einer Beispielantwort zu senden.
Der Schritt wird mit dem Geheimnis der Verbindung signiert und gibt die Antwort Ihres Servers als {{connector.statusCode}} und {{connector.response}} weiter.
Prüfen, ob es funktioniert
Auf dem Tab Integrationen der Kampagne zählt die Aktivitätszeile die gesendeten und die fehlgeschlagenen Antworten. Die Seite des Connectors listet jede Übermittlung unter Aktivität, mit Erfolgreich oder Fehlgeschlagen und dem Grund.
Fehlerbehebung
Unter Aktivität steht bei einer fehlgeschlagenen Übermittlung Webhook failed: und der Grund; der Lauf eines Workflows zeigt denselben Grund ohne dieses Präfix.
- Webhook failed: only https endpoints are allowed. Der Endpunkt muss mit
https://beginnen. - Webhook failed: private addresses are not allowed. Die Adresse zeigt in ein privates Netzwerk, etwa
localhostoder10.0.0.5. Verwenden Sie eine aus dem Internet erreichbare Adresse. - Webhook failed: that host could not be found. Der Name in der Adresse existiert nicht. Prüfen Sie die Schreibweise.
- Webhook failed: mit einem Status wie
500oder timeout of 10000ms exceeded. Ihr Endpunkt hat mit einem Fehler geantwortet oder länger als 10 Sekunden gebraucht. Alles außer einer 2xx-Antwort gilt als fehlgeschlagen, und die Übermittlung wird insgesamt dreimal versucht. - No endpoint for this survey. Set one on its Integrations tab. Die Kampagne hat keinen Endpunkt. Fügen Sie über Konfiguration bearbeiten auf dem Tab Integrationen der Kampagne einen hinzu.
- Die Signatur stimmt nicht. Berechnen Sie sie über den unveränderten Body, vor jedem Parsen, mit dem Geheimnis, das Sie eingegeben haben. Wurde das Geheimnis für Sie erzeugt, geben Sie Ihr eigenes ein.
- Ihr Header kommt nicht an. Siehe unten: Header gehen nur an einen Host, an den die Verbindung selbst sendet.
Antworten, die eingingen, bevor der Endpunkt gespeichert war, oder während der Schalter aus war, werden später nicht gesendet. Exportieren Sie sie stattdessen über Antworten der Umfrage.
Gut zu wissen
- Wohin gehen die HTTP-Header? Nur an einen Host, an den die Verbindung selbst sendet. Ein Endpunkt, den eine Kampagne oder ein Schritt auf einem anderen Host wählt, wird ohne sie aufgerufen – ein gespeicherter
Authorization-Wert erreicht so nie eine Adresse, für die er nicht gedacht war. Verlassen Sie sich auf die Signatur, um Anfragen von Polzy von allen anderen zu unterscheiden. - Werden unvollständige Antworten gesendet? Nein. Nur abgeschlossene Antworten, jede einmal.
- Kann mein Endpunkt mit Daten antworten? Bei einem Workflow-Schritt ja: Die Antwort wird als
{{connector.response}}für spätere Schritte aufbewahrt. Bei den Antworten einer Kampagne zählt nur ihr Status.
Verwandte Artikel
Angemeldete Mitglieder können Polzy fragen oder dem Team über Support schreiben. Wie schnell wir antworten, hängt von Ihrem Tarif ab.
