Cargo-Planner Docs

Comunicazione bidirezionale

Un modello di utilizzo frequente è che invii alcuni dati di input alla nostra API, noi facciamo i calcoli e ti verrà poi 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 altri. Quando hai apportato quel tipo di modifiche, sarebbe fantastico se anche la tua applicazione ricevesse quelle 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 imposti per iscriverti a determinati eventi.

Supponiamo che non appena un piano di carico viene salvato / aggiornato da te, vuoi 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 webhook
  3. Premi crea webhook
  4. Inserisci l’URL a cui vuoi che i dati siano inviati e seleziona l’evento a cui vuoi iscriverti
  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.