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:

- Vai al portale Sviluppatore nell’applicazione web
- Espandi la sezione dei webhook
- Premi crea webhook
- Inserisci l’URL a cui vuoi che i dati siano inviati e seleziona quale evento vuoi sottoscrivere
- 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.