Felo API PlatformFelo API Platform

সহায়তা

সহায়তা টিকিটকে ভিত্তিভিত্তিক উত্তরের খসড়ায় ট্রায়াজ করুন

টিকিট মাস্ক করুন, Chat দিয়ে অভিপ্রায় ও অগ্রাধিকার শ্রেণিবিন্যাস করুন, নথি থেকে উত্তর দেওয়া অংশ আনুন, প্রকাশ্য ঘটনা আলোচনা যাচাই করুন এবং মানব অনুমোদনের জন্য রুট করা খসড়া রাখুন।

সময়২০ মিনিটস্তরমধ্যমহালনাগাদ2026-10-30
কাদের জন্যসহায়তা লিডHelpdesk Agentসহায়তা ইঞ্জিনিয়ার

প্রম্পট কপি করুন

বর্গ বন্ধনীর ঘরগুলো বদলে Claude Code, Codex বা টার্মিনাল অ্যাক্সেসসহ AI-তে পেস্ট করুন। এটি Felo স্কিল ইনস্টল করে, ক্রেডিটের আগে জিজ্ঞাসা করে ও ওয়ার্কফ্লো চালায়।

এই সাপোর্ট টিকিট ট্রায়াজ করুন এবং মানুষের পর্যালোচনার জন্য উত্তর খসড়া লিখুন: [নাম, ইমেল, অ্যাকাউন্ট ID, পেমেন্ট ডেটা ও অন্যান্য শনাক্তকরণ তথ্য মুছে টিকিট পেস্ট করুন]।

পণ্য ক্ষেত্র: [পণ্য]। প্ল্যান বা অঞ্চল: [উত্তরের জন্য দরকার হলে]। ডকুমেন্ট উৎস: [হেল্প সেন্টার URL বা LiveDoc short_id]।
অনুমোদন পথ: [কে পর্যালোচনা করবে]। এস্কেলেশন কিউ: [দল বা চ্যানেল]।

তৈরি করুন:
1. উদ্দেশ্য: একটি ক্যাটাগরি ও এক বাক্যের কারণ।
2. অগ্রাধিকার: জরুরি / সাধারণ / নিম্ন, প্রযোজ্য নিয়মসহ।
3. প্রমাণ: টিকিটের উত্তর দেওয়া ডকুমেন্ট অংশ, শিরোনাম ও প্রাসঙ্গিকতাসহ।
4. ঘটনা যাচাই: প্রকাশ্য প্রতিবেদন কি বৃহৎ আউটেজ নির্দেশ করে? লিঙ্ক ও তারিখ, বা “কোনো প্রকাশ্য সংকেত নেই”।
5. রাউটিং: খসড়া, গ্রাহকের কাছে অতিরিক্ত তথ্য চাওয়া বা এস্কেলেট — এবং কেন।
6. উত্তর খসড়া: দুই থেকে চার বাক্য, শুধু প্রমাণের ভিত্তিতে, ব্যবহৃত উৎসের নামসহ।

নিয়ম:
- নাম, ইমেল, অর্ডার নম্বর, টোকেন বা পেমেন্ট ডেটা API কলে বা আউটপুটে দেবেন না। শুধু মাস্ক করা টিকিটে কাজ করুন।
- শুধু উদ্ধার করা ডকুমেন্ট থেকে উত্তর দিন। প্রমাণ না থাকলে এস্কেলেট করুন, অনুমান করবেন না।
- রিফান্ড, ছাড়, সময়সীমা বা অ্যাকাউন্ট পরিবর্তনের প্রতিশ্রুতি দেবেন না; এসব এস্কেলেশনে পাঠান।
- প্রকাশ্য আউটেজ গুজব সংকেত, প্রমাণ নয়। পোস্ট ও তারিখ উদ্ধৃত করুন।
- ক্রেডিট খরচের আগে পরিকল্পিত কল দেখান এবং আমার অনুমোদনের অপেক্ষা করুন।
- উত্তর পাঠাবেন না, টিকিট আপডেট করবেন না এবং অ্যাকাউন্ট কাজ করবেন না। খসড়া পর্যালোচনার জন্য ফেরত দিন।
- ফলাফল ./support-triage.md-এ লিখুন এবং চ্যাটে সারসংক্ষেপ দিন।

কপিতে ইনস্টল ধাপ ও নিরাপত্তা নিয়মও আছে।

আপনি কী পান

একটি রানের উদাহরণ আউটপুট। লাইভ জেনারেশন নয়।

নমুনা ট্রায়াজ (অংশ)

ট্রায়াজ — নমুনা টিকিট

উদ্দেশ্য

বিলিং / নবায়ন প্রশ্ন। গ্রাহক জিজ্ঞাসা করেন কেন প্ল্যান আবার নবায়ন হলো।

অগ্রাধিকার

সাধারণ। এটি বিলিং প্রশ্ন, আউটেজ নয়, এবং গ্রাহক আটকে নেই।

প্রমাণ

  • “বিলিং সম্পর্কিত সাধারণ প্রশ্ন” — নবায়ন সময় ও কার্ড ব্যর্থতার পুনঃচেষ্টা। প্রাসঙ্গিকতা: উচ্চ।
  • “প্ল্যান পরিবর্তন” — নবায়নের মধ্যে ডাউনগ্রেড। প্রাসঙ্গিকতা: মধ্যম।

ঘটনা যাচাই

গত ৪৮ ঘণ্টায় কোনো প্রকাশ্য প্রতিবেদন নেই।

রুট

খসড়া। ডকুমেন্টেশন প্রশ্নটি কভার করে।

উত্তর খসড়া

হ্যালো — আপনার প্ল্যান প্রতি মাসের ১ তারিখে নবায়ন হয়, এবং ব্যর্থ কার্ড তিন দিন পুনরায় চেষ্টা হয়, তারপর আসন সাময়িক বন্ধ হয়। বিলিং সেটিংসে কার্ড বদলাতে পারেন; বিলিং সম্পর্কিত সাধারণ প্রশ্ন-তে ধাপ আছে। নবায়ন তারিখ সরাতে হলে উত্তর দিন, আমরা বিলিং দলে এস্কেলেট করব।

পর্যালোচক নোট

অনুমোদন, সম্পাদনা বা বিলিং সারিতে এস্কেলেট করুন।

সঠিক কল

ডেভেলপারদের জন্য: একই ওয়ার্কফ্লো কোড হিসেবে, চালানোর ক্রমে।

আসল API কল দেখান
  1. মাস্ক ও শ্রেণিবিন্যাস

    কোড দিয়ে ইমেল, ফোন ও অর্ডার নম্বর সরান, তারপর Chat দিয়ে অভিপ্রায় ও অগ্রাধিকার ঠিক করুন।

    triage.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>;
    }
    
    const redact = (text: string) =>
      text
        .replace(/[\w.+-]+@[\w.-]+\.\w+/g, "[email]")
        .replace(/\b(?:acct|account|order|invoice)[-_ ]?\w+\b/gi, "[id]")
        .replace(/\b(?:\d[ -]?){13,19}\b/g, "[card]");
    
    type Ticket = {
      id: string;
      product: string;
      subject: string;
      body: string;
      plan?: string;
      sensitive?: boolean;
    };
    
    const ticket: Ticket = {
      id: "T-1042",
      product: "Acme Workspace",
      subject: "Why did my plan renew?",
      body: "I was charged again and cannot find the renewal date on my account.",
      plan: "team",
    };
    
    const summary = redact(`${ticket.subject}\n\n${ticket.body}`).slice(0, 1500);
    
    type ChatData = {
      data: {
        answer: string;
        resources: { link: string; title: string; snippet: string }[];
      };
    };
    
    const triage = await felo<ChatData>("/v2/chat", {
      query: `Classify this support question by intent and priority, and list what is missing:\n\n${summary}`,
    });
    
    console.log(triage.data.answer);

    উদাহরণ আউটপুট

    {
      "answer": "Intent: billing / renewal question. Priority: normal. Missing: the renewal date the customer expects.",
      "resources": [
        { "link": "https://example.com/billing-faq", "title": "Billing FAQ", "snippet": "…" }
      ]
    }
  2. নথি প্রমাণ আনুন

    সহায়তা LiveDoc-এ প্রাসঙ্গিক অংশ খুঁজুন, শিরোনাম ও স্কোর রাখুন।

    triage.ts
    type Hit = { title: string; content: string; score: number };
    
    const KB = process.env.SUPPORT_LIVEDOC_ID!; // the help-center LiveDoc short_id
    
    const retrieved = await felo<{ data: Hit[] }>(
      `/v2/livedocs/${KB}/resources/retrieve`,
      { query: summary },
    );
    
    const hits = retrieved.data.filter((hit) => hit.score >= 0.7).slice(0, 4);
    
    if (hits.length === 0) {
      console.log("No grounded evidence: escalate instead of drafting");
    }

    উদাহরণ আউটপুট

    [
      {
        "title": "Billing FAQ",
        "content": "Your plan renews on the first of the month; a failed card retries for three days…",
        "score": 0.91
      }
    ]
  3. প্রকাশ্য ঘটনা যাচাই

    X-এ শেষ ৪৮ ঘণ্টায় পণ্য ও “আউটেজ/অফলাইন” শব্দ খুঁজুন, শুধু প্রকাশ্য সংকেত হিসেবে।

    triage.ts
    type XData = {
      data: {
        tweets: {
          content: string;
          author: { username: string };
          created_at: string;
          url: string;
        }[];
      };
    };
    
    const since = Math.floor((Date.now() - 48 * 60 * 60 * 1000) / 1000);
    
    const incident = await felo<XData>("/v2/x/tweet/search", {
      query: `"${ticket.product}" (outage OR "not working" OR error)`,
      limit: 20,
      since_time: since,
    });
    
    const reports = incident.data.tweets.map((post) => ({
      text: post.content,
      handle: post.author.username,
      at: post.created_at.slice(0, 10),
      link: post.url,
    }));

    উদাহরণ আউটপুট

    [
      {
        "text": "Workspace login is failing for my whole team.",
        "handle": "example_user",
        "at": "2026-10-30",
        "link": "https://x.com/example_user/status/..."
      }
    ]
  4. পথ ঠিক করে উত্তর বানান

    নিয়ম সারি ঠিক করে; প্রমাণ, পরবর্তী ধাপ ও খসড়া একসঙ্গে রাখুন।

    triage.ts
    type Route = "draft" | "ask-customer" | "escalate";
    
    function decideRoute(): { route: Route; reason: string } {
      if (hits.length === 0) {
        return { route: "escalate", reason: "no grounded evidence in the knowledge base" };
      }
      if (ticket.sensitive) {
        return { route: "escalate", reason: "an account or billing action is requested" };
      }
      if (reports.length >= 3) {
        return { route: "escalate", reason: "public reports suggest a wider issue" };
      }
      if (!ticket.plan) {
        return { route: "ask-customer", reason: "the plan is needed to answer the question" };
      }
      return { route: "draft", reason: "the documentation covers the question" };
    }
    
    const decision = decideRoute();
    
    const packet = [
      `# Triage — ${ticket.id}`,
      "",
      `Route: ${decision.route} (${decision.reason})`,
      "",
      "## Intent and priority",
      triage.data.answer,
      "",
      "## Evidence",
      ...hits.map((hit) => `- ${hit.title} (score ${hit.score})`),
      "",
      "## Public signal",
      ...(reports.length
        ? reports.map((report) => `- @${report.handle} (${report.at}): ${report.text} — ${report.link}`)
        : ["No public reports in the last 48 hours."]),
      "",
      "## Reply draft",
      "[Written by the host Agent from the evidence above — human review required]",
    ].join("\n");
    
    console.log(packet);

    উদাহরণ আউটপুট

    # Triage — T-1042
    
    Route: draft (the documentation covers the question)
    
    ## Intent and priority
    Intent: billing / renewal question. Priority: normal.
    
    ## Evidence
    - Billing FAQ (score 0.91)
  5. ট্রায়াজ নথিভুক্ত

    ফল LiveDoc-এ লিখুন যাতে পর্যালোচনা ও অডিট হয়।

    triage.ts
    type LiveDocData = { data: { short_id: string } };
    
    const log = await felo<LiveDocData>("/v2/livedocs", {
      name: "Support triage log",
      description: "One document resource per triaged ticket",
    });
    
    await felo(`/v2/livedocs/${log.data.short_id}/resources/doc`, {
      title: `Triage — ${ticket.id}`,
      content: packet,
    });
    
    console.log(log.data.short_id); // reuse it for the next ticket

    উদাহরণ আউটপুট

    { "short_id": "PvyKouzJirXjFdst4uKRK3" }

যা আছে

  • মাস্কিংয়ের পর অভিপ্রায় ও অগ্রাধিকার
  • স্কোরসহ নথি প্রমাণ
  • প্রকাশ্য ঘটনা যাচাই
  • রুট করা উত্তরের খসড়া
  • LiveDoc-এ ট্রায়াজ রেকর্ড

যা করে না

  • উত্তর পাঠায় না, টিকিট বন্ধ করে না এবং অ্যাকাউন্ট কাজ করে না
  • API-তে পাসওয়ার্ড, পেমেন্ট ডেটা বা সম্পূর্ণ গ্রাহক ডেটা পাঠাবেন না
  • নথি ফল ছাড়া এসকেলেশন বাধ্যতামূলক
  • X প্রকাশ্য ঘটনা সংকেত, সহায়তা সিস্টেমের অবস্থা নয়
  • অগ্রাধিকার নিয়ম আপনার; মডেল শুধু প্রস্তাব করে

প্রশ্ন

কোন টিকিট ডেটা পাঠানো যায়?

মাস্কিংয়ের পর শুধু দরকারি প্রসঙ্গ: পণ্য, বিবরণ, প্ল্যান ও অঞ্চল। পাসওয়ার্ড, পেমেন্ট, সম্পূর্ণ ঠিকানা বা ব্যক্তিগত আলোচনা নয়।

উত্তর কোথা থেকে?

নথি LiveDoc-এ আনা অংশ থেকে। ফল ছাড়া ওয়ার্কফ্লো অনুমানের বদলে এসকেলেট করে।

উত্তর দেয় বা টিকিট বন্ধ করে?

না। শুধু খসড়া ও পথ বানায়; পাঠানো ও বন্ধ করা মানুষ বা আপনার সিস্টেম করে।

অগ্রাধিকার কীভাবে ঠিক হয়?

আপনার নিয়মে; মডেল প্রস্তাব ও কারণ দেয়, পথ চূড়ান্ত অগ্রাধিকার নিশ্চিত করে।

নথি না ঢাকলে?

মানব সারিতে এসকেলেশন, ট্রায়াজ প্যাকেজে “ঢাকা হয়নি” সহ।

এক ট্রায়াজের খরচ কত?

Chat, অনুসন্ধান ও X Search ব্যবহার অনুযায়ী বিল হয়; বর্তমান হার মূল্য পৃষ্ঠায় এবং প্রম্পট খরচের আগে অনুমোদন চায়।

সম্পর্কিত ওয়ার্কফ্লো

সহায়তা

আপনার নিজের নথি থেকে সহায়তা প্রশ্নের উত্তর দিন

LiveDoc তৈরি করুন, হেল্প সেন্টার ও অভ্যন্তরীণ runbook লোড করুন, টিকিটের উত্তর দেওয়া অংশ আনুন এবং মডেলকে শুধু সেই প্রমাণ থেকে উত্তর দিতে দিন।

ওয়ার্কফ্লো খুলুন
কনটেন্ট

সোশ্যাল আলোচনাকে সাপ্তাহিক শ্রবণ ব্রিফে বদলান

এই সপ্তাহে ব্র্যান্ড ও প্রতিযোগী নিয়ে X পোস্ট খুঁজুন, উৎসসহ ওয়েব প্রসঙ্গ যোগ করুন, পেছনের পৃষ্ঠা পড়ুন এবং প্রতিটি সংস্করণ সংরক্ষণ করুন যাতে পরের সপ্তাহ জানা থেকে শুরু হয়।

ওয়ার্কফ্লো খুলুন
গবেষণা

একটি প্রশ্নকে উৎসসহ গবেষণা ব্রিফে বদলান

ওয়েবকে জিজ্ঞাসা করুন, উত্তরের পেছনের পৃষ্ঠা Markdown-এ সংরক্ষণ করুন, X-এ অনুশীলনকারীরা কী বলেন যোগ করুন এবং প্রমাণ এমন LiveDoc-এ রাখুন যা পরে আবার খোঁজা যায়।

ওয়ার্কফ্লো খুলুন

নিজের মতো করুন

একই রেসিপি, আপনি যেভাবে সত্যিই সরবরাহ করেন সেভাবে।

শুধু শ্রেণিবিন্যাস

উত্তর ছাড়া: শুধু অভিপ্রায়, অগ্রাধিকার ও প্রস্তাবিত সারি।

টিকিট সিস্টেমে সংযুক্ত

আপনার webhook দিয়ে প্যাকেজ টিকিটে লিখুন, স্বয়ংক্রিয় পাঠ ছাড়া।

জ্ঞানভান্ডার পর্যন্ত বাড়ান

নথি ফল থাকলে সম্পূর্ণ উত্তরের জন্য জ্ঞানভান্ডার ওয়ার্কফ্লোতে যান।

এই রেসিপির পেছনের রেফারেন্স পৃষ্ঠা ও পরবর্তী ধাপ।