So habe ich einen Webhook innerhalb des Contentful-Dashboards erstellt, der ausgelöst wird, wenn ein Eintrag veröffentlicht oder gelöscht wird, und so funktioniert es. Ich möchte jedoch Einträge über die Content Management JavaScript API veröffentlichen können, ohne den Webhook auszulösen. Gibt es irgendwelche Maßnahmen, die ich ergreifen kann, um dies zu ermöglichen?Contentful: Verhindern, dass Webhook ausgelöst wird, wenn Content Management API verwendet wird
Antwort
Leider gibt es keinen Unterschied, wenn ein Eintrag direkt über die API oder die Web-App veröffentlicht wird. Die Web-App ruft einfach die API unter der Haube auf.
Was möglich ist, ist es, den veröffentlichten Eintrag innerhalb des Web-Hooks zu überprüfen und zu bewerten, ob Code ausgeführt werden soll oder nicht. Vielleicht indem Sie bei der Veröffentlichung über die API ein verstecktes Feld festlegen.
Zum Beispiel sagen Sie ein Feld haben publishedThroughAPI
, dieses Feld stellen Sie sicher, aus der Lieferung API weggelassen wird und nicht bearbeitet werden:
Dann dieses Feld wahr, nur um, bevor sie durch den JavaScript-API veröffentlicht und prüfen diese Feld in Ihrem Webhook und kehren Sie einfach aus dem Haken, wenn das Feld auf True festgelegt ist.
Der Webhook erhält eine Nutzlast, die Ihren veröffentlichten Eintrag enthält. Im Grunde die gleiche Nutzlast wie für eine normale Anfrage mit dem Unterschied, dass sie jedes Gebietsschema enthält. Im Folgenden finden Sie ein kleines Beispiel:
{
"sys": {
//System meta data, created at, published at etc.
},
"fields": {
//All fields of the entry.
"title": {
"en-US": "English title",
"sv-SE": "Swedish title"
},
"publishedThroughAPI": {
"en-US": true,
"sv-SE": true
}
}
}
- 1. Verhindern, dass Klickereignis ausgelöst wird, wenn dblclick-Ereignis ausgelöst wird
- 2. Contentful Content-Management (Node-Lib): Eintrag wird nicht aktualisiert
- 3. Verhindern, dass Button-Ereignis ausgelöst wird
- 4. Was könnte verhindern, dass Standardproxy verwendet wird
- 5. Verhindern, dass Formularauthentifizierungscookie über Browser verwendet wird
- 6. Warte, bis ein Webhook ausgelöst wird
- 7. Verhindern, dass sich die Tastatur öffnet, wenn selection.addRange() verwendet wird
- 8. jQuery UI - verhindern, dass Shake-Effekt mehrere Male ausgelöst wird
- 9. Verhindern, dass ein Ereignis ausgelöst wird, wenn eine Midi-Nachricht gesendet wird
- 10. Wie kann ich verhindern, dass die AddressAlreadyInUseException ausgelöst wird?
- 11. Verhindern, dass die Click-Funktion mehrere Male ausgelöst wird
- 12. Verhindern, dass die Bildlauffunktion bei jeder Bildlauffunktion ausgelöst wird
- 13. Ereignis wird nicht ausgelöst, wenn Javascript zum Postback verwendet wird
- 14. Eine java.net.ConnectException wird ausgelöst, wenn HttpURLConnection verwendet wird
- 15. Verhindern, dass PropertyGrid.Update() langsamer wird
- 16. Verhindern, dass TablewViewHeader angezeigt wird, wenn [tableView reloadData] ausgeführt wird
- 17. Verhindern, dass ShowDialog() zurückgegeben wird, wenn auf OK geklickt wird
- 18. Verhindern, dass MicrosoftAjaxWebForms.debug.js geladen wird
- 19. Versprechen, dass nicht ausgelöst wird, wenn Karma + Jasmine + PhantomJs verwendet wird?
- 20. Wenn SQLiteOutOfMemoryException ausgelöst wird
- 21. Wenn Validierungsausnahme ausgelöst wird?
- 22. Verhindern, dass CSS überschrieben wird
- 23. Verhindern, dass Task geplant wird
- 24. Verhindern, dass Winform maximiert wird?
- 25. Verhindern, dass "Notationspalette" angezeigt wird
- 26. Verhindern, dass JOptionPane "geschlossen" wird, indem irgendwo anders geklickt wird
- 27. Karte wird nicht angezeigt, wenn Google Maps API verwendet wird
- 28. Verhindern, dass die HTML-Seite zwischengespeichert wird
- 29. Verhindern, dass Tap-Ereignis ausgelöst wird, wenn in jquerymobile auf Android-Webview wischen
- 30. So verhindern Sie, dass der Spring App-Kontext heruntergefahren wird, bis der Shutdown-Haken ausgelöst wird
Das ist alles durchaus Sinn macht aber, wie kann ich wissen, welche Parameter/Datensatz in die Webhook gesendet werden? –
Der veröffentlichte Eintrag wird als Payload an den Webhook gesendet. Aktualisieren meiner Antwort mit einem Beispiel. – Robban
Gibt es eine Möglichkeit, die Payload mit PHP zu extrahieren? –