আপনার এজেন্ট RBM প্ল্যাটফর্ম থেকে ওয়েবহুক ইভেন্ট গ্রহণ করে, যা আপনাকে ব্যবহারকারীর কার্যকলাপ এবং প্ল্যাটফর্ম-স্তরের আপডেট উভয় সম্পর্কেই অবহিত করে।
এই ঘটনাগুলোকে তাদের উৎস অনুসারে শ্রেণিবদ্ধ করা হয়:
- ব্যবহারকারীর ইভেন্ট : ব্যবহারকারীর ডিভাইস থেকে আপনার এজেন্টের কাছে পাঠানো নোটিফিকেশন, যা আপনার এজেন্টের সাথে কোনো ইন্টারঅ্যাকশনের সংকেত দেয়।
- প্ল্যাটফর্ম ইভেন্ট : RBM প্ল্যাটফর্ম কর্তৃক প্রেরিত এজেন্ট লঞ্চ অবস্থার পরিবর্তন এবং বার্তার মেয়াদ শেষ হওয়া সংক্রান্ত বিজ্ঞপ্তি।
আপনার এজেন্ট ব্যবহারকারীর ডিভাইসে যে স্ট্যাটাস ইভেন্টগুলো পাঠায়, সে সম্পর্কে বিস্তারিত জানতে ‘ইভেন্ট পাঠান’ দেখুন।
ব্যবহারকারীর বার্তা, যেমন টেক্সট, ফাইল, অবস্থান এবং অন্যান্য, কীভাবে পরিচালনা করতে হয় সে সম্পর্কে বিস্তারিত জানতে, ‘বার্তা গ্রহণ’ দেখুন।
ব্যবহারকারীর ইভেন্টগুলি
ইউজার ইভেন্ট হলো ব্যবহারকারীর ডিভাইস থেকে আসা নোটিফিকেশন, যা মেসেজের অবস্থা বা সাবস্ক্রিপশন পরিবর্তনের তথ্য জানায় (যেমন, ব্যবহারকারী গুগল মেসেজে আনসাবস্ক্রাইব বা রিসাবস্ক্রাইব করেছেন)।
সম্পূর্ণ ফরম্যাটিং এবং ভ্যালু অপশনগুলোর জন্য UserEvent রেফারেন্সটি দেখুন।
ব্যবহারকারী এজেন্টের বার্তা পান
এই ইভেন্টটি নির্দেশ করে যে ব্যবহারকারীর ডিভাইসে একটি বার্তা সফলভাবে পৌঁছে দেওয়া হয়েছে।
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "DELIVERED",
"eventId": "EVENT_ID",
"messageId": "MESSAGE_ID",
"agentId": "AGENT_ID"
}ব্যবহারকারী এজেন্টের বার্তা পড়ে
এই ঘটনাটি নির্দেশ করে যে একটি বার্তা খোলা হয়েছে বা তার প্রাপ্তিস্বীকার করা হয়েছে।
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "READ",
"eventId": "EVENT_ID",
"messageId": "MESSAGE_ID",
"agentId": "AGENT_ID"
}ব্যবহারকারী টাইপ করা শুরু করে
এই ইভেন্টটি নির্দেশ করে যে একজন ব্যবহারকারী কোনো উত্তর টাইপ করছেন।
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "IS_TYPING",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID"
}ব্যবহারকারী একটি প্রস্তাবিত পদক্ষেপে ট্যাপ করেন
যখন কোনো ব্যবহারকারী প্রস্তাবিত কোনো অ্যাকশনে ট্যাপ করেন, তখন আপনার এজেন্ট সেই অ্যাকশনের পোস্টব্যাক ডেটা সহ একটি ইভেন্ট গ্রহণ করে।
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID",
"suggestionResponse": {
"postbackData": "postback_1234"
}
}ব্যবহারকারী কথোপকথন থেকে সদস্যতা বাতিল করেছেন
এই ইভেন্টটি নির্দেশ করে যে ব্যবহারকারী আপনার এজেন্ট এবং তার প্রতিনিধিত্বকারী ব্যবসা থেকে প্রচারমূলক বার্তার মতো অপ্রয়োজনীয় বার্তা গ্রহণ করা থেকে আনসাবস্ক্রাইব করেছেন। ব্যবহারকারীরা গুগল মেসেজে RBM কথোপকথন থেকে আনসাবস্ক্রাইব করার মাধ্যমে এই ইভেন্টটি সক্রিয় করেন।
এখানে JSON পেলোডের একটি উদাহরণ দেওয়া হলো:
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "UNSUBSCRIBE",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID"
}আনসাবস্ক্রাইব কীভাবে কাজ করে
- চ্যাট মেনুর মধ্যে আনসাবস্ক্রাইব করার একটি অপশন সবসময় থাকে। প্রচারমূলক এবং একাধিক ব্যবহারের এজেন্টদের ক্ষেত্রে, নির্দিষ্ট সংখ্যক অপঠিত বার্তার পর এই অপশনটি সরাসরি চ্যাটেও দেখা যায় (নির্দিষ্ট নিয়ম দেশভেদে ভিন্ন হতে পারে)।
আনসাবস্ক্রাইব নির্বাচন করলে একই সাথে দুটি কাজ সম্পন্ন হয়: গুগল মেসেজেস আপনার এজেন্টের কাছে একটি দেশ-নির্দিষ্ট কীওয়ার্ড (যেমন, "STOP") পাঠায় এবং RBM প্ল্যাটফর্ম আপনার ওয়েবহুকে একটি
UNSUBSCRIBEইভেন্ট পাঠায়।ব্যবহারকারীর ফোন নম্বরের দুই-অক্ষরের কান্ট্রি কোডের মাধ্যমে কীওয়ার্ডটি নির্ধারিত হয়। নিচের সারণিতে প্রতিটি সমর্থিত দেশের জন্য কীওয়ার্ডগুলো তালিকাভুক্ত করা হয়েছে।
দেশ (দেশের কোড) আনসাবস্ক্রাইব কীওয়ার্ড মার্কিন যুক্তরাষ্ট্র (US), ভারত (IN), যুক্তরাজ্য (GB), জার্মানি (DE) থামুন স্পেন (ES), মেক্সিকো (MX) বাজা ফ্রান্স (FR) থামুন ব্রাজিল (BR) পারার ব্যবহারকারী আনসাবস্ক্রাইব করার পরেও কথোপকথনটি তার ইনবক্সে থেকে যায়, যদি না সেটিকে স্প্যাম হিসেবে রিপোর্ট করা হয়; সেক্ষেত্রে এটি স্প্যাম ও ব্লকড ফোল্ডারে চলে যায়।
নীতিমালা ও ব্যবসায়িক নিয়ম লঙ্ঘন শনাক্ত করতে, কোনো ব্যবহারকারী আনসাবস্ক্রাইব করার পর গুগল তার মেসেজের ধরণ পর্যবেক্ষণ করে।
ব্যবসায়িক নিয়ম
- এই কথোপকথনটি পরিচালনা করেন এমন RBM পার্টনার হিসেবে, ব্যবহারকারীর আনসাবস্ক্রাইব করার অনুরোধটি মেনে চলা আপনার দায়িত্ব।
- যদি আপনি মেসেজ থ্রেডের মধ্যে আনসাবস্ক্রিপশনটি করতে না পারেন, তবে আপনাকে অবশ্যই অবিলম্বে একটি প্রাপ্তিস্বীকার বার্তা পাঠাতে হবে, যেখানে ব্যবহারকারীরা তাদের সাবস্ক্রিপশন পছন্দগুলি পরিচালনা করতে পারেন এমন ওয়েবসাইট বা অ্যাপের একটি সরাসরি লিঙ্ক থাকবে।
- ব্যবহারকারী সদস্যতা ত্যাগ করার পর, অপ্রয়োজনীয় বার্তা পাঠানো নিষিদ্ধ।
- জরুরি বার্তা পাঠানোর অনুমতি এখনও রয়েছে। এর মধ্যে রয়েছে:
- প্রমাণীকরণ, যেমন এককালীন পাসওয়ার্ড (OTP)
- ব্যবহারকারীর অনুরোধ করা এবং সম্মতি দেওয়া একটি নির্দিষ্ট পরিষেবা সম্পর্কিত বিজ্ঞপ্তি।
- ব্যবহারকারীর সদস্যতা ত্যাগের অনুরোধ নিশ্চিতকরণ এবং তাদের যোগাযোগের পছন্দসমূহ আরও পরিচালনা করার তথ্য।
উদাহরণ
যদি কোনো ব্যবহারকারী এমন কোনো এয়ারলাইন এজেন্ট থেকে আনসাবস্ক্রাইব করেন যার পরিষেবা বহুমুখী , তাহলে আপনাকে মার্কেটিং বার্তা পাঠানো বন্ধ করতে হবে। তবে, যদি ব্যবহারকারী সেই নির্দিষ্ট ফ্লাইটের জন্য আপডেট পাওয়ার সুস্পষ্ট সম্মতি দিয়ে থাকেন, তাহলে আপনি ফ্লাইটের আপডেট পাঠাতে পারবেন।
সদস্যতা বাতিল করার কারণ
যখন কোনো ব্যবহারকারী আপনার এজেন্ট থেকে আনসাবস্ক্রাইব করেন, তখন তিনি নিম্নলিখিত বিকল্পগুলো থেকে একটি কারণ নির্বাচন করতে পারেন:
- স্প্যাম
- কখনো সাইন আপ করা হয়নি
- অনেক বেশি বার্তা
- আর আগ্রহী নই
- অন্যান্য
ব্যবহারকারীরা কেন আনসাবস্ক্রাইব করছেন, তা পার্টনারদের বুঝতে সাহায্য করার জন্য অ্যানালিটিক্স ওভারভিউতে আনসাবস্ক্রাইবের কারণগুলো দেখানো হয়।
ব্যবহারকারী কথোপকথনে পুনরায় সাবস্ক্রাইব করেন
এই ইভেন্টটি নির্দেশ করে যে একজন ব্যবহারকারী আপনার এজেন্টের কাছ থেকে আবার বার্তা পেতে চান, যার মধ্যে প্রচারণার মতো অনাবশ্যক বিষয়বস্তুও অন্তর্ভুক্ত। ব্যবহারকারীরা গুগল মেসেজে পূর্বে আনসাবস্ক্রাইব করা কোনো কথোপকথনে পুনরায় সাবস্ক্রাইব করার মাধ্যমে এই ইভেন্টটি সক্রিয় করতে পারেন।
এখানে JSON পেলোডের একটি উদাহরণ দেওয়া হলো:
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "SUBSCRIBE",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID"
}পুনরায় সাবস্ক্রাইব কীভাবে কাজ করে
- চ্যাট মেনু এবং চ্যাটের ভেতরের লিঙ্ক উভয় স্থান থেকেই একটি 'সাবস্ক্রাইব' অপশন পাওয়া যায়, যা ব্যবহারকারীদের পূর্বে আনসাবস্ক্রাইব করা কোনো কথোপকথনে পুনরায় সাবস্ক্রাইব করার সুযোগ দেয়।
সাবস্ক্রাইব নির্বাচন করলে একই সাথে দুটি কাজ সম্পন্ন হয়: গুগল মেসেজেস আপনার এজেন্টের কাছে একটি দেশ-নির্দিষ্ট কীওয়ার্ড (যেমন, "START") পাঠায় এবং RBM প্ল্যাটফর্ম আপনার ওয়েবহুকে একটি SUBSCRIBE ইভেন্ট পাঠায়। নির্দিষ্ট কীওয়ার্ডটি ব্যবহারকারীর ফোন নম্বরের দুই-অক্ষরের কান্ট্রি কোড দ্বারা নির্ধারিত হয়। নিচের সারণিতে প্রতিটি সমর্থিত দেশের জন্য কীওয়ার্ডগুলো তালিকাভুক্ত করা হয়েছে।
দেশ (দেশের কোড) সাবস্ক্রাইব কীওয়ার্ড মার্কিন যুক্তরাষ্ট্র (US), ভারত (IN), যুক্তরাজ্য (GB), জার্মানি (DE) শুরু স্পেন (ES), মেক্সিকো (MX) আল্টা ফ্রান্স (FR) ডেমারার ব্রাজিল (BR) começar
ব্যবসায়িক নিয়ম
- এই কথোপকথনটি পরিচালনা করেন এমন RBM পার্টনার হিসেবে, ব্যবহারকারীর পুনরায় সাবস্ক্রাইব করার অনুরোধটি মেনে চলা আপনার দায়িত্ব।
- পুনঃসাবস্ক্রিপশন সব ধরনের বার্তার ক্ষেত্রেই প্রযোজ্য, যার মধ্যে প্রচারণার মতো অনাবশ্যক বিষয়বস্তুও অন্তর্ভুক্ত।
- যদি কোনো ব্যবহারকারী আনসাবস্ক্রাইব করার পর আপনার প্রতিষ্ঠানে বার্তা পাঠান, তবে এটিকে পুনরায় সাবস্ক্রাইব করার অনুরোধ হিসেবে বিবেচনা করা যেতে পারে।
- যদি কোনো ব্যবহারকারী মেসেজিং চ্যানেলের বাইরে (যেমন, আপনার ওয়েবসাইটে) পুনরায় সাবস্ক্রাইব করেন, তাহলে RBM পার্টনার হিসেবে তাদের স্ট্যাটাস আপডেট করা এবং সেই অনুযায়ী মেসেজ পাঠানো পুনরায় শুরু করা আপনার দায়িত্ব।
প্ল্যাটফর্ম ইভেন্টগুলি
RBM প্ল্যাটফর্মটি আপনার এজেন্টকে তার লঞ্চ অবস্থার পরিবর্তন বা বার্তার মেয়াদ শেষ হওয়া সম্পর্কে অবহিত করার জন্য প্ল্যাটফর্ম ইভেন্ট পাঠায়।
এজেন্ট চালুর অবস্থা পরিবর্তিত হয়েছে
RBM প্ল্যাটফর্ম আপনার এজেন্টের লঞ্চ স্ট্যাটাসের প্রতিটি পরিবর্তনের জন্য একটি AgentLaunchEvent পাঠায়। উদাহরণস্বরূপ, যখন আপনার এজেন্টের স্টেট PENDING থেকে LAUNCHED এ পরিবর্তিত হয়। ইভেন্টটি একটি Pub/Sub মেসেজ হিসেবে ডেলিভার করা হয়। এটিকে অন্যান্য ইভেন্ট থেকে আলাদা করতে, message.attributes.type পাথে agent_launch_event ভ্যালুটি চেক করুন।
ওয়েবহুক কনফিগারেশন
এই নোটিফিকেশনগুলো পাওয়ার জন্য আপনি আপনার পার্টনার-লেভেল বা এজেন্ট-লেভেল ওয়েবহুক ব্যবহার করতে পারেন।
পূর্বশর্ত
- আপনার ওয়েবহুকটি RBM মেসেজিংয়ের জন্য কনফিগার করুন (ব্যবহারকারীর বার্তা এবং ইভেন্ট গ্রহণ করার জন্য এটি একটি আবশ্যক শর্ত)।
- ইউজার ইভেন্ট এবং এজেন্ট লঞ্চ স্টেট ইভেন্টের মধ্যে পার্থক্য করতে,
message.attributes.typeপাথেagent_launch_eventভ্যালুটি চেক করুন।
ইভেন্ট পেলোড কাঠামো
AgentLaunchEvent টি একটি Pub/Sub মেসেজ হিসেবে পাঠানো হয়। এখানে একটি উদাহরণ দেওয়া হলো:
{
"message": {
"attributes": {
"business_id": "rbm-chatbot-id@rbm.goog",
"event_type": "REJECTED",
"product": "RBM",
"project_number": "3338881441851",
"type": "agent_launch_event"
},
"data": "....BASE64-encoded-JSON-with-notification...",
"messageId": "14150481888479752",
"message_id": "14150481888479752",
"publishTime": "2025-03-05T18:50:21.88Z",
"publish_time": "2025-03-05T18:50:21.88Z"
},
"subscription": "projects/rbm-partner-gcp/subscriptions/rbm-sub"
}
ইভেন্ট পেলোডের AgentLaunchEvent.LaunchState ফিল্ডটি এজেন্টের নতুন লঞ্চ অবস্থা নির্দেশ করে। এর সম্ভাব্য মানগুলো হলো:
| মূল্য | এজেন্ট লঞ্চ অবস্থা | বিস্তারিত |
|---|---|---|
PENDING | বিচারাধীন | অনুরোধটি পর্যালোচনার জন্য একটি পরিবহন সংস্থার কাছে পাঠানো হয়েছে। |
LAUNCHED | চালু করা হয়েছে | একটি নির্দিষ্ট ক্যারিয়ারে বার্তা পাঠানোর অনুমতি আছে। |
REJECTED | একটি নির্দিষ্ট ক্যারিয়ারে প্রত্যাখ্যাত | প্রত্যাখ্যানের কারণটি মন্তব্যে উল্লেখ করা হয়েছে। |
SUSPENDED | একটি নির্দিষ্ট বাহকের উপর স্থগিত | মন্তব্যে স্থগিতের কারণ উল্লেখ করা হয়েছে। |
UNLAUNCHED | চালু করা হয়নি | যেসব এজেন্টকে সকল ক্যারিয়ার থেকে আনলঞ্চ করা হয়েছে, তাদের সম্পাদনা করার অনুমতি আছে। |
ডেটা ফিল্ডটিতে লঞ্চ অবস্থার বিবরণসহ একটি Base64-এনকোডেড JSON অবজেক্ট রয়েছে। ডিকোড করা JSON-এর একটি উদাহরণ নিচে দেওয়া হলো:
{
"eventId": "rbm-chatbot-id/0a7ed168-676e-4a56-b422-b23434",
"agentId": "rbm-chatbot-id@rbm.goog",
"botDisplayName": "RBM Welcome Bot 7 - RBM Chatbot name",
"brandId": "bd38fbff-392a-437b-a6f2-7f2e43745b56",
"brandDisplayName": "Chatbots brand",
"regionId": "/v1/regions/fi-rcs",
"oldLaunchState": "PENDING",
"newLaunchState": "REJECTED",
"actingParty": "rbm-support@google.com",
"comment": "Carrier has rejected the launch: policy violation",
"sendTime": "2025-03-05T18:50:19.386436Z"
}
ক্যারিয়ার-প্রবর্তিত লঞ্চ অবস্থার পরিবর্তন
এগুলো হলো অনুমোদিত লেনদেন যা সাধারণত ক্যারিয়াররা পর্যালোচনা এবং প্রয়োগ প্রক্রিয়ার সময় পরিচালনা করে থাকে:
| পুরানো লঞ্চ অবস্থা | নতুন লঞ্চ অবস্থা | ট্রিগার অ্যাকশন |
|---|---|---|
PENDING | LAUNCHED | একটি লঞ্চ অনুরোধ অনুমোদন করুন। |
PENDING | REJECTED | একটি লঞ্চ অনুরোধ প্রত্যাখ্যান করুন। |
LAUNCHED | SUSPENDED | প্রয়োগমূলক/প্রশাসনিক কারণে স্থগিত। |
SUSPENDED | LAUNCHED | একজন এজেন্টকে পুনরায় সক্রিয় অবস্থায় ফিরিয়ে আনুন। |
SUSPENDED | UNLAUNCHED | একজন এজেন্টকে বরখাস্ত করুন। |
অংশীদার-প্রবর্তিত লঞ্চ অবস্থার পরিবর্তন
এগুলো অনুমোদিত হস্তান্তর যা সাধারণত পার্টনারদের দ্বারা পরিচালিত হয়:
| পুরানো লঞ্চ অবস্থা | নতুন লঞ্চ অবস্থা | ট্রিগার অ্যাকশন |
|---|---|---|
UNSPECIFIED | PENDING | পর্যালোচনার জন্য জমা দিন। |
UNLAUNCHED | PENDING | পর্যালোচনার জন্য জমা দিন। |
REJECTED | PENDING | পর্যালোচনার জন্য পুনরায় জমা দিন। |
বার্তার মেয়াদ শেষ হয়ে গেছে; প্রত্যাহার সফল হয়েছে।
এই ঘটনাটি নির্দেশ করে যে বার্তাটির মেয়াদ (TTL) শেষ হয়ে গেছে এবং বার্তাটি সফলভাবে প্রত্যাহার করা হয়েছে। এটি আপনার ফলব্যাক মেসেজিং কৌশলের জন্য একটি ভালো সংকেত।
সম্পূর্ণ ফরম্যাটিং এবং ভ্যালু অপশনগুলোর জন্য ServerEvent রেফারেন্সটি দেখুন।
{ "phoneNumber": "[phone number]" , "messageId": "[RCS message ID]", "agentId": [bot ID], "eventType": "TTL_EXPIRATION_REVOKED", "eventId": "[unique ID]", "sendTime": "[time stamp]" }
বার্তার মেয়াদ শেষ হয়ে গেছে; প্রত্যাহার করা সম্ভব হয়নি।
এই ঘটনাটি নির্দেশ করে যে বার্তাটির TTL (টাইম টু লিভ) শেষ হয়ে গেছে, কিন্তু এটি সফলভাবে প্রত্যাহার করা হয়নি।
সম্পূর্ণ ফরম্যাটিং এবং ভ্যালু অপশনগুলোর জন্য ServerEvent রেফারেন্সটি দেখুন।
{ "phoneNumber": "[phone number]", "messageId": "[RCS message ID]", "agentId": "[bot ID]", "eventType": "TTL_EXPIRATION_REVOKE_FAILED", "eventId": "[unique ID]", "sendTime": "[time stamp]" }
বার্তা পৌঁছানোর নিশ্চয়তা দেওয়া হয় না।
- বার্তাটি পৌঁছে গেলে, আপনি আপনার ওয়েবহুকে একটি
DELIVEREDইভেন্ট পাবেন। - যদি বার্তাটি ডেলিভার না হয়ে থাকে, তাহলে প্রত্যাহারের অনুরোধ পাঠাতে রিভোক এপিআই (revoke API) ব্যবহার করুন।
বার্তাটি যদি সময়-সংবেদনশীল হয়, যেমন ওটিপি বা প্রতারণার সতর্কতা, তবে ব্যবহারকারীর কাছে একাধিক বার্তা গেলেও এসএমএস-এর মতো বিকল্প মাধ্যমে তা পাঠানোই শ্রেয়।