Cargo-Planner Docs

Zwei-Wege-Kommunikation

Ein häufiges Nutzungsmuster ist, dass Sie einige Eingabedaten an unsere API senden, wir die Berechnungen durchführen und Ihnen dann ein Ergebnis präsentiert wird, das Sie in Ihre Anwendung einbetten können.

Manchmal möchten Sie manuell einige Umstellungen vornehmen, bei denen Sie möglicherweise einige Ladungen aus einem Container löschen und andere hinzufügen möchten. Wenn Sie solche Änderungen vorgenommen haben, wäre es großartig, wenn Ihre Anwendung diese Änderungen ebenfalls erhält - Sie möchten, dass Cargo-Planner auch mit Ihrem System interagiert. Dann möchten Sie einige Webhooks hinzufügen.

Webhooks

Webhooks sind im Grunde Endpunkte, die Sie einrichten, um sich für bestimmte Ereignisse zu abonnieren.

Angenommen, sobald ein Ladeplan von Ihnen gespeichert/aktualisiert wird, möchten Sie, dass dieses Ergebnis an Ihren Server gesendet wird. So erreichen Sie das:

Creating a webhook

  1. Gehen Sie zum Entwicklerportal in der Webanwendung
  2. Erweitern Sie den Abschnitt Webhooks
  3. Drücken Sie auf Webhook erstellen
  4. Geben Sie die URL ein, an die die Daten gesendet werden sollen, und wählen Sie aus, für welches Ereignis Sie sich abonnieren möchten
  5. Drücken Sie auf Speichern

Ereignisse abhören

Fügen Sie auf Ihrem Server einen Endpunkt hinzu, derselbe wie der, den Sie im obigen URL-Abschnitt beim Erstellen des Endpunkts angegeben haben


from flask import Flask, request, abort
import hmac
import hashlib

app = Flask(__name__)

@app.route('/events-from-cargoplanner/', methods=['POST'])
def receive_webhook():
    payload = request.get_data(as_text=True)
    received_signature = request.headers.get('X-Hub-Signature')

    secret = "_nf7TmrgTJt6Gk43d9aSAK_yOEE58KXlTgvotei3Xe4"  # Fügen Sie das für Ihren Endpunkt generierte Geheimnis hinzu

    expected_signature = hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest()

    if hmac.compare_digest(f'sha256={expected_signature}', received_signature):
        # Verarbeiten Sie das Payload
        return "Payload processed", 200
    else:
        abort(403, 'Signature verification failed')

if __name__ == '__main__':
    app.run()

Beim Erstellen eines Webhooks erhalten Sie ein Geheimnis, das auf Ihrem Server verwendet werden kann, um sicherzustellen, dass die Daten tatsächlich von Cargo-Planner stammen.