এতদিন, কোনো পোস্ট বেরিয়েছে কি না জানতে হলে নিজেকেই জিজ্ঞাসা করতে হতো। আপনি API ডাকতেন, অবস্থা দেখতেন, তারপর কিছুক্ষণ পর আবার ডাকতেন। এতে কাজ চলে, কিন্তু এটি আসলে বারবার খোঁজ নেওয়া: বেশি ঘন ঘন জিজ্ঞাসা করলে অনুরোধ নষ্ট হয়, কম করলে দেরিতে জানা যায়। Webhook বিষয়টি উল্টে দেয়। আপনি sona.to-কে একটি URL দেন, আর কিছু ঘটামাত্র sona.to নিজেই আপনার সঙ্গে যোগাযোগ করে। এখন এটি সব প্ল্যানে রয়েছে।
সাবস্ক্রাইব করার মতো চারটি ঘটনা আছে, আর সেগুলি সেইসব ফলাফল ঢেকে রাখে যেগুলিতে সাড়া দেওয়া দরকার: পোস্ট প্রকাশিত, পোস্ট ব্যর্থ, সাইট অডিট সম্পন্ন এবং সাইট অডিট ব্যর্থ। কোন webhook কোনগুলি পাবে তা আপনি ঠিক করেন, ফলে Slack-এর বিজ্ঞপ্তি কেবল ব্যর্থতা শুনতে পারে, আর রিপোর্টিং ব্যবস্থা সব কিছু নিতে পারে। পেলোডে সেই একই ক্ষেত্রের নাম থাকে যা REST API ফেরত দেয়, তাই GET অনুরোধ থেকে আপনি যা আগেই পড়ছেন তা অপরিবর্তিত অবস্থায় কাজ করে।
সেট করতে এক মিনিট লাগে। ড্যাশবোর্ডের API পাতা খুলুন, আপনার টুল যে URL দিয়েছে সেটি বসান, প্রয়োজনীয় ঘটনাগুলি টিক দিন এবং সংরক্ষণ করুন। স্বাক্ষরের চাবি ঠিক তখনই একবার দেখানো হয়। তখনই কপি করে নিন, কারণ সেটি আর দেখানো হবে না।
ওই চাবিই আপনাকে বুঝিয়ে দেয় যে অনুরোধটি আসল। প্রতিটি সরবরাহে একটি স্বাক্ষর হেডার থাকে, যাতে থাকে একটি টাইমস্ট্যাম্প এবং সেই টাইমস্ট্যাম্প ও অনুরোধের মূল অংশ থেকে আপনার চাবি দিয়ে হিসাব করা HMAC SHA-256। নিজের দিকে আবার হিসাব করুন এবং দুটিকে ধ্রুব-সময়ের ফাংশন দিয়ে মিলিয়ে দেখুন। যেহেতু টাইমস্ট্যাম্পও স্বাক্ষরিত অংশের ভিতরে, ধরা পড়া কোনো অনুরোধ পরে আপনার বিরুদ্ধে আবার পাঠানো যায় না। কয়েক মিনিটের চেয়ে পুরনো সব কিছু বাতিল করুন, এটুকুই যথেষ্ট।
সরবরাহ প্রথম সমস্যাতেই হাল ছাড়ে না। আপনার এন্ডপয়েন্ট বন্ধ থাকলে বা ত্রুটি ফেরত দিলে অনুরোধটি ৬০ সেকেন্ড পরে, তারপর ৫ মিনিট পরে, তারপর ৩০ মিনিট পরে আবার পাঠানো হয়। প্রতিটি চেষ্টা তার স্ট্যাটাস কোড ও সময়সহ লিপিবদ্ধ হয়, ফলে গোলমেলে এন্ডপয়েন্ট অনুমানের নয়, দেখে বোঝার বিষয় হয়ে ওঠে। যে এন্ডপয়েন্ট বারবার ব্যর্থ হয় সেটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়, এবং ঠিক করার পর আপনি আবার চালু করতে পারেন।
এটি যেদিকে তাক করার কথা প্রথমেই মনে আসে তা হলো কোনো অটোমেশন প্ল্যাটফর্ম। Zapier, Make এবং n8n প্রত্যেকেই আপনাকে বসানোর জন্য একটি webhook URL দেয়, আর ঘটনাটি JSON আকারে পৌঁছায়, পরের ধাপে জোড়ার জন্য প্রস্তুত: কোনো চ্যানেলে একটি বার্তা, স্প্রেডশিটে একটি সারি, ট্র্যাকারে একটি কাজ। আপনার নিজের সার্ভারও ঠিক একইভাবে কাজ করে, মাঝখানে কোনো প্ল্যাটফর্ম ছাড়াই।
sona.to কী গ্রহণ করে সে বিষয়ে একটি কথা। গন্তব্যকে https ব্যবহার করতে হবে এবং সেটি সর্বজনীন ঠিকানা হতে হবে। ব্যক্তিগত নেটওয়ার্কে পৌঁছায় এমন URL বাতিল করা হয়, সংরক্ষণের সময়ও এবং সরবরাহের সময় আবারও, আর রিডিরেক্ট অনুসরণ করা হয় না। আপনি যদি স্থানীয় নেটওয়ার্কে গ্রাহক চালান, তবে সেটিকে কোনো সর্বজনীন হোস্টনেম বা টানেলের পিছনে রাখুন।
Webhook, REST API ও MCP সার্ভারের পাশে ড্যাশবোর্ডের বাইরে থেকে sona.to চালানোর তৃতীয় উপায় হিসেবে যোগ হলো। API প্রশ্ন করার জন্য, MCP যাতে কোনো AI সহকারী আপনাকে প্রশ্ন করে তার জন্য, আর webhook যাতে আপনাকে জানানো হয় তার জন্য। স্বাক্ষর যাচাইয়ের উদাহরণসহ সব বিবরণ রয়েছে API নথিতে।