Felo API PlatformFelo API Platform

الدعم

أجب عن أسئلة الدعم من وثائقك

أنشئ LiveDoc وحمّل مركز المساعدة ودليل التشغيل الداخلي واسترجع المقاطع التي تجيب التذكرة ودع النموذج يجيب من تلك الأدلة فقط.

الوقت20 دقيقةالمستوىأساسيمحدّث2026-10-29
لمنفرق الدعمنجاح العملاءبناة helpdesk

انسخ الموجّه

استبدل الحقول بين الأقواس المربعة وألصق في Claude Code أو Codex أو أي ذكاء اصطناعي يملك وصولًا إلى الطرفية. يثبّت مهارة Felo ويسأل قبل إنفاق الرصيد وينفّذ سير العمل.

أجب عن سؤال الدعم هذا باستخدام وثائقنا فقط: [سؤال العميل].

قاعدة المعرفة: [رابط مركز المساعدة أو LiveDoc short_id]. مسار التصعيد: [المسؤول أو قائمة الانتظار].
سياق العميل المتاح: [الخطة، المنطقة، المنتج] (لا تطلب كلمة مرور أو بيانات دفع أبدًا).

أنتج:
1. إجابة مباشرة في جملتين إلى أربع.
2. مقاطع الوثائق الداعمة، مع عنوان المورد.
3. الخطوة التالية للعميل.
4. ملاحظة داخلية: الموارد المستخدمة ودرجات الصلة.

القواعد:
- أجب فقط من المقاطع المسترجعة. إن لم توجد نتائج أو كانت الصلة منخفضة، صعّد؛ لا تخمّن أبدًا.
- لا تختلق سياسات أو استردادات أو أسعارًا أو إجراءات على الحساب.
- لا تُدخل بيانات العميل الخاصة أو بيانات الاعتماد أو معلومات الدفع.
- اسأل قبل استهلاك الأرصدة في الإدخال أو الاسترجاع.
- لا ترسل الإجابة إلى العميل؛ أعدها إليّ للمراجعة.

تتضمن النسخة خطوات التثبيت وقواعد الأمان أيضًا.

ما تحصل عليه

مخرجات نموذجية لتشغيل واحد. ليست توليدًا مباشرًا.

مثال إجابة (مقتطف)

الإجابة: يتجدد خطتك في أول كل شهر. إذا فشلت البطاقة تُعاد المحاولة ثلاثة أيام قبل إيقاف المقعد.

المصادر: «الأسئلة الشائعة للفواتير» - https://example.com/help/billing

إذا لم يغطِّ هذا: صعّد إلى طابور الفواتير مع معرف الفاتورة.

الاستدعاءات الدقيقة

للمطورين: سير العمل نفسه ككود، بترتيب التنفيذ.

عرض استدعاءات API الفعلية
  1. أنشئ قاعدة المعرفة

    أنشئ القاعدة عبر LiveDoc API واحفظ short_id.

    support.ts
    const BASE = "https://openapi.felo.ai";
    const headers = {
      Authorization: `Bearer ${process.env.FELO_API_KEY}`,
      "Content-Type": "application/json",
    };
    
    async function felo<T>(path: string, body?: unknown): Promise<T> {
      const res = await fetch(`${BASE}${path}`, {
        method: body ? "POST" : "GET",
        headers,
        body: body ? JSON.stringify(body) : undefined,
      });
      if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);
      return res.json() as Promise<T>;
    }
    
    type LiveDocData = { data: { short_id: string } };
    
    const kb = await felo<LiveDocData>("/v2/livedocs", {
      name: "Support knowledge base",
      description: "Help center, policy pages, and internal runbooks",
    });
    
    const kbId = kb.data.short_id; // save this in your config

    مخرجات نموذجية

    {
      "short_id": "PvyKouzJirXjFdst4uKRK3",
      "name": "Support knowledge base",
      "description": "Help center, policy pages, and internal runbooks"
    }
  2. حمّل مركز المساعدة العام

    أضف رابط مركز المساعدة كمورد LiveDoc.

    support.ts
    type UrlResult = {
      data: {
        url: string;
        status: string;
        fail_reason: string | null;
        resource_id: string | null;
      }[];
    };
    
    const added = await felo<UrlResult>(
      `/v2/livedocs/${kbId}/resources/urls`,
      {
        urls: [
          "https://example.com/help/getting-started",
          { url: "https://example.com/help/billing", title: "Billing FAQ" },
        ],
      },
    );
    
    const failed = added.data.filter((item) => item.status === "failed");

    مخرجات نموذجية

    [
      { "url": "https://example.com/help/getting-started", "status": "success", "resource_id": "res_003" },
      { "url": "https://example.com/help/billing", "status": "existed", "resource_id": "res_004" }
    ]
  3. أضف الوثائق الداخلية

    أضف دليل التشغيل الداخلي كمستند.

    support.ts
    type ResourceData = { data: { id: string } };
    
    const runbook = `# Refund policy
    
    Refunds are available within 30 days of purchase. Requests after 30 days
    need a manual review by the billing team.
    `;
    
    const policy = await felo<ResourceData>(
      `/v2/livedocs/${kbId}/resources/doc`,
      { title: "Refund policy", content: runbook },
    );
    
    console.log(policy.data.id); // use this for updates
  4. استرجع أدلة السؤال

    يعيد البحث الدلالي المقاطع والدرجات الأكثر صلة.

    support.ts
    type Hit = { id: string; title: string; content: string; score: number };
    
    async function findEvidence(question: string) {
      const res = await felo<{ data: Hit[] }>(
        `/v2/livedocs/${kbId}/resources/retrieve`,
        { query: question },
      );
      return res.data.filter((hit) => hit.score >= 0.7).slice(0, 4);
    }
    
    const question = "Can I get a refund after 45 days?";
    const hits = await findEvidence(question);

    مخرجات نموذجية

    [
      {
        "id": "res_005",
        "title": "Refund policy",
        "content": "Refunds are available within 30 days of purchase…",
        "score": 0.92
      }
    ]
  5. أجب من الأدلة فقط

    دع النموذج يستخدم المقاطع المسترجعة فقط ويصعّد عند غياب النتائج.

    support.ts
    type Completion = {
      choices: { message: { content: string | null } }[];
      usage: { prompt_tokens: number; completion_tokens: number; total_tokens: number };
    };
    
    const context = hits
      .map((hit) => `### ${hit.title}\n${hit.content}`)
      .join("\n\n");
    
    const completion = await felo<Completion>("/api/v1/chat/completions", {
      model: "anthropic/claude-haiku-5.5",
      messages: [
        {
          role: "system",
          content:
            "Answer only from the context. If the context does not cover the question, say so and hand the ticket to a human.",
        },
        {
          role: "user",
          content: `Context:\n${context}\n\nQuestion: ${question}`,
        },
      ],
    });
    
    console.log(completion.choices[0].message.content);
    console.log(completion.usage.total_tokens);

    مخرجات نموذجية

    "No. The Refund policy says refunds are available within 30 days of purchase, so a request at 45 days needs a manual review by the billing team."

ما يتضمنه

  • LiveDoc من مركز المساعدة ودليل التشغيل الداخلي
  • بحث دلالي بالمقاطع والعناوين
  • إجابة بمصادر قابلة للاقتباس
  • تصعيد واضح عند نقص التغطية

ما لا يفعله

  • يجيب من وثائقك فقط ولا يتصفح الويب المفتوح
  • لا ينفذ إجراءات حساب أو استرداد أو تغيير خطة
  • لا بيانات عملاء خاصة أو بيانات اعتماد في القاعدة
  • الوثائق القديمة تعطي إجابات قديمة؛ حدّثها
  • مسودة إجابة فقط ولا يرسلها للعميل

أسئلة

من أين الإجابة؟

من LiveDoc فقط: صفحات مركز المساعدة ودليل التشغيل. يعيد البحث مقاطع ويكتب الوكيل منها.

إن لم تغطِّ الوثائق؟

تصعيد. غياب النتائج أو انخفاض الصلة يُعد عدم تغطية لا إذنًا بالتخمين.

كيف أبقي القاعدة محدثة؟

عند تغير سياسة أضف الروابط مجددًا وحدّث المستندات؛ يتضمن سير العمل أوامر تحديث وتدقيق.

هل يمكن استخدامه في قائمة التذاكر؟

نعم كخطوة مسودة. أبقِ اعتمادًا بشريًا قبل الإرسال للعميل.

هل يعالج أسئلة خاصة بالحساب؟

بالوثائق وحدها لا. بيانات الحساب في نظامك؛ مرر السياق الآمن اللازم فقط ولا بيانات اعتماد أبدًا.

كم تكلفة تشغيل واحد؟

يُحتسب الإدخال والبحث حسب الاستخدام؛ الأسعار الحالية في صفحة الأسعار ويطلب الموجّه الموافقة قبل الإنفاق.

سير عمل مرتبط

اجعله مناسبًا لك

الوصفة نفسها، معدّلة بحسب طريقة تسليمك الفعلية.

خط منتج واحد فقط

اقتصر على منتج واحد لتكون القاعدة أنظف.

أضف تصنيف التذاكر

صنّف نوع السؤال أولًا ثم ابحث الوثائق المناسبة.

تدقيق دوري

افحص الروابط المكسورة والسياسات القديمة شهريًا.

صفحات المراجع خلف هذه الوصفة والخطوات التالية.