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:

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