Cargo-Planner Docs

Comunicación bidireccional

Un patrón de uso frecuente es que envías algunos datos de entrada a nuestra API, nosotros hacemos el cálculo y luego se te presentará un resultado, que puedes integrar en tu aplicación.

A veces quieres hacer algunos reajustes manualmente donde podrías querer eliminar algunas cargas de un contenedor, y otras más. Cuando hayas hecho ese tipo de modificaciones, sería genial que tu aplicación también recibiera esos cambios; quieres que Cargo-Planner interactúe con tu sistema también. Entonces querrás agregar algunos webhooks.

Webhooks

Los webhooks son básicamente puntos de conexión que configuras para suscribirte a ciertos eventos.

Digamos que tan pronto como un plan de carga es guardado/actualizado por ti, quieres que este resultado sea enviado a tu servidor. Así es como logras eso:

Creating a webhook

  1. Ve al portal de Desarrollador en la aplicación web
  2. Expande la sección de webhooks
  3. Presiona crear webhook
  4. Ingresa la URL a la que deseas que se envíen los datos, así como selecciona a qué evento deseas suscribirte
  5. Presiona guardar

Escuchando eventos

En tu servidor, agrega un punto de conexión, igual al que especificaste en la sección de URL arriba al crear el punto de conexión


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"  # Add the secret generated for your endpoint

    expected_signature = hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest()

    if hmac.compare_digest(f'sha256={expected_signature}', received_signature):
        # Process the payload
        return "Payload processed", 200s
    else:
        abort(403, 'Signature verification failed')

if __name__ == '__main__':
    app.run()

Al crear un webhook recibirás un secreto que puedes usar en tu servidor para asegurarte de que los datos realmente provienen de Cargo-Planner.