تیشتر
خانه / مستندات / زنجیره‌سازی روتین‌ها و امنیت وب‌هوک

زنجیره‌سازی روتین‌ها و امنیت وب‌هوک

نحوه اتصال زنجیره‌ای چند روتین به یکدیگر (Agent Chaining)، وب‌هوک‌های ورودی و اعتبارسنجی امضای رمزنگاری‌شده X-Tishtar-Signature

زنجیره‌سازی روتین‌ها و امنیت وب‌هوک

برای تیم‌های فنی، استارتاپ‌ها و فرآیندهای چندمرحله‌ای، تیشتر امکان زنجیره‌سازی روتین‌ها (Composable Agent Network) و ارتباط دوطرفه از طریق وب‌هوک‌های امضاشده را فراهم می‌کند.


۱. زنجیره‌سازی روتین‌ها (Agent Chaining)

به جای نوشتن یک پرامپت بسیار طولانی و پیچیده، می‌توانید چند روتین تخصصی را به صورت زنجیره‌ای به هم متصل کنید تا خروجی تاییدشده روتین الف به طور خودکار روتین ب را بیدار کرده و تغذیه کند:

[روتین الف: رادار قیمت و موجودی فروشگاه رقیب]
       │  (فقط در صورت کشف کاهش قیمت بیش از ۵٪ فعال می‌شود)
       ▼
[روتین ب: سناریونویس کمپین و پیشنهاد متقابل]
       │  (متن استوری و کد تخفیف رقابتی را آماده می‌کند)
       ▼
[مقصد نهایی: ارسال به کانال تلگرام تیم فروش + ثبت در Google Sheets]

مزایای زنجیره‌سازی:

  1. صرفه‌جویی هوشمند در قطره‌ها: روتین دوم فقط زمانی بیدار می‌شود و قطره مصرف می‌کند که روتین اول یک تغییر واقعی (Delta) کشف کرده باشد.
  2. دقت و ماژولار بودن: هر روتین نقش تخصصی و حافظه دلتا مجزای خود را حفظ می‌کند.

۲. فراخوانی روتین با وب‌هوک ورودی (Incoming Webhook Trigger)

هر روتین در تیشتر می‌تواند یک آدرس وب‌هوک ورودی اختصاصی داشته باشد. با ارسال یک درخواست POST از سرور، سایت یا فروشگاه خود به این آدرس، روتین بلافاصله در فضای ابری اجرا شده و داده‌های ارسالی شما را تحلیل می‌کند:

curl -X POST "https://api.tishtar.app/api/v1/hooks/trigger/rt_849204" \
  -H "Authorization: Bearer YOUR_TRIGGER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"event": "new_order_review", "comment": "بسته‌بندی عالی بود اما ارسال ۲ روز تاخیر داشت"}'

۳. اعتبارسنجی امضای وب‌هوک خروجی (X-Tishtar-Signature)

وقتی تیشتر نتیجه یک روتین را به آدرس وب‌هوک سرور شما می‌فرستد، بدنه خام درخواست را با کلید اختصاصی شما و الگوریتم HMAC-SHA256 امضا کرده و در هدر X-Tishtar-Signature قرار می‌دهد.

نمونه کد اعتبارسنجی در Node.js / TypeScript

import crypto from 'node:crypto';

export function verifyTishtarWebhook(
  rawBody: string,
  signatureHeader: string,
  webhookSecret: string
): boolean {
  const expectedSignature = crypto
    .createHmac('sha256', webhookSecret)
    .update(rawBody, 'utf8')
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(signatureHeader, 'hex'),
    Buffer.from(expectedSignature, 'hex')
  );
}

نمونه کد اعتبارسنجی در Python

import hmac
import hashlib

def verify_tishtar_webhook(raw_body: bytes, signature_header: str, secret: str) -> bool:
    expected = hmac.new(
        secret.encode("utf-8"),
        msg=raw_body,
        digestmod=hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature_header)