Cargo-Planner Docs

双向通信

一种常见的使用模式是,您将一些输入数据发送到我们的API,我们进行数据处理,然后您将获得一个结果,您可以将其嵌入到您的应用程序中。

有时您可能希望手动进行一些重新安排,例如删除某些货物或添加其他货物。当您进行了这些修改时,如果您的应用程序也能获得这些更改,那将是很好的——您希望Cargo-Planner也与您的系统互动。此时,您需要添加一些webhooks。

Webhooks

Webhooks基本上是您设置的用于订阅某些事件的端点。

假设一旦您保存/更新了一个装载计划,您希望将此结果发送到您的服务器。以下是实现方法:

Creating a webhook

  1. 进入网络应用程序中的开发者门户
  2. 展开webhooks部分
  3. 点击创建webhook
  4. 输入您希望数据发布到的URL,并选择您希望订阅的事件
  5. 点击保存

监听事件

在您的服务器上,添加一个端点,与您在上面创建端点时指定的URL部分相同


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"  # 添加为您的端点生成的密钥

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

    if hmac.compare_digest(f'sha256={expected_signature}', received_signature):
        # 处理负载
        return "Payload processed", 200
    else:
        abort(403, 'Signature verification failed')

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

创建webhook时,您将收到一个密钥,可以在您的服务器上使用,以确保数据确实来自Cargo-Planner。