Cargo-Planner Docs

Comunicazione bidirezionale

Un modello di utilizzo frequente è che invii alcuni dati di input alla nostra API, noi eseguiamo i calcoli e ti verrà presentato un risultato, che puoi incorporare nella tua applicazione.

A volte vuoi fare manualmente alcune riorganizzazioni in cui potresti voler eliminare alcuni carichi da un container e aggiungerne altri. Quando hai fatto questo tipo di modifiche, sarebbe fantastico se anche la tua applicazione ricevesse tali modifiche - vuoi che Cargo-Planner interagisca anche con il tuo sistema. A questo punto, vorrai aggiungere alcuni webhook.

Webhook

I webhook sono fondamentalmente endpoint che configuri per iscriverti a determinati eventi.

Supponiamo che non appena un piano di carico venga salvato / aggiornato da te, tu voglia che questo risultato venga inviato al tuo server. Ecco come ottenerlo:

Creazione di un webhook

  1. Vai al portale Sviluppatore nell’applicazione web
  2. Espandi la sezione dei webhook
  3. Premi crea webhook
  4. Inserisci l’URL a cui vuoi che i dati siano inviati e seleziona quale evento vuoi sottoscrivere
  5. Premi salva

Ascoltare gli eventi

Sul tuo server, aggiungi un endpoint, lo stesso che hai specificato nella sezione URL sopra quando hai creato l’endpoint


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"  # Aggiungi il segreto generato per il tuo endpoint

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

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

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

Quando crei un webhook riceverai un segreto che può essere utilizzato sul tuo server per assicurarti che i dati provengano effettivamente da Cargo-Planner.