Google PlayApp Store
LumaKol
প্রোডাক্ট ও চর্চা

আপনি যে সফটওয়্যার আগে থেকেই চালান, তার সঙ্গে LumaKol যুক্ত করা

স্কোপসহ কী-যুক্ত একটি ওয়ার্কস্পেস API, সিঙ্কের জন্য কার্সর পেজিনেশন, আর কলিং টিমের কাছে গুরুত্বপূর্ণ ছয়টি ইভেন্টের জন্য সাইন করা ওয়েবহুক — সঙ্গে কোড না লিখে Zapier, Make, n8n বা Pabbly-র সঙ্গে এটা কীভাবে জুড়বেন।

লেখক LumaKol টিমপ্রকাশিত হালনাগাদ 8 মিনিটে পড়া
লেবেল লাগানো ফাইবার প্যাচ কেবল একটি নেটওয়ার্ক সুইচে ঢুকছে

কোনো ব্যবসাই শুধু একটা CRM চালায় না। একটা অ্যাকাউন্টিং প্যাকেজ আছে, একটা ওয়েবসাইট, একটা টিকিটিং টুল, একটা গুদামের সিস্টেম, আর 2019 সালে কারও বানানো একটা স্প্রেডশিট, যার ওপর এখনও সবাই নির্ভর করেন। যে CRM এদের কারও সঙ্গে কথা বলতে পারে না, সে আরেকটা দ্বীপ হয়ে যায়, আর দ্বীপগুলোর মধ্যে সেতু হয়ে দাঁড়ান একজন মানুষ, যিনি দিনের শেষে হাতে হাতে সারি কপি করেন।

LumaKol-এ এখন একটা পাবলিক API আর আউটগোয়িং ওয়েবহুক আছে। দুটো মিলে দুই দিকই সামলায়: দরকার হলে আপনি LumaKol-এর কাছে ডেটা চাইতে পারেন, আর কিছু ঘটার মুহূর্তেই LumaKol আপনাকে জানাতে পারে। এই লেখা রেফারেন্স নয়, বরং এগুলো কীভাবে তৈরি আর কোনটা কখন ব্যবহার করবেন তা নিয়ে — এন্ডপয়েন্টের তালিকা আছে অ্যাপের ডেভেলপার অংশে, যেখানে আপনি কী তৈরি করেন তার পাশেই।

কী ওয়ার্কস্পেসের, কোনো ব্যক্তির নয়

এটাই প্রথম নকশাগত সিদ্ধান্ত, আর এটাই আপনাকে একটা সোমবার সকালের ঝামেলা থেকে বাঁচায়। LumaKol-এ ইস্যু করা API কী ওয়ার্কস্পেসের। যে ডেভেলপার এটা তৈরি করেছিলেন তিনি কোম্পানি ছেড়ে গেলে আর তাঁর অ্যাকাউন্ট নিষ্ক্রিয় হলে, তাঁর তৈরি ইন্টিগ্রেশন চলতেই থাকে: কী তার স্রষ্টার সঙ্গে মরে না গিয়ে ওয়ার্কস্পেসের মালিক হিসেবে কাজ করতে থাকে।

যিনি কখনো ব্যক্তিগত লগইনের ওপর তৈরি ইন্টিগ্রেশন চালিয়েছেন, তিনি জানেন কেন এটা গুরুত্বপূর্ণ। সেই ইন্টিগ্রেশনগুলো নিঃশব্দে ব্যর্থ হয়, মানুষটি চলে যাওয়ার কয়েক সপ্তাহ পরে, আর সমস্যার প্রথম লক্ষণ হলো একটা রিপোর্টে ফাঁক।

স্কোপ

একটা কী ইস্যু করা হয় সে কী কী করতে পারবে তার একটা স্পষ্ট তালিকাসহ, তার বাইরে কিছুই নয়:

স্কোপযা অনুমতি দেয়
leads:readলিড, তাদের অ্যাক্টিভিটি, ধাপ আর ডিসপোজিশন পড়া
leads:writeলিড তৈরি ও আপডেট করা, আর নোট যোগ করা
calls:readলগ করা কল পড়া
users:readওয়ার্কস্পেসের সদস্যদের পড়া
webhooks:manageওয়েবহুক সাবস্ক্রিপশন তৈরি, সম্পাদনা ও মুছে ফেলা

প্রতিটি ইন্টিগ্রেশনকে তার নিজস্ব কী দিন, এমন সবচেয়ে ছোট স্কোপসহ যাতে কাজটা হয়ে যায়। যে ড্যাশবোর্ড শুধু চার্ট আঁকে সে পায় leads:read আর calls:read, আর কী ভুল জায়গায় পৌঁছে গেলেও কোনো ক্ষতি করতে পারে না। ওয়েবসাইটের ফর্ম হ্যান্ডলার পায় leads:write, আর আপনার কলের ইতিহাস পড়তে পারে না। কী তৈরির সময় এই অভ্যাসে কোনো খরচ নেই, আর যেদিন কিছু গড়বড় হয় সেদিন এর মূল্য অনেক।

সংরক্ষণ ও প্রত্যাহার

কী তৈরির মুহূর্তে একবারই দেখানো হয়, আর কখনো নয়। LumaKol সংরক্ষণ করে তার একমুখী হ্যাশ, তাই ডেটাবেস থেকে কেউই কী আবার পড়ে বের করতে পারে না — আমরাও না। হারিয়ে ফেললে নতুন একটা ইস্যু করুন; নকশা অনুযায়ীই পুনরুদ্ধারের কোনো উপায় নেই।

প্রত্যাহার তাৎক্ষণিক। প্রত্যাহার করুন চাপলেই সেই কী দিয়ে করা পরের অনুরোধ প্রত্যাখ্যাত হয়। কোনো গ্রেস পিরিয়ড নেই, অপেক্ষা করার মতো কোনো প্রসারণের দেরিও নেই — ল্যাপটপ হারিয়ে গেলে বা কোনো কন্ট্রাক্টরের কাজ শেষ হলে ঠিক এটাই চাই।

কী ওয়ার্কস্পেসের অবস্থাকেও মেনে চলে। ওয়ার্কস্পেস স্থগিত হলে তার কী পুরোপুরি কাজ করা বন্ধ করে। শুধু-পড়ার অবস্থায় থাকলে — মেয়াদ শেষ হওয়া ট্রায়াল, বাতিল প্ল্যান — কী GET অনুরোধ চালিয়ে যায় কিন্তু লেখা প্রত্যাখ্যান করে, ঠিক অ্যাপ নিজে যেমন করে। কোনো ইন্টিগ্রেশন কখনো অ্যাকাউন্টের অবস্থাকে এড়িয়ে যাওয়ার পেছনের দরজা হতে পারে না।

API-র ওপর চাপ না দিয়ে ডেটা পড়া

বেস URL: https://api.lumakol.com/api/v1. তালিকাগুলো পেজ নম্বর দিয়ে নয়, কার্সর দিয়ে পেজিনেট করা হয় — শুনতে যতটা মনে হয় তার চেয়ে এটা বেশি গুরুত্বপূর্ণ।

সিঙ্কের মাঝখানে পেজ নম্বর ভেঙে যায়। আপনি প্রথম পেজ আনলেন, কেউ একটা লিড আপডেট করলেন, ক্রম সরে গেল, আর দ্বিতীয় পেজ এখন শুরু হচ্ছে এমন একটা রেকর্ডের পরে যা আপনি কখনো দেখেননি। কয়েক হাজার লিডের রাতের সিঙ্কে, এর মানে প্রতি রাতে মুষ্টিমেয় কিছু রেকর্ড হারিয়ে যাওয়া, অথচ ঘটেছে বলে কোনো চিহ্ন নেই। কার্সর ক্রমের একটা নির্দিষ্ট অবস্থান দেখায়, তাই মানুষ কাজ করতে থাকলেও পুরো সেটের মধ্য দিয়ে পেজ করলে প্রতিটি রেকর্ড ঠিক একবার করে পান।

তালিকার প্রতিক্রিয়ায় থাকে সারিগুলো, পরের কার্সর, আর একটা ফ্ল্যাগ যা বলে আরও বাকি আছে কি না। লুপটা হলো: অনুরোধ, প্রক্রিয়া, কার্সর ফেরত পাঠানো, ফ্ল্যাগ false না হওয়া পর্যন্ত পুনরাবৃত্তি। একে updated-since ফিল্টারের সঙ্গে মেলালে ইনক্রিমেন্টাল সিঙ্ক সহজ হয়ে যায় — শেষ সফল রানের পর যা যা বদলেছে সব চান, তার মধ্য দিয়ে পেজ করুন, টাইমস্ট্যাম্প সংরক্ষণ করুন, থামুন। ধাপ, মালিক, সোর্স, ট্যাগ আর মুক্ত টেক্সটের ফিল্টার আছে, সঙ্গে আপনার নিজস্ব এক্সটার্নাল আইডেন্টিফায়ার দিয়ে খোঁজার সুবিধা, যাতে কোনো ম্যাপিং টেবিল না রেখেই LumaKol-এর লিডকে আপনার নিজের সিস্টেমের রেকর্ডের সঙ্গে মেলাতে পারেন।

ওয়েবহুক: প্রতিক্রিয়া জানানোর মতো ছয়টি ইভেন্ট

যা কিছু তাড়াতাড়ি ঘটা দরকার, তার জন্য পোলিং ভুল হাতিয়ার। কোনো লিড একটা নির্দিষ্ট ধাপে পৌঁছালে মেসেজ পাঠাতে চাইলে, প্রতি পনেরো মিনিটে যাচাই করা মানে মেসেজ পনেরো মিনিট পর্যন্ত দেরিতে যাবে, আর প্রতিটি কাজের অনুরোধের জন্য আপনি ছিয়ানব্বইটি অর্থহীন অনুরোধ করবেন।

আপনার একটা HTTPS এন্ডপয়েন্টকে ছয়টি ইভেন্টের যেকোনো সমন্বয়ে সাবস্ক্রাইব করতে পারেন:

  • lead.created — যেকোনো সোর্স থেকে একটা লিড ওয়ার্কস্পেসে এসেছে।
  • lead.updated — লিডের কোনো ফিল্ড বদলেছে।
  • lead.stage_changed — লিড পাইপলাইনে এগিয়েছে। বেশির ভাগ ব্যবসায়িক লজিক এই ইভেন্টের ওপরই ঝোলে।
  • lead.assigned — লিড নতুন মালিক পেয়েছে।
  • call.logged — একটা লিডের বিপরীতে ফলাফলসহ একটা কল রেকর্ড হয়েছে।
  • follow_up.due — প্রতিশ্রুত একটা কলব্যাকের সময় হয়েছে।

ঘটনাটা ঘটার মুহূর্তেই, পরিবর্তনটার সঙ্গে একই নিঃশ্বাসে ইভেন্ট কিউতে চলে যায়, তাই কাজ আর নোটিফিকেশনের মাঝখানে রিস্টার্টে কোনো ইভেন্ট হারাতে পারে না। অ্যাপের দিক থেকে এগুলো পাঠিয়ে-ভুলে-যাওয়া ধরনের: বন্ধ বা ধীর কোনো ওয়েবহুক এন্ডপয়েন্ট কখনো কোনো এজেন্টের কল লগ করাকে দেরি করাতে বা ব্যর্থ করাতে পারে না।

ডেলিভারিটা সত্যিই আমাদের কাছ থেকে এসেছে কি না যাচাই করা

আপনার এন্ডপয়েন্ট পাবলিক ইন্টারনেটের একটা URL, আর যে-ই এটা জানুক, সেখানে পোস্ট করতে পারে। তাই প্রতিটি ডেলিভারিতে থাকে ইভেন্ট ও ডেলিভারি শনাক্ত করার হেডার, একটা টাইমস্ট্যাম্প, আর টাইমস্ট্যাম্প ও বডির ওপর হিসাব করা একটা HMAC-SHA256 সিগনেচার, যা তৈরি হয় শুধু আপনার সঙ্গে ভাগ করা একটা সিক্রেট দিয়ে।

পেলোডের একটা ফিল্ডেও ভরসা করার আগে আপনার রিসিভারের উচিত কাঁচা রিকোয়েস্ট বডি থেকে সেই সিগনেচার আবার হিসাব করে মিলিয়ে দেখা। বাস্তবে দুটো খুঁটিনাটি গুরুত্বপূর্ণ: পার্স করা JSON-এর আবার সিরিয়ালাইজ করা সংস্করণ নয়, কাঁচা বডি ব্যবহার করুন, কারণ একটা হোয়াইটস্পেসের পার্থক্যও সিগনেচার বদলে দেয়; আর সাধারণ সমতা যাচাইয়ের বদলে কনস্ট্যান্ট-টাইম তুলনা ব্যবহার করুন। চাইলে সিক্রেট আবার দেখানো যায় — যাতে ওয়েবহুক না মুছেই রিসিভার নতুন করে তৈরি করতে পারেন — আর দরকার হলে বদলানো যায়।

আপনার এন্ডপয়েন্ট বন্ধ থাকলে

ব্যর্থ ডেলিভারি আবার চেষ্টা করা হয় প্রায় অর্ধেক দিন জুড়ে একটা শুরু-ভারী সময়সূচিতে: প্রথম কয়েকটা পুনঃচেষ্টা হয় কয়েক মিনিটের মধ্যে, তারপর ফাঁক বেড়ে ঘণ্টায় দাঁড়ায়। ডিপ্লয়ের জন্য বন্ধ থাকা রিসিভার কিছুই হারায় না। সারাদিন বন্ধ থাকা রিসিভারের ক্ষেত্রে চেষ্টা ছেড়ে দেওয়া হয়, কারণ ততক্ষণে ইভেন্টগুলো বাসি, আর সীমাহীনভাবে বাড়তে থাকা কিউ কারও কাজে আসে না।

সাম্প্রতিক ডেলিভারির চেষ্টাগুলো অ্যাপে দেখা যায় — স্ট্যাটাস, চেষ্টার সংখ্যা আর আপনার এন্ডপয়েন্টের দেওয়া প্রতিক্রিয়াসহ — যা চিরাচরিত “দোষ ওদের না আমাদের?” তর্ককে একটা তালিকায় দু-মিনিটের চোখ বোলানোয় পরিণত করে। একটা টেস্ট ডেলিভারির বোতামও আছে, যাতে নির্ভর করার আগেই প্রমাণ করতে পারেন রিসিভার কাজ করছে। ওয়েবহুক URL অবশ্যই HTTPS হতে হবে এবং একটা পাবলিক ঠিকানায় রিজলভ হতে হবে — প্রাইভেট বা অভ্যন্তরীণ রেঞ্জের দিকে নির্দেশ করা URL সংরক্ষণের সময়ই প্রত্যাখ্যাত হয়, আর প্রতিটি ডেলিভারির আগে আবার যাচাই করা হয়।

কোড না লিখে যুক্ত করা

Zapier-এর জন্য একটা LumaKol অ্যাপ তৈরি হয়ে Zapier-এর পর্যালোচনার অপেক্ষায় আছে; সেটা তাদের ডিরেক্টরিতে না আসা পর্যন্ত, আর Make, n8n বা Pabbly Connect-এ, পথ হলো ম্যানুয়াল সংযোগ। এর জন্য কোনো অ্যাপ লাগে না। এই প্ল্যাটফর্মগুলোর প্রতিটিই একটা সাধারণ ওয়েবহুক ট্রিগার আর একটা সাধারণ HTTP অ্যাকশন দেয়, আর এই দুটো দিয়েই একটা নিবেদিত অ্যাপ যা দিত তার বেশির ভাগই তৈরি করতে পারেন।

  1. অটোমেশন প্ল্যাটফর্মে একটা নতুন সিনারিও তৈরি করুন, যা শুরু হয় তার ইনকামিং ওয়েবহুক ট্রিগার দিয়ে — “Webhooks by Zapier”, Make-এ “Custom webhook”, n8n-এ Webhook নোড, Pabbly-তে “Catch Hook”। এটা যে URL দেয় তা কপি করুন।
  2. LumaKol-এ সেই URL-এর দিকে নির্দেশ করা একটা ওয়েবহুক যোগ করুন এবং যে ইভেন্টগুলো আপনার দরকার সেগুলোতে সাবস্ক্রাইব করুন। একটা টেস্ট ডেলিভারি পাঠান, যাতে প্ল্যাটফর্ম পেলোডের আকার দেখে তার ফিল্ড ম্যাপিং তৈরি করতে পারে।
  3. আপনার অ্যাকশনের ধাপ যোগ করুন: Google Sheets-এ একটা সারি, Slack-এ একটা মেসেজ, আপনার অ্যাকাউন্টিং সিস্টেমে একটা রেকর্ড, একজন ম্যানেজারকে একটা ইমেল।
  4. LumaKol-এ আবার লিখতে, প্ল্যাটফর্মের HTTP রিকোয়েস্ট অ্যাকশন ব্যবহার করুন API-র বিপরীতে, অথরাইজেশন হেডারে আপনার একটা কী দিয়ে — লিড তৈরি, ধাপ আপডেট বা নোট যোগ। যদি শুধু নতুন লিড পাঠানোই দরকার হয়, তাহলে “ওয়েবসাইট বা অন্য অ্যাপ” ধরনের একটা লিড সোর্স (সেটআপ → লিড সোর্স) আপনাকে একটা প্রাইভেট ওয়েবহুক URL দেয়, যাতে কোনো কী লাগে না এবং যা প্রতিটি লিডে সেই সোর্সের মালিক, ধাপ ও ট্যাগ প্রয়োগ করে।
  5. সিনারিওটি চালু করুন, আর তার ওপর নির্ভর করার আগে ইচ্ছে করে সেটা ভেঙে দেখুন: একটা ভুল URL-এর দিকে নির্দেশ করুন আর দেখুন ডেলিভারির তালিকা ব্যর্থতা দেখাচ্ছে, যাতে সত্যিই সমস্যা হলে সেটা দেখতে কেমন তা আপনি জানেন।

Zapier অ্যাপ তালিকাভুক্ত হলে সেখানে কয়েকটা ক্লিক বাঁচবে। সাধারণ পথটা আজই প্রতিটি প্ল্যাটফর্মে কাজ করে, আর যেহেতু এটা একটা সাধারণ সাইন করা ওয়েবহুক আর একটা সাধারণ REST কল, পরে আপনি যে অটোমেশন প্ল্যাটফর্মেই যান না কেন, এটা কাজ করতেই থাকবে।

এই বিষয়ে প্রশ্ন

তৈরির পর কি আমার API কী আবার দেখতে পারি?+

না। শুধু একমুখী হ্যাশ সংরক্ষিত থাকে, তাই প্লেইনটেক্সট কী শুধু সেই প্রতিক্রিয়াতেই থাকে যা এটা তৈরি করেছিল। হারিয়ে গেলে প্রত্যাহার করে নতুন একটা ইস্যু করুন।

যিনি ইন্টিগ্রেশন তৈরি করেছিলেন তিনি চলে গেলে সেগুলোর কী হয়?+

সেগুলো কাজ করতেই থাকে। কী কোনো ব্যক্তির নয়, ওয়ার্কস্পেসের, আর যে কী-র স্রষ্টা আর সক্রিয় সদস্য নন, সেটা ওয়ার্কস্পেসের মালিক হিসেবে কাজ করতে থাকে।

ব্যর্থ ওয়েবহুক ডেলিভারি কতক্ষণ ধরে আবার চেষ্টা করা হয়?+

প্রায় অর্ধেক দিন, চেষ্টাগুলো শুরুর দিকে ঘন করে, যাতে অল্প সময়ের বিভ্রাটে আপনার কিছুই না হারায়। তারপর ডেলিভারিটি ব্যর্থ হিসেবে চিহ্নিত হয় এবং কারণটা ডেলিভারির তালিকায় দেখা যায়।

আমি যদি ইতিমধ্যে API পোল করি, তবুও কি ওয়েবহুক লাগবে?+

অপরিহার্য নয়, কিন্তু পোলিং এমন দেরি যোগ করে যা সরানো যায় না, আর তার বেশির ভাগ অনুরোধই অর্থহীন। যা কিছু তাড়াতাড়ি ঘটা উচিত তার জন্য ওয়েবহুক ব্যবহার করুন, আর বাল্ক রিড, ব্যাকফিল ও মেলানোর জন্য API।

বিনামূল্যে ট্রায়াল শুরু করুন
#api#webhooks#integrations#automation#product update
LumaKol টিম — LumaKol যাঁরা তৈরি করেন তাঁদের লেখা, গ্রাহকেরা যা বলেন এবং ডেটায় আমরা যা দেখি তার ভিত্তিতে।

আপনার টিমকে এমন একটি CRM দিন যা প্রতিটি কল সংরক্ষণ করে

মিনিটে ওয়ার্কস্পেস সেট করুন আর আজই কল ধরা শুরু করুন।

বিনামূল্যে অ্যাকাউন্ট তৈরি করুন