Felo API PlatformFelo API Platform

सहायता

सहायता टिकट को आधारित उत्तर ड्राफ़्ट में ट्रायाज करें

टिकट मास्क करें, Chat से इरादा और प्राथमिकता वर्गीकृत करें, दस्तावेज़ से जवाब देने वाले अंश निकालें, सार्वजनिक घटना बातचीत जाँचें और मानव स्वीकृति के लिए रूट किया ड्राफ़्ट छोड़ें।

समय20 मिनटस्तरमध्यमअपडेट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 में लिखें और चैट में सारांश दें।

कॉपी में इंस्टॉल चरण और सुरक्षा नियम भी हैं।

आपको क्या मिलता है

एक रन का उदाहरण आउटपुट। लाइव जनरेशन नहीं।

नमूना ट्रायाज (अंश)

ट्रायाज — नमूना टिकट

इरादा

बिलिंग / नवीनीकरण प्रश्न। ग्राहक पूछता है कि प्लान फिर क्यों नवीनीकृत हुआ।

प्राथमिकता

सामान्य। यह बिलिंग प्रश्न है, आउटेज नहीं, और ग्राहक अवरुद्ध नहीं है।

साक्ष्य

  • “बिलिंग के सामान्य प्रश्न” — नवीनीकरण समय और कार्ड विफलता पुनः प्रयास। प्रासंगिकता: उच्च।
  • “प्लान परिवर्तन” — नवीनीकरण के बीच डाउनग्रेड। प्रासंगिकता: मध्यम।

घटना जाँच

पिछले 48 घंटों में कोई सार्वजनिक रिपोर्ट नहीं।

रूट

ड्राफ़्ट। दस्तावेज़ प्रश्न को कवर करते हैं।

उत्तर ड्राफ़्ट

नमस्ते — आपका प्लान हर महीने की 1 तारीख को नवीनीकृत होता है, और विफल कार्ड तीन दिन तक पुनः प्रयास होता है, फिर सीट रोक दी जाती है। आप बिलिंग सेटिंग्स में कार्ड बदल सकते हैं; बिलिंग के सामान्य प्रश्न में चरण हैं। नवीनीकरण तिथि बदलनी हो तो उत्तर दें, हम बिलिंग टीम को एस्केलेट करेंगे।

समीक्षक नोट

स्वीकृत करें, संपादित करें, या बिलिंग कतार में एस्केलेट करें।

सटीक कॉल

डेवलपर्स के लिए: वही वर्कफ़्लो कोड के रूप में, चलाने के क्रम में।

असली 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 पर पिछले 48 घंटे उत्पाद और “आउटेज/ऑफ़लाइन” जैसे शब्द खोजें, केवल सार्वजनिक संकेत के रूप में।

    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 से पैकेज टिकट में लिखें, स्वतः भेजे बिना।

ज्ञानकोश तक बढ़ाएँ

दस्तावेज़ परिणाम हो तो पूरे उत्तर के लिए ज्ञानकोश वर्कफ़्लो में जाएँ।

इस रेसिपी के पीछे के संदर्भ पेज और अगले कदम।