Access Tags
ज्ञान आइटम केवल अधिकृत आगंतुकों तक सीमित करें — यह हमारे सर्वरों पर लागू होता है, AI द्वारा नहीं
अवलोकन
हर सामग्री सबके लिए नहीं होती: केवल सदस्यों के दस्तावेज़, किसी क्षेत्र-विशेष की सामग्री, सशुल्क स्तरों के संसाधन। Access Tags से एक ही चैटबॉट अलग-अलग दर्शकों को सुरक्षित रूप से सेवा देता है। आप किसी ज्ञान आइटम पर टैग लगाते हैं, और उसी क्षण से वह आइटम हर आगंतुक के लिए अदृश्य हो जाता है — सिवाय उनके जिनका पेज वह टैग प्रस्तुत करता है, आपके अपने सर्वर द्वारा साइन किया हुआ। प्रतिबंध हमारी खोज क्वेरी में लागू होता है, AI मॉडल के शामिल होने से भी पहले। बिना टैग का आगंतुक चतुर सवालों से सामग्री नहीं निकाल सकता, क्योंकि उसके लिए वह कभी लाई ही नहीं गई।
यह कैसे काम करता है
- ज्ञान आइटम आप टैग करते हैं - Access Tags पेज पर या सीधे API से; बिना टैग वाले आइटम सबके लिए काम करते रहते हैं
- आपका सर्वर हर आगंतुक के टैग साइन करता है - जब कोई लॉग-इन सदस्य आपका पेज खोलता है, आपका बैक-एंड उसके अधिकार तय करता है और उन्हें उस गुप्त कुंजी से साइन करता है जो केवल आपके पास है
- विजेट साइन किया प्रमाण भेजता है - यह हर चैट संदेश के साथ जाता है; ब्राउज़र इसे केवल पहुँचाता है और हस्ताक्षर तोड़े बिना बदल नहीं सकता
- हम सत्यापित और फ़िल्टर करते हैं - वैध हस्ताक्षर मेल खाते टैग वाले आइटम खोलता है; गायब, छेड़ा गया या समाप्त प्रमाण होने पर आगंतुक को केवल सार्वजनिक सामग्री मिलती है
इसे कैसे सेट करें
डैशबोर्ड के Access Tags पेज पर फ़ीचर चालू करें — साइनिंग सीक्रेट अपने आप बन जाता है। इसे केवल अपने सर्वर पर रखें; जिसके पास यह है, वह वैध प्रमाण बना सकता है।
सामग्री को उसी पेज पर टैग करें, या API से आइटम भेजते समय:
POST /api/v1/knowledge/text/
{
"title": "Members-only price list",
"content": "...",
"website_id": "123",
"access_tags": ["premium"]
}
फिर अपने सर्वर से साइन किया प्रमाण विजेट स्निपेट के पास प्रिंट करवाएँ। साइन होने वाला संदेश कॉमा से अलग टैग सूची है, समाप्ति समय उपयोग करने पर खड़ी रेखा से जुड़ी:
<?php
$tags = "members,premium"; // this visitor's entitlements
$expires = time() + 3600; // unix seconds, optional but recommended
$sig = hash_hmac("sha256", $tags . "|" . $expires, $SECRET);
?>
<script>
window.Asyntai = window.Asyntai || {};
window.Asyntai.accessTags = "<?php echo $tags; ?>";
window.Asyntai.accessTagsExpires = "<?php echo $expires; ?>";
window.Asyntai.accessTagsSignature = "<?php echo $sig; ?>";
</script>
Node.js और Python में वही हस्ताक्षर:
// Node.js
const crypto = require("crypto");
const sig = crypto.createHmac("sha256", SECRET)
.update(tags + "|" + expires).digest("hex");
# Python
import hmac, hashlib
sig = hmac.new(SECRET.encode(), f"{tags}|{expires}".encode(),
hashlib.sha256).hexdigest()
बिना समाप्ति के केवल टैग स्ट्रिंग साइन करें। समाप्ति के साथ, प्रमाण उसके बीतते ही काम करना बंद कर देता है — जब अधिकार वापस लिए जा सकते हों तब उपयोगी, क्योंकि नए प्रमाण के लिए आगंतुक को आपके नियंत्रण वाला पेज दोबारा लोड करना पड़ता है।
टैग का तर्क
किसी आइटम के टैग AND से जुड़ते हैं: आइटम तभी पुनर्प्राप्त होता है जब उस पर लगा हर टैग आगंतुक के प्रमाण में मौजूद हो। आगंतुक का प्रमाण जितने चाहें उतने अधिकार ले जा सकता है, और मिलान उन सब पर एक साथ होता है।
| आइटम के टैग | आगंतुक का प्रमाण | परिणाम |
|---|---|---|
(none) | कुछ भी | दृश्य — बिना टैग वाले आइटम सार्वजनिक हैं |
north | north, premium | दृश्य |
north, premium | north | छिपा — प्रमाण में premium नहीं है |
north, premium | north, premium, extra | दृश्य — अतिरिक्त अधिकारों से कोई हानि नहीं |
AND जानबूझकर है। «कोई एक» मिलान में किसी आइटम पर दूसरा टैग जोड़ने से देखने वालों का दायरा बढ़ जाता, यानी दस्तावेज़ को दो समूहों तक सीमित करने का प्रयास असल में उसे दोनों के लिए पूरी तरह प्रकाशित कर देता। «सभी» मिलान में आपका जोड़ा हर टैग केवल और सीमित ही कर सकता है, इसलिए गलती सुरक्षित दिशा में गिरती है।
«इनमें से कोई भी» कैसे व्यक्त करें
उस आयाम को आइटम से हटा दें। यदि हर आगंतुक का प्रमाण उसका क्षेत्र रखता है, तो बिना क्षेत्र टैग वाला दस्तावेज़ सभी क्षेत्रों के लिए उपलब्ध रहता है, जबकि उसके बाकी टैग लागू रहते हैं। इसलिए केवल premium टैग वाले आइटम का अर्थ है «कोई भी क्षेत्र, केवल प्रीमियम ग्राहक»।
आयामों के बीच वास्तविक विकल्प के लिए — मान लीजिए उत्तर-के-साथ-बेसिक या दक्षिण-के-साथ-प्रीमियम, और कुछ नहीं — आइटम को एक-एक संयोजन के साथ दो बार जोड़ें, या दोनों वर्गों को एक साझा टैग दें जिसे आपका सर्वर उनके प्रमाणों में शामिल करे।
सीमाएँ
- प्रति ज्ञान आइटम अधिकतम 20 टैग
- एक आगंतुक के प्रमाण में अधिकतम 50 टैग
- प्रति टैग 50 अक्षर; अल्पविराम और खड़ी रेखाएँ मान्य नहीं, क्योंकि प्रमाण अल्पविराम से अलग की गई स्ट्रिंग है
बाद में टैग बदलना
मौजूदा आइटम पर टैग बिना दोबारा अपलोड किए बदले जा सकते हैं। परिवर्तन अगले प्रश्न से लागू होता है — सामग्री दोबारा संसाधित नहीं होती।
POST /api/v1/knowledge/<id>/tags/
{
"access_tags": ["premium"]
}
आइटम को फिर से सार्वजनिक करने के लिए खाली सूची भेजें। आप डैशबोर्ड के Access Tags पेज पर टैग हाथ से भी संपादित कर सकते हैं।
क्या गारंटीड है
- सर्वर-साइड लागू करना - फ़िल्टर खोज के समय हमारी डेटाबेस क्वेरी के भीतर चलता है; अनधिकृत आगंतुकों के लिए टैग वाले आइटम AI के संदर्भ में होते ही नहीं, इसलिए लीक होने को कुछ नहीं
- हर जगह fail-closed - कोई हस्ताक्षर नहीं, गलत हस्ताक्षर, समाप्त प्रमाण, बंद फ़ीचर, घटाया गया प्लान: इनमें से हर स्थिति में आगंतुक को केवल सार्वजनिक सामग्री मिलती है, कभी उससे अधिक नहीं
- ब्राउज़र पहुँच नहीं गढ़ सकता - डेवलपर टूल्स में टैग बदलने से हस्ताक्षर टूट जाता है; कुंजी केवल आपके सर्वर के पास है
- आपके अधिकारों का तर्क आपका ही रहता है - हम कभी नहीं जानते कि आप कैसे तय करते हैं किसे कौन-सा टैग मिले; हम बस यह सत्यापित करते हैं कि आपके सर्वर ने इसकी पुष्टि की
जानने योग्य बातें
- Access Tags प्राधिकरण है, User Context वैयक्तिकरण - सदस्य के बारे में AI को बताने के लिए User Context उपयोग करें; AI किस ज्ञान का उपयोग कर सकता है यह नियंत्रित करने के लिए Access Tags
- क्रॉल की गई वेबसाइट सामग्री हमेशा सार्वजनिक है - वह आपकी सार्वजनिक साइट से आती है, अतः सीमित करने को कुछ नहीं; टैग टेक्स्ट, फ़ाइल और API आइटम पर लागू होते हैं
- आइटम के टैग AND से जुड़ते हैं - ऊपर टैग का तर्क देखें; आइटम का हर टैग आगंतुक के प्रमाण में होना चाहिए
- कुंजी दोबारा बनाने से सारे पुराने प्रमाण अमान्य - यदि कुंजी लीक हो सकती है तो ऐसा करें, फिर पेज नई कुंजी से साइन करने के लिए अपडेट करें
- टैग नाम आप तय करते हैं - प्रति आइटम अधिकतम 20, प्रत्येक 50 अक्षर, बिना कॉमा या खड़ी रेखा; वे आगंतुकों को दिखने वाली चैट में कभी नहीं आते
User Context के साथ जोड़ी बनाता है: एक फ़ीचर नियंत्रित करता है कि AI इस आगंतुक के लिए किस ज्ञान का उपयोग कर सकता है, दूसरा AI को बताता है कि आगंतुक कौन है।
उपयोगकर्ता संदर्भ व्यक्तिगत वार्तालापों के लिए लॉग-इन उपयोगकर्ता डेटा अपने AI चैटबॉट को पास करेंनोट: Access Tags एक Enterprise अनुबंध का हिस्सा है। [email protected] पर लिखें, हम सब कुछ समझा देंगे।