Cargo-Planner Docs
Communication bidirectionnelle
Un modèle d’utilisation fréquent est que vous envoyez des données d’entrée à notre API, nous effectuons les calculs et vous recevrez ensuite un résultat, que vous pouvez intégrer dans votre application.
Parfois, vous souhaitez effectuer manuellement quelques réarrangements où vous pourriez vouloir supprimer certaines cargaisons d’un conteneur et en ajouter d’autres. Lorsque vous avez effectué ce type de modifications, il serait idéal que votre application reçoive également ces changements - vous voulez que Cargo-Planner interagisse également avec votre système. Vous voudrez alors ajouter des webhooks.
Webhooks
Les webhooks sont essentiellement des points de terminaison que vous configurez pour vous abonner à certains événements.
Disons que dès qu’un plan de chargement est enregistré / mis à jour par vous, vous souhaitez que ce résultat soit envoyé à votre serveur. Voici comment vous y parvenez :

- Allez dans le portail Développeur de l’application web
- Développez la section des webhooks
- Appuyez sur créer un webhook
- Entrez l’URL à laquelle vous souhaitez que les données soient envoyées ainsi que l’événement auquel vous souhaitez vous abonner
- Appuyez sur enregistrer
Écouter les événements
Sur votre serveur, ajoutez un point de terminaison, identique à celui que vous avez spécifié dans la section URL ci-dessus lors de la création du point de terminaison
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" # Ajoutez le secret généré pour votre point de terminaison
expected_signature = hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest()
if hmac.compare_digest(f'sha256={expected_signature}', received_signature):
# Traitez la charge utile
return "Payload processed", 200
else:
abort(403, 'Signature verification failed')
if __name__ == '__main__':
app.run()
Lors de la création d’un webhook, vous recevrez un secret qui peut être utilisé sur votre serveur pour vous assurer que les données proviennent bien de Cargo-Planner.