Cargo-Planner Docs

İki Yönlü İletişim

Sık kullanılan bir model, bazı giriş verilerini API’mize göndermeniz, biz sayısal hesaplamaları yaparız ve ardından uygulamanıza yerleştirebileceğiniz bir sonuç sunulur.

Bazen bir konteynerden bazı yükleri silmek ve bazılarını eklemek isteyebileceğiniz manuel yeniden düzenlemeler yapmak istersiniz. Bu tür değişiklikleri yaptığınızda, uygulamanızın da bu değişiklikleri alması harika olurdu - Cargo-Planner’ın sisteminizle etkileşime girmesini istersiniz. O zaman bazı web kancaları eklemek isteyeceksiniz.

Web Kancaları

Web kancaları, belirli olaylara abone olmak için ayarladığınız uç noktalardır.

Diyelim ki bir yük planı sizin tarafınızdan kaydedildiğinde/güncellendiğinde, bu sonucun sunucunuza gönderilmesini istiyorsunuz. Bunu şu şekilde gerçekleştirirsiniz:

Web kancası oluşturma

  1. Web uygulamasında Geliştirici portalına gidin
  2. Web kancaları bölümünü genişletin
  3. Web kancası oluştur’a basın
  4. Verilerin gönderileceği URL’yi girin ve abone olmak istediğiniz olayı seçin
  5. Kaydet’e basın

Olayları Dinleme

Sunucunuzda, yukarıdaki URL bölümünde uç noktayı oluştururken belirttiğinizle aynı uç noktayı ekleyin


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"  # Uç noktanız için oluşturulan gizli anahtarı ekleyin

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

    if hmac.compare_digest(f'sha256={expected_signature}', received_signature):
        # Yükü işleyin
        return "Yük işlendi", 200
    else:
        abort(403, 'İmza doğrulaması başarısız oldu')

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

Bir web kancası oluşturduğunuzda, verilerin gerçekten Cargo-Planner’dan geldiğinden emin olmak için sunucunuzda kullanabileceğiniz bir gizli anahtar alacaksınız.