তথ্যসূত্র / আর্কাইভ ও ইন্টিগ্রেশনসমূহ
প্রস্থানকারী ওয়েবহুকস
এইচএমএসি স্বাক্ষর, পুনঃচেষ্টা এবং ডেলিভারি স্ট্যাটাস সহ স্কোপড ইভেন্টগুলি HTTPS রিসিভারদের কাছে পাঠান।
বর্তমান প্রধান: একটি সোর্স চেকআউট ব্যবহার করুন; 0.7.0 পোর্টেবল প্রিভিউ এই ফিচারের আগে তৈরি।
নির্বাচিত ওয়ার্কস্পেসে Open Integrations → Outgoing webhooks খুলুন। একটি HTTPS রিসিভার যোগ করুন, কালেক্টর/মিডিয়া/এক্সপোর্ট ইভেন্ট নির্বাচন করুন, এবং ঐচ্ছিকভাবে নতুন পর্যবেক্ষণ ও পরিবর্তনের জন্য চ্যাট নির্বাচন করুন। মেসেজ টেক্সট ডিফল্টভাবে বন্ধ থাকে। এক্সcerpts সক্ষম করলে মেসেজ-পরিবর্তন ইভেন্টে সর্বোচ্চ ১,০০০ অক্ষর যোগ হয়; কাঁচা টেলিগ্রাম ফিল্ড এবং ক্রেডেনশিয়াল কখনোই পাঠানো হয় না।
একবার HMAC সিক্রেট রিসিভারের সুরক্ষিত কনফিগারেশনে কপি করুন। এটি TgWitness-এর ভল্টে এনক্রিপ্ট করা আছে এবং প্যানেল থেকে পুনরুদ্ধার করা যাবে না। এটি রোটেশন করার জন্য একটি গন্তব্য মুছে ফেলে পুনরায় তৈরি করুন। সিন্থেটিক পরীক্ষা পাঠান চ্যাটের বিষয়বস্তু ছাড়া একটি পরীক্ষা কিউতে যোগ করে। ফলাফল দেখতে ডেলিভারির অবস্থা রিফ্রেশ করুন।
ডেলিভারি অ্যাপ্রাইজের পাশাপাশি বিদ্যমান বিজ্ঞপ্তি লুপকে প্রসারিত করে। এটি ওয়ার্কস্পেসের বাহ্যিক রুট এবং বিদ্যমান ব্যক্তিগত-গন্তব্য সীমাবদ্ধতা ব্যবহার করে। এর পরে কোনো সরাসরি ফলব্যাক বা পুনঃনির্দেশ নেই। URL-এ ক্রেডেনশিয়াল, কুয়েরি স্ট্রিং বা ফ্র্যাগমেন্ট থাকা উচিত নয়; ব্যক্তিগত ঠিকানার জন্য সার্ভার-স্তরের নেটওয়ার্ক অপ্ট-ইন প্রয়োজন, এমন কোনো সেটিং নয় যা প্যানেল ব্যবহারকারী এড়িয়ে যেতে পারে।
পেলোড এবং স্বাক্ষর#
স্কিমা: tgwitness.webhook/1। প্রতিটি পেলোডে থাকে event_id, timestamp, workspace, type, synthetic, এবং কাউন্টার। জার্নাল-ভিত্তিক ইভেন্টে তাদের ক্রম এবং হ্যাশ অন্তর্ভুক্ত থাকে। ফুল-এক্সপোর্ট সম্পন্ন হওয়া এবং সিন্থেটিক টেস্টগুলো হলো ডেলিভারি ইভেন্ট, যার কোনো কাল্পনিক স্বাক্ষরিত জার্নাল রেফারেন্স নেই। টেলিগ্রাম ডিলিটিশন নোটিশ এবং missing_on_recheck পৃথক ধরনের হিসেবে থাকে।
X-TgWitness-Signature হেডারটি t=UNIX_SECONDS,v1=HEX_HMAC_SHA256।
timestamp + "." + raw_request_body বাইটের উপর প্রদর্শিত গোপন তথ্যকে UTF-8 বাইটে রূপান্তর করে HMAC গণনা করুন।
বডি পার্স বা তাতে কোনো ক্রিয়া করার আগে ধ্রুব সময়ে স্বাক্ষরগুলো তুলনা করুন।
আপনার ঘড়ির সময় থেকে পাঁচ মিনিটের বেশি সময়ের স্ট্যাম্প প্রত্যাখ্যান করুন।
প্রতি ডেলিভারি চেষ্টায় টাইমস্ট্যাম্প রিফ্রেশ করা হয়।
event_id-কে টেকসই স্টোরেজে আইডেমপটেন্সি কী হিসেবে ব্যবহার করুন, পার্শ্বপ্রতিক্রিয়ার আগে একটি অ্যাটমিক ইউনিক কন্ট্রেইন্টের সাথে। শুধুমাত্র একটি বৈধ স্বাক্ষর সাম্প্রতিক অনুরোধ পুনরায় প্লে হওয়া থেকে রক্ষা করে না। প্রক্রিয়াকৃত আইডিগুলো অন্তত পুরো পুনঃচেষ্টা উইন্ডো জুড়ে সংরক্ষণ করুন; যদি রিসিভার সংরক্ষিত ইভেন্টগুলো পুনরায় প্রক্রিয়া করতে পারে তবে আরও দীর্ঘ সময় ধরে সেগুলো রাখুন।
পুনরায় চেষ্টা#
HTTP অনুরোধের আগে ডেলিভারিগুলো টেকসইভাবে সারিতে রাখা হয়। এগুলো 'অ্যাট-লেস্ট-ওয়ান্স' সেম্যান্টিকস ব্যবহার করে: কোনো হারানো স্বীকৃতি বা পুনরায় শুরু একই আইডি সহ একটি ইভেন্টকে আবার ডেলিভারি করতে পারে। ১৫ সেকেন্ড থেকে শুরু করে এক ঘণ্টায় সীমাবদ্ধ এক্সপোনেনশিয়াল ব্যাকঅফ সহ আটটি চেষ্টা করা হয়। সফলতার জন্য 2xx রেসপন্স প্রয়োজন। শেষ হয়ে যাওয়া কাজগুলো একটি দৃশ্যমান ত্রুটি দেখায়; পুনঃচেষ্টা শেষ হওয়ার পর ডেলিভারি নিশ্চিত নয়।
ক্যুতে ১,০০০টি ডেলিভারি থাকে। পূর্ণ হলে, স্ক্যানিং জার্নাল ইভেন্টগুলি থেমে যায় এবং স্থান উপলব্ধ হলে পুনরায় শুরু হয়। একটি সম্পূর্ণ-রপ্তানি সমাপ্তি যা সারিতে রাখা যায় না, একটি দৃশ্যমান সারির ত্রুটি সেট করে। প্রতি বিজ্ঞপ্তি পাসে সর্বোচ্চ পাঁচটি ডেলিভারি চেষ্টা করা হয়, এবং সর্বশেষ ১০০টি চেষ্টার রেকর্ড রাখা হয়। একটি গন্তব্য সরিয়ে ফেললে তার পেন্ডিং ডেলিভারিগুলোও মুছে যায়।
এন৮এন উদাহরণ#
উদাহরণ ওয়ার্কফ্লোটি ইমপোর্ট করুন। এটি নিষ্ক্রিয় এবং এতে কোনো সিক্রেট বা ডাউনস্ট্রিম অ্যাকশন নেই। n8n ওয়ার্কার পরিবেশে TGWITNESS_WEBHOOK_SECRET সেট করুন, সেই পরিবেশকে অ্যাক্সেসের অনুমতি দিন, এবং Code নোডের জন্য crypto বিল্টইন-এর অনুমতি দিন। উদাহরণটি Webhook নোডের raw-body অপশন ব্যবহার করে, স্বাক্ষর/তাজাपन যাচাই করে, এবং যাচাইকৃত ইভেন্টগুলো স্বীকৃতি দেয়। এটি নোডের ডকুমেন্টেড বাস্তবায়নের সাথে মেলে।
SIEM রাইট বা নোটিফিকেশন যোগ করার আগে, event_id দ্বারা কীড একটি টেকসই আইডেমপটেন্সি স্টোরেজ যোগ করুন। আপনি যে ডেটা পাঠাতে বেছে নিয়েছেন তার অনুযায়ী n8n ওয়ার্কফ্লো সম্পাদনা এবং এক্সিকিউশন-লগ ধরে রাখার সময়সীমা সীমিত করুন। TgWitness কোনো ইনবাউন্ড কমান্ড যোগ করে না।