SDK

SDK สำหรับ Node.js และ Python ของ EngageLab OTP ที่จัดเตรียมไว้อย่างเป็นทางการ

EngageLab มี SDK อย่างเป็นทางการสำหรับ Node.js และ Python เพื่อช่วยให้คุณผสานฟังก์ชันการส่ง OTP, การตรวจสอบ และการเรียกกลับ Webhook ได้โดยไม่ต้องพึ่งพา dependency ใด ๆ

Node.js SDK

Node.js SDK อย่างเป็นทางการรองรับ Node.js 14+ และมีการประกาศ TypeScript

การติดตั้ง

npm install engagelab-otp
              
              npm install engagelab-otp

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

เริ่มต้นใช้งานอย่างรวดเร็ว

const { OTPClient } = require('engagelab-otp'); const otp = new OTPClient( process.env.ENGAGELAB_DEV_KEY, process.env.ENGAGELAB_DEV_SECRET ); // 平台生成 OTP — 最简单的方式 const { message_id } = await otp.send('+6591234567', 'your-template-id', {}, 'en'); const { verified } = await otp.verify(message_id, userTypedCode);
              
              const { OTPClient } = require('engagelab-otp');

const otp = new OTPClient(
  process.env.ENGAGELAB_DEV_KEY,
  process.env.ENGAGELAB_DEV_SECRET
);

// 平台生成 OTP — 最简单的方式
const { message_id } = await otp.send('+6591234567', 'your-template-id', {}, 'en');
const { verified }   = await otp.verify(message_id, userTypedCode);

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

การเรียกกลับ Webhook (Express)

EngageLab ใช้ X-CALLBACK-ID (HMAC-SHA256) ในการลงลายเซ็นการเรียกกลับ SDK จะตรวจสอบลายเซ็นและแยกวิเคราะห์เหตุการณ์ให้คุณ

const express = require('express'); const { WebhookVerifier } = require('engagelab-otp'); const app = express(); app.use(express.json()); const verifier = new WebhookVerifier({ username: process.env.ENGAGELAB_WEBHOOK_USERNAME, secret: process.env.ENGAGELAB_WEBHOOK_SECRET, }); app.post('/webhook', verifier.middleware(async (events) => { for (const e of events) { if (e.kind !== 'message_status') continue; if (!e.is_terminal) continue; // 传输中(如正在进行补发)— 等待 if (e.status === 'delivered') await markDelivered(e.message_id); else if (e.status === 'verified') await markVerified(e.message_id); } }));
              
              const express = require('express');
const { WebhookVerifier } = require('engagelab-otp');

const app = express();
app.use(express.json());

const verifier = new WebhookVerifier({
  username: process.env.ENGAGELAB_WEBHOOK_USERNAME,
  secret:   process.env.ENGAGELAB_WEBHOOK_SECRET,
});

app.post('/webhook', verifier.middleware(async (events) => {
  for (const e of events) {
    if (e.kind !== 'message_status') continue;
    if (!e.is_terminal) continue; // 传输中(如正在进行补发)— 等待

    if (e.status === 'delivered')        await markDelivered(e.message_id);
    else if (e.status === 'verified')    await markVerified(e.message_id);
  }
}));

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

สำหรับตัวอย่างเพิ่มเติม รวมถึงการส่งรหัส OTP ที่กำหนดเองและการจัดการข้อผิดพลาด โปรดไปที่ engagelab-otp บน npm หรือ คลัง Github


Python SDK

Python SDK อย่างเป็นทางการรองรับ Python 3.8+ และไม่มี dependency ภายนอกใด ๆ

การติดตั้ง

pip install engagelab-otp
              
              pip install engagelab-otp

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

เริ่มต้นใช้งานอย่างรวดเร็ว

import os from engagelab_otp import OTPClient otp = OTPClient( os.environ["ENGAGELAB_DEV_KEY"], os.environ["ENGAGELAB_DEV_SECRET"], ) # 平台生成 OTP — 最简单的方式 result = otp.send("+6591234567", "your-template-id", {"name": "Alice"}, language="en") check = otp.verify(result["message_id"], user_typed_code) if check["verified"]: print("Success!")
              
              import os
from engagelab_otp import OTPClient

otp = OTPClient(
    os.environ["ENGAGELAB_DEV_KEY"],
    os.environ["ENGAGELAB_DEV_SECRET"],
)

# 平台生成 OTP — 最简单的方式
result = otp.send("+6591234567", "your-template-id", {"name": "Alice"}, language="en")
check  = otp.verify(result["message_id"], user_typed_code)
if check["verified"]:
    print("Success!")

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

การเรียกกลับ Webhook (Flask)

SDK มี WebhookVerifier ที่สามารถตรวจสอบลายเซ็น HMAC-SHA256 และแยกวิเคราะห์ payload ของเหตุการณ์ได้โดยอัตโนมัติ

import os from flask import Flask from engagelab_otp import WebhookVerifier, MessageStatusEvent app = Flask(__name__) verifier = WebhookVerifier( username=os.environ["ENGAGELAB_WEBHOOK_USERNAME"], secret=os.environ["ENGAGELAB_WEBHOOK_SECRET"], ) def handle(events): for e in events: if not isinstance(e, MessageStatusEvent): continue if not e.is_terminal: continue # 传输中,等待 if e.status == "delivered": mark_delivered(e.message_id) elif e.status == "verified": mark_verified(e.message_id) app.add_url_rule( "/webhook", "engagelab_webhook", verifier.flask_view(handle), methods=["POST"], )
              
              import os
from flask import Flask
from engagelab_otp import WebhookVerifier, MessageStatusEvent

app = Flask(__name__)

verifier = WebhookVerifier(
    username=os.environ["ENGAGELAB_WEBHOOK_USERNAME"],
    secret=os.environ["ENGAGELAB_WEBHOOK_SECRET"],
)

def handle(events):
    for e in events:
        if not isinstance(e, MessageStatusEvent):
            continue
        if not e.is_terminal:
            continue   # 传输中,等待
        
        if e.status == "delivered":
            mark_delivered(e.message_id)
        elif e.status == "verified":
            mark_verified(e.message_id)

app.add_url_rule(
    "/webhook",
    "engagelab_webhook",
    verifier.flask_view(handle),
    methods=["POST"],
)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

สำหรับตัวอย่างเพิ่มเติม รวมถึงการส่งรหัส OTP ที่กำหนดเองและการจัดการข้อผิดพลาด โปรดไปที่ engagelab-otp บน PyPI หรือ คลัง Github

Icon Solid Transparent White Qiyu
ติดต่อฝ่ายขาย