Cargo-Planner Docs

Tvåvägskommunikation

Ett vanligt användningsmönster är att du skickar indata till vårt API, vi gör beräkningarna och du får sedan ett resultat som du kan bädda in i din applikation.

Ibland vill du manuellt göra några omarrangemang där du kanske vill ta bort några artiklar från en container, och några andra. När du har gjort sådana ändringar skulle det vara bra om din applikation också fick dessa ändringar - du vill att Cargo-Planner ska interagera med ditt system också. Då vill du lägga till några webhooks.

Webhooks

Webhooks är i princip slutpunkter som du ställer in för att prenumerera på vissa händelser.

Låt oss säga att så snart en lastplan sparas/uppdateras av dig, vill du att detta resultat ska skickas till din server. Så här uppnår du det:

Skapa en webhook

  1. Gå till utvecklarportalen i webbapplikationen
  2. Expandera avsnittet för webhooks
  3. Tryck på skapa webhook
  4. Ange URL:en du vill att datan ska skickas till samt välj vilken händelse du vill prenumerera på
  5. Tryck på spara

Lyssna på händelser

På din server, lägg till en slutpunkt, samma som den du angav i URL-sektionen ovan när du skapade slutpunkten


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"  # Lägg till den hemlighet som genererats för din slutpunkt

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

    if hmac.compare_digest(f'sha256={expected_signature}', received_signature):
        # Bearbeta payload
        return "Payload bearbetad", 200s
    else:
        abort(403, 'Signaturverifiering misslyckades')

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

När du skapar en webhook kommer du att få en hemlighet som kan användas på din server för att säkerställa att datan faktiskt kommer från Cargo-Planner.