Cargo-Planner Docs

Comunicación bidireccional

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

A veces deseas hacer algunas reorganizaciones manualmente, donde podrías querer eliminar algunas cargas de un contenedor y agregar otras. Cuando hayas hecho ese tipo de modificaciones, sería genial que tu aplicación también obtuviera esos cambios; deseas que Cargo-Planner interactúe también con tu sistema. 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 se guarda/actualiza por ti, deseas que este resultado se envíe a tu servidor. Así es como logras eso:

Creating a webhook

  1. Ve al portal de Desarrolladores 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 publiquen los datos, así como selecciona a qué evento deseas suscribirte
  5. Presiona guardar

Escuchando eventos

En tu servidor, agrega un punto de conexión, el mismo 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"  # Agrega el secreto generado para tu punto de conexión

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

    if hmac.compare_digest(f'sha256={expected_signature}', received_signature):
        # Procesar la carga útil
        return "Payload processed", 200
    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.