توسعه‌دهندگان

داریک را به محصول و جریان داده خود متصل کنید.

اتصال با یک قرارداد ساده انجام می‌شود: درخواست امضاشده، به‌همراه داده‌ی کسب‌وکار شما در safe_context. کلیدها و مستندات کامل پس از ورود در پنل در دسترس‌اند.

مسیرهای اتصال

سه راه برای وصل شدن

بسته به اینکه چقدر کنترل می‌خواهید و داده‌تان کجاست، یکی از این مسیرها را انتخاب می‌کنید.

برای نقاط تماس وب

سرویس واسط سایت

یک سرویس سبک که بین سایت شما و هسته‌ی داریک می‌نشیند: شناسه‌ی نشست را هش می‌کند، پیام و زمینه را پاک‌سازی می‌کند و فقط داده‌ی لازم را از اتصال‌دهنده می‌گیرد.

برای محصولات اختصاصی

فراخوانی مستقیم API

اگر می‌خواهید کنترل کامل روی جریان داشته باشید، مستقیم با همان قرارداد امضاشده به نقاط پایانی درخواست بزنید.

برای داده‌ی کسب‌وکار

منابع داده‌ی سفارشی

اتصال‌دهنده‌ها فقط فیلدهایی را می‌گیرند که داریک در needed_data درخواست کرده. اتصال‌دهنده‌ی تولیدی هرگز داده‌ی محصول، موجودی، سفارش یا پرداخت را جعل نمی‌کند.

مرجع

نقاط پایانی

فهرست نقاط پایانی عمومی داریک
متدمسیراحراز هویتکاربرد
POST/v1/understandTenant HMACتحلیل پرسش کاربر: نیت، زمینه و داده‌ای که برای پاسخ لازم است.
POST/v1/respondTenant HMACساخت پاسخ نهایی بر پایه‌ی زمینه و داده‌ی کسب‌وکار در safe_context.
POST/v1/feedbackTenant HMACثبت بازخورد روی یک پاسخ با همان request_id، برای مسیر خوداصلاحی.
GET/v1/healthبدون احراز هویتبررسی سلامت سرویس.

احراز هویت

امضای HMAC

هر درخواست با کلید API، یک timestamp و امضای HMAC-SHA256 روی «بدنهٔ خام + نقطه + timestamp» ارسال می‌شود. مقایسه‌ی امضا در زمان ثابت انجام می‌شود و تحمل اختلاف زمانی قابل تنظیم است.

respond.mjs
// Node.js — امضای HMAC و فراخوانی /v1/respond
import crypto from "crypto";

const API     = process.env.DARIK_API_URL;    // دامنهٔ سرور شما
const API_KEY = process.env.DARIK_API_KEY;    // از تب «کلیدهای API» در پنل
const SECRET  = process.env.DARIK_API_SECRET; // فقط یک‌بار هنگام ساخت نمایش داده می‌شود

const body = JSON.stringify({
  tenant_id: process.env.DARIK_TENANT_ID,
  request_id: crypto.randomUUID(),
  user_message: "گارانتی محصولات چند ماهه؟",
  safe_context: {
    store_name: "فروشگاه شما",
    warranty: "همه محصولات ۱۸ ماه گارانتی دارند.",
    return_policy: "کالای بازنشده تا ۷ روز قابل مرجوعی است."
  }
});

const ts  = Math.floor(Date.now() / 1000).toString();
// امضا روی «بدنهٔ خام + نقطه + timestamp»
const sig = crypto.createHmac("sha256", SECRET)
  .update(body + "." + ts).digest("hex");

const res = await fetch(API + "/v1/respond", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-darik-api-key":   API_KEY,
    "x-darik-timestamp": ts,
    "x-darik-signature": sig
  },
  body
});

console.log(await res.json());
sign.php
<?php
// PHP — همان قرارداد امضا
$body      = json_encode($payload, JSON_UNESCAPED_UNICODE);
$timestamp = time();
$signature = hash_hmac('sha256', $body . "." . $timestamp, $tenantSecret);
?>
feedback.mjs
// اگر پاسخی درست نبود، همان request_id را برگردانید
await fetch(API + "/v1/feedback", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-darik-api-key":   API_KEY,
    "x-darik-timestamp": ts,
    "x-darik-signature": sig
  },
  body: JSON.stringify({
    request_id: "<همان request_id درخواست قبلی>",
    feedback_type: "negative_feedback"
  })
});

کلیدها و محیط

دامنه‌های دسترسی و متغیرهای محیطی

دامنه‌های دسترسی کلید

  • respond

    اجازه‌ی فراخوانی /v1/respond.

  • feedback

    اجازه‌ی فراخوانی /v1/feedback.

  • understand

    اجازه‌ی فراخوانی /v1/understand.

ساخت، چرخش و ابطال کلید از تب «کلیدهای API» در پنل انجام می‌شود. کلید ابطال‌شده بلافاصله مسدود می‌گردد.

متغیرهای محیطی

  • DARIK_API_URL

    آدرس سرویس داریک.

  • DARIK_API_KEY

    کلید عمومی مستأجر؛ در هدر x-darik-api-key ارسال می‌شود.

  • DARIK_API_SECRET

    راز امضا؛ فقط یک‌بار هنگام ساخت کلید نمایش داده می‌شود.

  • DARIK_TENANT_ID

    شناسه‌ی مستأجر، قابل مشاهده در پنل.

زیرساخت

مسیریابی درخواست

پیش از ساخت پاسخ، داریک تصمیم می‌گیرد درخواست از کدام مسیر برود. این تصمیم بخشی از معماری است و در گزارش هر درخواست ثبت می‌شود.

پاسخ از دانش ساخته‌شده

وقتی پاسخ معتبر و قابل استفاده‌ی مجدد وجود دارد.

تفکیک چند نیت هم‌زمان

وقتی یک پیام بیش از یک پرسش در خود دارد.

پاسخ محتاطانه

وقتی داده کافی هست اما اطمینان کامل نیست.

ارجاع به مدل، با اعتبارسنجی

وقتی تولید پاسخ لازم است؛ خروجی پیش از تحویل بررسی می‌شود.

درخواست توضیح بیشتر

وقتی پرسش مبهم است؛ به‌جای حدس زدن، سؤال روشن‌کننده پرسیده می‌شود.

روش سنجش این مسیرها و محدودیت‌های داده‌ی فعلی در صفحه‌ی روش سنجش معماری توضیح داده شده است.

در دسترس نیست

Webhooks و بسته‌ی SDK رسمی

در حال حاضر داریک نقطه‌ی پایانی Webhook و بسته‌ی SDK منتشرشده‌ای ندارد. تا زمانی که این‌ها وجود نداشته باشند، مستندی برایشان نمی‌نویسیم. اتصال از طریق همان قرارداد HTTP بالا انجام می‌شود که در هر زبانی قابل پیاده‌سازی است — نمونه‌ی Node.js و PHP در همین صفحه آمده.

اگر جریان کاری شما به این موارد نیاز دارد، با تیم رونیک در میان بگذارید.