Telm আপনার সার্ভারে মডারেশন ইভেন্ট রিয়েল টাইমে পুশ করতে পারে। আপনি একটি এন্ডপয়েন্ট নিবন্ধন করেন, কোন ইভেন্টগুলো পেতে চান বেছে নেন, আর Telm প্রতিটির জন্য একটি স্বাক্ষরিত POST পাঠায়। প্রতিটি ডেলিভারি একটি HMAC-SHA256 স্বাক্ষর বহন করে যা আপনি আপনার এন্ডপয়েন্ট সিক্রেট দিয়ে যাচাই করেন। ব্যর্থ ডেলিভারি একটি সময়সূচি অনুযায়ী পুনরায় চেষ্টা করা হয়; স্থায়ীভাবে অগম্য একটি এন্ডপয়েন্ট স্বয়ংক্রিয়ভাবে নিষ্ক্রিয় হয়।
1ইভেন্ট এনভেলপ
প্রতিটি ওয়েবহুক হলো একটি HTTP POST, একটি সাধারণ এনভেলপে একটি JSON বডিসহ। এনভেলপে থাকে একটি id (ডি-ডুপ্লিকেশনের জন্য একটি অনন্য ডেলিভারি শনাক্তকারী), একটি type (ইভেন্টের নাম), একটি created_at টাইমস্ট্যাম্প, ইভেন্টটি যে group_id-এর, এবং একটি data অবজেক্ট যার আকার ইভেন্ট টাইপের উপর নির্ভর করে।
প্রকৃত ইভেন্টের জন্য id নির্ধারিত, তাই একই ইভেন্ট দুবার ডেলিভার হলে — যেমন একটি রিট্রাইয়ের পর — আপনি দুবারই একই id পান। আপনার হ্যান্ডলার যাতে প্রতিটি ইভেন্ট কেবল একবার প্রসেস করে, তার জন্য X-Telm-Delivery হেডারকে (যা এই id-এর প্রতিফলন) একটি আইডেম্পোটেন্সি কী হিসেবে ব্যবহার করুন।
- এনভেলপ ফিল্ড: id, type, created_at, group_id, data।
- type নিচের ক্যাটালগের ইভেন্ট নামগুলোর একটি।
- data ইভেন্ট-নির্দিষ্ট ফিল্ড বহন করে।
- রিট্রাই ডি-ডুপ্লিকেট করতে id (ও X-Telm-Delivery হেডার) ব্যবহার করুন।
2ইভেন্ট ক্যাটালগ
আপনি একটি এন্ডপয়েন্টকে ক্যাটালগের যেকোনো উপসেটে সাবস্ক্রাইব করেন। ইঞ্জিন একটি বার্তাকে স্প্যাম হিসেবে চিহ্নিত করলে spam.detected সক্রিয় হয়। মনিটরিং মোডে, ইঞ্জিন যখন ক্রিয়া করত কিন্তু কেবল বার্তাটিকে শ্যাডো-স্কোর করেছে, তখন message.suspicious সক্রিয় হয়। সদস্য ইভেন্টগুলো মানুষের প্রবেশ, প্রস্থান এবং শাস্তি পাওয়া কভার করে।
ping ইভেন্ট বিশেষ: এটি সাবস্ক্রাইবযোগ্য ক্যাটালগের অংশ নয় এবং কেবল তখনই পাঠানো হয় যখন আপনি একটি এন্ডপয়েন্টের জন্য একটি পরীক্ষা ডেলিভারি ট্রিগার করেন, যাতে আপনি আপনার রিসিভার ও স্বাক্ষর যাচাই এন্ড টু এন্ড কাজ করে তা নিশ্চিত করতে পারেন।
- spam.detected — একটি বার্তা স্প্যাম হিসেবে শ্রেণিবদ্ধ হলো।
- message.suspicious — একটি শ্যাডো (মনিটরিং-মোড) শনাক্তকরণ।
- user.banned, user.kicked, user.muted — একটি মডারেশন ক্রিয়া প্রয়োগ হলো।
- user.joined, user.left — একজন সদস্য গ্রুপে ঢুকল বা ছাড়ল।
- ping — একটি ম্যানুয়াল পরীক্ষা ইভেন্ট, প্রকৃত কার্যকলাপে কখনও সক্রিয় হয় না।
3প্রতি ইভেন্টে পেলোড ফিল্ড
spam.detected ও message.suspicious-এর জন্য, data অবজেক্ট বহন করে message_id, user_id, username, বার্তার টেক্সট (খুব লম্বা বার্তার জন্য ছাঁটা), নেওয়া ক্রিয়া, একটি category, একটি reason, শনাক্ত হওয়া ভাষা, এবং একটি confidence স্কোর। message.suspicious অতিরিক্তভাবে শ্যাডো স্কোর বহন করে।
সদস্য ইভেন্টগুলোর (user.joined, user.left, user.banned, user.kicked, user.muted) জন্য, data অবজেক্ট বহন করে user_id, username, first_name, একটি ঐচ্ছিক message_id, এবং যেখানে প্রযোজ্য একটি reason। একটি অন্তর্নিহিত ইভেন্ট একাধিক ওয়েবহুক তৈরি করতে পারে — একটি স্প্যাম বার্তা যা একটি নিষেধ ট্রিগার করে তা spam.detected ও user.banned দুটো হিসেবেই ডেলিভার হয়।
- স্প্যাম ইভেন্ট: message_id, user_id, username, text, action, category, reason, language, confidence (message.suspicious-এর জন্য সঙ্গে score)।
- সদস্য ইভেন্ট: user_id, username, first_name, message_id, reason।
- একটি একক ঘটনা কয়েকটি ইভেন্ট নির্গত করতে পারে; user_id ও group_id দিয়ে এগুলো মেলান।
4HMAC স্বাক্ষর যাচাই
প্রতিটি ডেলিভারি স্বাক্ষরিত যাতে আপনি নিশ্চিত হতে পারেন এটি সত্যিই Telm থেকে এসেছে এবং কোনো কারচুপি হয়নি। আপনি একটি এন্ডপয়েন্ট সিক্রেট পান (এটি whsec_ দিয়ে শুরু হয়) একবার, যখন আপনি এন্ডপয়েন্টটি তৈরি করেন। এটি সংরক্ষণ করুন এবং প্রতিটি আগত অনুরোধ যাচাই করতে ব্যবহার করুন।
যাচাই করতে, X-Telm-Timestamp হেডার মানটি নিন, একটি ডট যোগ করুন, তারপর হুবহু কাঁচা অনুরোধ বডি যোগ করুন, এবং আপনার এন্ডপয়েন্ট সিক্রেটকে কী হিসেবে ব্যবহার করে সেই স্ট্রিংয়ের একটি HMAC-SHA256 গণনা করুন। ফলাফলটি হেক্স-এনকোড করুন এবং v1= দিয়ে উপসর্গ দিন — এটি X-Telm-Signature হেডারের সমান হতে হবে। একটি ধ্রুব-সময় তুলনা দিয়ে মেলান, এবং রিপ্লে ঠেকাতে টাইমস্ট্যাম্প কয়েক মিনিটের বেশি পুরনো হলে (পাঁচ একটি ভালো কাট-অফ) অনুরোধটি প্রত্যাখ্যান করুন।
- X-Telm-Event — ইভেন্ট টাইপ।
- X-Telm-Delivery — ডেলিভারি id (আইডেম্পোটেন্সি কী)।
- X-Telm-Timestamp — ইউনিক্স সেকেন্ড, রিপ্লে ঠেকাতে স্বাক্ষরিত।
- X-Telm-Signature — v1= সঙ্গে টাইমস্ট্যাম্প, একটি ডট ও কাঁচা বডির হেক্স HMAC-SHA256।
5ডেলিভারি, রিট্রাই ও অটো-নিষ্ক্রিয়
একটি ডেলিভারি কেবল তখনই সফল গণ্য হয় যখন আপনার এন্ডপয়েন্ট একটি 2xx স্ট্যাটাস দিয়ে সাড়া দেয়। অন্য যা কিছু — একটি নন-2xx কোড, একটি টাইমআউট বা একটি সংযোগ ত্রুটি — ব্যর্থতা হিসেবে গণ্য হয় এবং একটি নির্দিষ্ট সময়সূচিতে পুনরায় চেষ্টা করা হয়: সঙ্গে সঙ্গে, তারপর 1 মিনিট, 5 মিনিট, 30 মিনিট, 2 ঘণ্টা ও 6 ঘণ্টা পর, ছয়টি প্রচেষ্টার জন্য যা ডেলিভারিটি ব্যর্থ হিসেবে বন্ধ হওয়ার আগে প্রায় সাড়ে আট ঘণ্টা বিস্তৃত।
একটি এন্ডপয়েন্ট যদি ব্যর্থ হতেই থাকে — কমপক্ষে বিশটি টানা ব্যর্থতা, তিন দিন কোনো সফল ডেলিভারি ছাড়া — Telm স্বয়ংক্রিয়ভাবে এটি নিষ্ক্রিয় করে যাতে এটি একটি মৃত URL-এ পাঠানো থামায়। আপনার রিসিভার আবার সুস্থ হলে আপনি ড্যাশবোর্ড থেকে এটি পুনরায় সক্রিয় করতে পারেন।
- সফল = HTTP 2xx। দ্রুত সাড়া দিন (প্রায় দশ সেকেন্ডের মধ্যে) এবং ভারী কাজ অ্যাসিঙ্ক্রোনাসভাবে করুন।
- রিট্রাই সময়সূচি: সঙ্গে সঙ্গে, +1m, +5m, +30m, +2h, +6h (ছয়টি প্রচেষ্টা)।
- 72 ঘণ্টায় কোনো সাফল্য ছাড়া 20টি টানা ব্যর্থতার পর অটো-নিষ্ক্রিয়।
- ওয়েবহুক নিবন্ধনের জন্য Pro প্ল্যান বা উচ্চতর দরকার।