2017-06-06 6 views
2

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

2

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: enter image description here

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 
     } 
    } 
} 
+0

Das ist alles durchaus Sinn macht aber, wie kann ich wissen, welche Parameter/Datensatz in die Webhook gesendet werden? –

+0

Der veröffentlichte Eintrag wird als Payload an den Webhook gesendet. Aktualisieren meiner Antwort mit einem Beispiel. – Robban

+0

Gibt es eine Möglichkeit, die Payload mit PHP zu extrahieren? –

Verwandte Themen