Cargo-Planner Docs

Communication bidirectionnelle

Un modèle d’utilisation fréquent est que vous envoyiez des données d’entrée à notre API, nous effectuons les calculs et vous obtiendrez 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 certains chargements 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 :

Creating a webhook

  1. Allez dans le portail Développeur de l’application web
  2. Développez la section des webhooks
  3. Appuyez sur créer un webhook
  4. Entrez l’URL à laquelle vous souhaitez que les données soient envoyées ainsi que l’événement auquel vous souhaitez vous abonner
  5. 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 le payload
        return "Payload processed", 200
    else:
        abort(403, 'Échec de la vérification de la signature')

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.