Cargo-Planner Docs
双向通信
一种常见的使用模式是,您将一些输入数据发送到我们的API,我们进行数据处理,然后您将获得一个结果,您可以将其嵌入到您的应用程序中。
有时您可能希望手动进行一些重新安排,例如删除某些货物或添加其他货物。当您进行了这些修改时,如果您的应用程序也能获得这些更改,那将是很好的——您希望Cargo-Planner也与您的系统互动。此时,您需要添加一些webhooks。
Webhooks
Webhooks基本上是您设置的用于订阅某些事件的端点。
假设一旦您保存/更新了一个装载计划,您希望将此结果发送到您的服务器。以下是实现方法:

- 进入网络应用程序中的开发者门户
- 展开webhooks部分
- 点击创建webhook
- 输入您希望数据发布到的URL,并选择您希望订阅的事件
- 点击保存
监听事件
在您的服务器上,添加一个端点,与您在上面创建端点时指定的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。