1. ভূমিকা


শেষ আপডেট: ২০২২-০৫-১১
Business Messages-এ স্বাগতম!
এই কোডল্যাবটি বিজনেস মেসেজের সাথে ইন্টিগ্রেট করার একটি ভূমিকা, যা গ্রাহকদের গুগল সার্চ এবং ম্যাপের মাধ্যমে আপনার পরিচালিত ব্যবসার সাথে সংযোগ স্থাপন করতে সাহায্য করে। আপনি হয়তো এমন একটি ব্যবসা যা সরাসরি বিজনেস মেসেজের সাথে ইন্টিগ্রেট করতে চায়, অথবা আপনি হয়তো এমন একটি স্বাধীন সফ্টওয়্যার বিক্রেতার সাথে কাজ করছেন যারা আপনার সাথে কাজ করা ব্যবসার জন্য মেসেজিং সমাধান তৈরি করছে, অথবা আপনি হয়তো এইমাত্র বিজনেস মেসেজেস পেয়ে গেছেন এবং প্ল্যাটফর্মটিতে পরিবর্তন আনতে চান।
আপনাকে এখানে যে কারণেই আনা হোক না কেন, এই কোডল্যাবটি শুরু করার জন্য একটি দুর্দান্ত উপায়। এর শেষে, আপনার প্রথম ডিজিটাল এজেন্ট থাকবে যার সাথে ব্যবহারকারীরা যোগাযোগ করতে পারবেন। আরও কিছুটা উন্নত করার পরে যখন আপনি Business Messages চালু করার জন্য প্রস্তুত হবেন, তখন আপনার লক্ষ লক্ষ গ্রাহকের কাছে পৌঁছানোর সম্ভাবনা থাকবে।
একজন ভালো ডিজিটাল এজেন্ট কী হতে পারে?
বিজনেস মেসেজ হল একটি কথোপকথনের পৃষ্ঠ, যা মোবাইল ডিভাইসে অ্যাপের মতো অভিজ্ঞতা প্রদান করে যা গ্রাহকদের অতিরিক্ত অ্যাপ ইনস্টল না করেই ব্যবসার সাথে সংযোগ স্থাপন করতে দেয়। ডিজিটাল এজেন্ট হল যুক্তির একটি অংশ যার সাথে আপনার গ্রাহকরা যোগাযোগ করেন। যুক্তিটি ক্লাউডে বা আপনার অবকাঠামোতে স্থাপন করা একটি ওয়েব অ্যাপ্লিকেশন দ্বারা পরিচালিত হয়। আপনি ব্যবহারকারীর প্রতি কীভাবে প্রতিক্রিয়া জানান তা সম্পূর্ণরূপে আপনার উপর নির্ভর করে। সেরা এজেন্টরা প্রত্যাশা সেট করার জন্য, তাদের গ্রাহকদের জড়িত রাখার জন্য এবং ব্যবহারকারীদের চাহিদা পূরণের জন্য কার্যকারিতা প্রদানের জন্য প্রসঙ্গ প্রদান করে।
তুমি কী তৈরি করবে
এই কোডল্যাবে, আপনি Bonjour Meal নামক একটি কাল্পনিক কোম্পানির জন্য Business Messages-এ একটি ডিজিটাল এজেন্ট তৈরি করতে যাচ্ছেন। এই ডিজিটাল এজেন্ট "আপনি কখন বন্ধ করেন?" অথবা "আমি কি অনলাইনে কেনাকাটা করতে পারি?" এর মতো কয়েকটি সহজ প্রশ্নের উত্তর দেবে।
এই কোডল্যাবে, আপনার ব্যবহারকারীরা ডিজিটাল এজেন্টের মাধ্যমে জিনিসপত্র কিনতে পারবেন, অর্থ সংগ্রহের জন্য ব্যবহারকারীকে একটি পেমেন্ট প্রসেসরের দিকে নির্দেশ করতে পারবেন এবং তারপর দোকান থেকে তাদের কাল্পনিক জিনিসপত্র সংগ্রহের সময় নির্ধারণ করতে পারবেন।
এই কোডল্যাবে, আপনার অ্যাপটি
- একটি সাজেশন চিপের মাধ্যমে প্রশ্নের উত্তর দিন
- আপনার ডিজিটাল এজেন্ট যে প্রশ্নগুলির উত্তর দিতে পারবে, ব্যবহারকারীকে সেগুলি জিজ্ঞাসা করতে সাহায্য করুন।
- ব্যবহারকারীকে কথোপকথনে নিযুক্ত রাখতে সমৃদ্ধ কথোপকথনমূলক বৈশিষ্ট্য প্রদান করুন

তুমি কি শিখবে
- গুগল ক্লাউড প্ল্যাটফর্মে অ্যাপ ইঞ্জিনে কীভাবে একটি ওয়েব অ্যাপ্লিকেশন স্থাপন করবেন। বিকল্পভাবে, আপনি আপনার স্থানীয় অ্যাপ্লিকেশনটি সর্বজনীনভাবে পরীক্ষা করার জন্য ngrok ব্যবহার করতে পারেন।
- ব্যবহারকারীদের কাছ থেকে বার্তা গ্রহণের জন্য ওয়েব অ্যাপ্লিকেশন ওয়েবহুক ব্যবহার করে কীভাবে আপনার Business Messages অ্যাকাউন্ট কনফিগার করবেন
- Business Messages API ব্যবহার করে কার্ড, ক্যারোসেল এবং কথোপকথনের পরামর্শের মতো সমৃদ্ধ বৈশিষ্ট্যগুলি কীভাবে পাঠানো যায়
- Business Messages কীভাবে আপনার মেসেজ পাঠায়
এই কোডল্যাবটি আপনার প্রথম ডিজিটাল এজেন্ট তৈরির উপর দৃষ্টি নিবদ্ধ করে।
তোমার যা লাগবে
- একটি বিনামূল্যের ব্যবসায়িক যোগাযোগ ডেভেলপার অ্যাকাউন্টের জন্য নিবন্ধন করুন
- কীভাবে করবেন তার নির্দেশাবলীর জন্য আমাদের ডেভেলপার সাইটটি দেখুন
- ৫ বা তার বেশি ভার্সন সহ একটি অ্যান্ড্রয়েড ডিভাইস অথবা গুগল ম্যাপস অ্যাপ সহ একটি iOS ডিভাইস
- ওয়েব অ্যাপ্লিকেশন প্রোগ্রামিং এর অভিজ্ঞতা
- একটি ইন্টারনেট সংযোগ!
2. সেট আপ করা
API গুলি সক্ষম করুন
এই কোডল্যাবের জন্য, যেহেতু আমরা একটি জ্যাঙ্গো অ্যাপ্লিকেশন নিয়ে কাজ করব, তাই অ্যাপ ইঞ্জিনে অ্যাপ্লিকেশনটি স্থাপনের জন্য আমরা ক্লাউড বিল্ড API-এর উপর নির্ভর করব। বিকল্পভাবে, যদি আপনি ngrok ব্যবহার করেন, তাহলে ক্লাউড বিল্ড API সক্রিয় করার প্রয়োজন নেই।
ক্লাউড বিল্ড API সক্রিয় করতে:
- গুগল ক্লাউড কনসোলে ক্লাউড বিল্ড এপিআই খুলুন।
- সক্রিয় করুন ক্লিক করুন।
একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন
বিজনেস কমিউনিকেশনস এবং বিজনেস মেসেজ এপিআই অ্যাক্সেস করার জন্য আপনাকে একটি সার্ভিস অ্যাকাউন্ট তৈরি করতে হবে। বিজনেস কমিউনিকেশনস ডেভেলপার কনসোলের মধ্যে একটি সার্ভিস অ্যাকাউন্ট তৈরি করতে ডকুমেন্টেশনের ধাপগুলি অনুসরণ করুন।
জ্যাঙ্গো পাইথন ইকোবট স্টার্টার কোড স্থাপন করুন
একটি টার্মিনালে, নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনার প্রকল্পের কার্যকরী ডিরেক্টরিতে জ্যাঙ্গো ইকো বট নমুনা ক্লোন করুন:
$ git clone https://github.com/google-business-communications/bm-bonjour-meal-django-starter-code
পরিষেবা অ্যাকাউন্টের জন্য তৈরি আপনার JSON শংসাপত্র ফাইলটি নমুনার রিসোর্স ফোল্ডারে অনুলিপি করুন এবং শংসাপত্রগুলির নাম পরিবর্তন করে "bm-agent-service-account-credentials.json" রাখুন।
bm-bonjour-meal-django-starter-code/bonjourmeal-codelab/step-1/resources/bm-agent-service-account-credentials.json
টার্মিনালে, নমুনার ধাপ-১ ডিরেক্টরিতে যান।
নমুনা স্থাপনের জন্য টার্মিনালে নিম্নলিখিত কমান্ডগুলি চালান:
$ gcloud config set project PROJECT_ID*
$ gcloud app create
$ gcloud app deploy
- PROJECT_ID হল সেই প্রকল্পের আইডি যা আপনি API গুলিতে নিবন্ধন করতে ব্যবহার করেছিলেন।
শেষ কমান্ডের আউটপুটে ডিপ্লয় করা অ্যাপ্লিকেশনের URL টি লক্ষ্য করুন:
Deployed service [default] to [https://PROJECT_ID.appspot.com]
আপনি যে স্টার্টার কোডটি ব্যবহার করেছেন তাতে একটি ওয়েব অ্যাপ্লিকেশন রয়েছে যার একটি ওয়েবহুক রয়েছে যা Business Messages থেকে বার্তা গ্রহণ করে। অ্যাপ্লিকেশনটি ব্যবহারকারীর কাছে বার্তাগুলি প্রতিধ্বনিত করে এবং কথোপকথনের পৃষ্ঠায় উপলব্ধ কিছু সমৃদ্ধ বৈশিষ্ট্য প্রদর্শন করতে পারে।
আপনার ওয়েববুক কনফিগার করুন
এখন আপনার পরিষেবাটি স্থাপন করা হয়েছে, আপনি ব্যবসায়িক যোগাযোগ বিকাশকারী কনসোলের অ্যাকাউন্ট সেটিংস পৃষ্ঠায় আপনার ওয়েবহুক URL সেট করতে অ্যাপ্লিকেশনের URL ব্যবহার করবেন।
ওয়েবহুক URL হবে অ্যাপ্লিকেশনের URL + "/callback/"। উদাহরণস্বরূপ, এটি এরকম কিছু হতে পারে: https://PROJECT_ID.appspot.com/callback/
বিজনেস কমিউনিকেশনস কনসোল অ্যাকাউন্ট সেটিংস পৃষ্ঠায় যান। নেভিগেশন বারের নীচে উপরের ডানদিকে, আপনি আপনার GCP প্রকল্পের নাম দেখতে পাবেন। যদি আপনি একটি ড্রপডাউন দেখতে পান, তাহলে আপনার GCP প্রকল্পটি নির্বাচন করতে ভুলবেন না।
টেকনিক্যাল পয়েন্ট অফ কন্টাক্ট ডিটেইলস পূরণ করুন, এবং তারপর আপনার ডিপ্লয় করা অ্যাপ্লিকেশনের জন্য ওয়েবহুক URL দিয়ে ওয়েবহুক আপডেট করুন।

আপনার GCP প্রকল্পের রেফারেন্সের পাশে সংরক্ষণ করুন ক্লিক করুন।
৩. আপনার প্রথম এজেন্ট তৈরি করা
বিজনেস কমিউনিকেশনস ডেভেলপার কনসোল ব্যবহার করা
বিজনেস কমিউনিকেশনস কনসোলে, কনসোল ড্যাশবোর্ডে ফিরে যেতে উপরের বাম দিকের লোগোতে ক্লিক করুন, তারপর Create agent এ ক্লিক করুন। আপনি আপনার এজেন্ট তৈরি করার সাথে সাথে একটি ব্র্যান্ড তৈরি করেন। এজেন্ট টাইপের জন্য Business Messages নির্বাচন করুন এবং নিশ্চিত করুন যে অংশীদারের তথ্য সঠিক।
Brand -এ, আপনি যে ব্র্যান্ডটি তৈরি করছেন তার নাম লিখুন। ব্র্যান্ড হল সেই ব্যবসা যার সাথে আপনি কাজ করছেন এবং গ্রাহকরা এজেন্টের সাথে কথোপকথনের মাধ্যমে যোগাযোগ করতে পারেন। Agent name -এ, Business Messages কথোপকথনে ব্যবহারকারীদের কী দেখাতে চান তা উল্লেখ করুন। কাল্পনিক Bonjour Meal-এর ক্ষেত্রে, Bonjour Rail হল রেলওয়ে কোম্পানি যা Bonjour Meal রেস্তোরাঁগুলি পরিচালনা করে। তাই আমি Bonjour Rail কে ব্র্যান্ড হিসেবে এবং Bonjour Meal কে এজেন্ট হিসেবে উল্লেখ করব।
এজেন্ট হল কথোপকথনমূলক সত্তা যা ব্র্যান্ডের প্রতিনিধিত্ব করে।

Create agent-এ ক্লিক করুন এবং কনসোলটিকে কিছু জাদু করতে দিন। ব্র্যান্ড এবং এজেন্ট তৈরি করার জন্য Business Communications API-তে বেশ কয়েকটি অনুরোধ করতে এই অনুরোধটি কয়েক সেকেন্ড সময় নেয়। আপনি সরাসরি Business Communications API ব্যবহার করে এজেন্ট তৈরি করতে এবং একটি ব্র্যান্ড তৈরি করতে পারেন। কনসোল যে কাজগুলি করছে তা করার জন্য একটি কার্ল অনুরোধ কেমন দেখাবে তা দেখতে ডকুমেন্টেশনটি দেখুন।
তোমার প্রথম কথোপকথন
আপনার তৈরি করা এজেন্টটি খুলুন, আপনার সামনে একটি ওভারভিউ পৃষ্ঠা আসবে যা আপনাকে আপনার এজেন্টের বিশদ পর্যালোচনা শুরু করতে সাহায্য করবে। এজেন্ট পরীক্ষার URL গুলি দেখুন। এই URL গুলি আপনার ডিভাইসের কথোপকথনমূলক পৃষ্ঠাটি চালু করতে ব্যবহৃত হয়।

আপনি যেকোনো চিপে ক্লিক করে পরীক্ষার URL টি অনুলিপি করতে পারেন। অবশ্যই, আপনার হাতে থাকা ডিভাইসটির জন্য পরীক্ষার URL টি অনুলিপি করুন। এই অনুলিপি করা বার্তাটি আপনার ডিভাইসে যেভাবে ইচ্ছা পাঠান।
আপনার মোবাইল ডিভাইসে একবার প্রবেশ করলে, লিঙ্কটিতে ট্যাপ করলে আপনার এজেন্ট পরীক্ষার URL টি আগে থেকে পূরণ করে Business Messages Agent Launcher চালু হবে।
আপনার এজেন্টের কথোপকথনের পৃষ্ঠাটি চালু করতে লঞ্চে ট্যাপ করুন।

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

স্বাগত বার্তা (হলুদ ইনপুট ক্ষেত্র) আপডেট করে পড়ুন:
Bonjour Meal স্টার্টার এজেন্টে আপনাকে স্বাগতম। আমি আপনার বার্তাগুলি প্রতিধ্বনিত করতে পারি এবং প্ল্যাটফর্মে সমর্থিত কিছু সমৃদ্ধ বৈশিষ্ট্য দেখাতে পারি, এই পরামর্শগুলি ব্যবহার করে দেখুন!
উপরের ছবিতে বেগুনি বাক্সে উল্লেখিত + কথোপকথন শুরু করুন ক্লিক করে পরামর্শ চিপ, ক্যারোজেল এবং কার্ড ব্যবহার করে কথোপকথন শুরু করার জন্য শুরু করুন। আপনার যোগ করা কথোপকথন শুরু করার জন্য একটি টেক্সট কম্পোনেন্ট এবং একটি পোস্টব্যাকডেটা কম্পোনেন্ট প্রয়োজন। টেক্সট হল যা ব্যবহারকারীকে প্রদর্শিত হয় এবং পোস্টব্যাক ডেটা হল যা আপনার এজেন্টের ওয়েবহুকে পাঠানো হয়। ওয়েবহুক পোস্টব্যাক ডেটার জন্য পার্স করে এবং ব্যবহারকারীকে উপযুক্ত প্রতিক্রিয়া পাঠাবে। 
পরিবর্তনের পরে কনসোলে এজেন্টের তথ্য এইরকম দেখাচ্ছে:

কনসোলের ডান দিকে, আপনি এজেন্টটি কেমন দেখাবে তার একটি প্রিভিউ দেখতে পাবেন। লক্ষ্য করুন যে স্বাগত বার্তাটি আপনি যা পরিবর্তন করেছেন তা এবং এর নীচে থাকা পরামর্শ চিপগুলি কীভাবে প্রতিফলিত করে?
ব্যবহারকারীর অভিজ্ঞতা কেমন হবে সে সম্পর্কে ধারণা পেতে এটি একটি দুর্দান্ত হাতিয়ার। আপনি আপনার এজেন্ট তৈরি করার সময় এবং আপনি যে ব্যবহারকারীর যাত্রাগুলিকে সমর্থন করতে চান তার পরিকল্পনা করার সময় এটি ব্যবহার করতে পারেন।
দুর্ভাগ্যবশত, আমরা কথোপকথনে এই পরিবর্তনগুলি তাৎক্ষণিকভাবে দেখতে পাব না, কারণ পূর্ববর্তী ডেটা Business Messages পরিকাঠামোর মধ্যে ক্যাশে করা থাকে। ক্যাশে প্রায় প্রতি 2 ঘন্টা অন্তর সাফ করা হয়, তাই আপনি আগামীকাল এটি চেষ্টা করে দেখতে পারবেন।
ইতিমধ্যে, আসুন দেখে নেওয়া যাক গোপনে সবকিছু কীভাবে কাজ করে।
৪. স্টার্টার কোড বিশ্লেষণ করা
সোর্স কোডের ১০,০০০ ফুট দৃশ্য
আপনার ব্যবহৃত স্টার্টার কোডটি ব্যবহারকারীদের কাছে বার্তা প্রতিধ্বনিত করে এবং একটি রিচ কার্ড, একটি ক্যারোজেল, অথবা পরামর্শ চিপ উপস্থাপন করতে পারে। আসুন সোর্স কোডটি আরও গভীরভাবে পর্যালোচনা করি যাতে আমরা বুঝতে পারি এটি কীভাবে কাজ করে। তারপর আমরা খুঁজে বের করব যে আমাদের কী পরিবর্তন করতে হবে।
স্টার্টার কোডটি একটি জ্যাঙ্গো প্রকল্প। এই কোডল্যাব সিরিজের পরবর্তী অংশে, আমরা শপিং কার্ট এবং সংশ্লিষ্ট কথোপকথনের মতো ডেটা ধরে রাখার জন্য গুগল ডেটাস্টোর ব্যবহার করব। আপনি যদি আগে জ্যাঙ্গো ব্যবহার না করে থাকেন তবে চিন্তা করবেন না, এটি বেশ সহজ, এবং এই কোডল্যাবটি শেষ হওয়ার পরে আপনি এটি কীভাবে কাজ করে তা শিখে যাবেন।
উচ্চ স্তরে, জ্যাঙ্গো URL গুলিকে ভিউতে রুট করবে এবং ভিউ লজিক একটি টেমপ্লেট তৈরি করবে যা ব্রাউজারে রেন্ডার করবে। আসুন প্রকল্পের urls.py দেখে নেওয়া যাক।
bm-django-echo-bot/bmcodelab/urls.py [লাইন ৩১-৩৭]
from django.urls import include, path
import bopis.views as bopis_views
urlpatterns = [
path('', bopis_views.landing_placeholder),
path('callback/', bopis_views.callback),
]
এখানে দুটি রুট সংজ্ঞায়িত করা হয়েছে, এবং তাই জ্যাঙ্গো লজিক এক্সিকিউট করতে পারে যদি ঐ দুটি URL স্বীকৃত হয়। প্রজেক্টের URL https://PROJECT_ID.appspot.com/ হলে, প্রজেক্টটি যে রুটগুলি সম্পর্কে অবগত তা হল:
- https://PROJECT_ID.appspot.com/
- https://PROJECT_ID.appspot.com/callback/
দুটি URL রুটই bopis_views কে নির্দেশ করে যা bopis/views.py থেকে এসেছে। আসুন এই ফাইলটিতে কী ঘটছে তা একবার দেখে নেওয়া যাক। শুরু করার জন্য, প্রথমে bopis_views.landing_placeholder বুঝতে পারি।
bm-django-echo-bot/bonjourmeal-codelab/step-1/bopis/views.py [লাইনস 302-309]
...
def landing_placeholder(request):
return HttpResponse("<h1>Welcome to the Bonjour Meal Codelab</h1>
<br/><br/>
To message your Bonjour Meal agent, go to the Developer Console and retrieve
the Test URLs for the agent you have created as described in the codelab
<a href='https://codelabs.developers.google.com/codelabs/'>here</a>.")
...
এই লজিকের কিছু অংশ আপনার ওয়েব সার্ভার দ্বারা কার্যকর করা হয় যখন এটি প্রজেক্টের রুটকে নির্দেশ করে এমন একটি ওয়েব অনুরোধ পায়। এখানে খুব বেশি অভিনব কিছু ঘটে না: আমরা কেবল অনুরোধকারী ব্রাউজারে কিছু HTML সহ একটি HTTPResponse ফেরত পাঠাই। হ্যাঁ, আপনি অবশ্যই প্রজেক্টের রুট URL খুলতে পারেন, তবে সেখানে আসলে খুব বেশি কিছু করার নেই কারণ এটি আপনাকে এই কোডল্যাবে ফিরিয়ে আনে।
অন্যান্য URL callback নামক একটি ফাংশনে রুট করে, যা bopis/views.py তেও আছে। তাহলে আসুন সেই ফাংশনটি একবার দেখে নেওয়া যাক।
bm-django-echo-bot/bopis/views.py [লাইন 60-101]
...
def callback(request):
"""
Callback URL. Processes messages sent from user.
"""
if request.method == "POST":
request_data = request.body.decode('utf8').replace("'", '"')
request_body = json.loads(request_data)
print('request_body: %s', request_body)
# Extract the conversation id and message text
conversation_id = request_body.get('conversationId')
print('conversation_id: %s', conversation_id)
# Check that the message and text body exist
if 'message' in request_body and 'text' in request_body['message']:
message = request_body['message']['text']
print('message: %s', message)
route_message(message, conversation_id)
elif 'suggestionResponse' in request_body:
message = request_body['suggestionResponse']['postbackData']
print('message: %s', message)
route_message(message, conversation_id)
elif 'userStatus' in request_body:
if 'isTyping' in request_body['userStatus']:
print('User is typing')
elif 'requestedLiveAgent' in request_body['userStatus']:
print('User requested transfer to live agent')
return HttpResponse("Response.")
elif request.method == "GET":
return HttpResponse("This webhook expects a POST request.")
...
এখানে লজিকটি একটি বার্তা বা suggestionResponse- এর অনুরোধের মূল অংশটি পার্স করে এবং সেই তথ্যটি route_message নামক একটি ফাংশনে প্রেরণ করে, তারপর বার্তাটি প্রাপ্তির স্বীকৃতি দেওয়ার জন্য একটি HttpResponse Business Messages পরিকাঠামোতে ফেরত পাঠায়।
এটি একটি গুরুত্বপূর্ণ ফাংশন। এই লজিকটি হল আপনার ওয়েব অ্যাপ্লিকেশনের ওয়েবহুক, যা আপনার এজেন্টের সাথে ইন্টারঅ্যাক্ট করা ব্যবহারকারীদের কাছ থেকে বার্তা গ্রহণ করে। আপনি ওয়েবহুকটি ডায়ালগফ্লো-এর মতো একটি অটোমেশন টুলে বার্তা পাঠানোর জন্য প্রসারিত করতে পারেন যাতে ব্যবহারকারী কী বলতে পারেন তা বুঝতে পারেন এবং সেই অনুমান থেকে প্রতিক্রিয়া তৈরি করতে পারেন। আপনি বার্তাটি ফরোয়ার্ডও করতে পারেন যাতে ব্যবহারকারী একটি লাইভ এজেন্টের সাথে সংযোগ করতে পারেন। নিম্নলিখিত চিত্রটি দেখুন:

Business Messages আপনার ওয়েবহুকে JSON পেলোড হিসেবে বার্তার বিষয়বস্তু পাঠায় যেখানে এটি একটি লাইভ এজেন্টের কাছে অথবা বট হিসেবে সাড়া দেওয়ার জন্য কোনও লজিকের কাছে পাঠানো হয়। আমাদের ক্ষেত্রে, সেই রাউটিং মেকানিজম হল route_message । আসুন একবার দেখে নেওয়া যাক।
bm-django-echo-bot/bopis/views.py [লাইনস 105-122]
...
def route_message(message, conversation_id):
'''
Routes the message received from the user to create a response.
Args:
message (str): The message text received from the user.
conversation_id (str): The unique id for this user and agent.
'''
normalized_message = message.lower()
if normalized_message == CMD_RICH_CARD:
send_rich_card(conversation_id)
elif normalized_message == CMD_CAROUSEL_CARD:
send_carousel(conversation_id)
elif normalized_message == CMD_SUGGESTIONS:
send_message_with_suggestions(conversation_id)
else:
echo_message(message, conversation_id)
...
এই যুক্তির সাহায্যে ব্যবহারকারীর প্রাপ্ত বার্তাটি পরীক্ষা করা শুরু হয়। প্রথমে, সমস্ত অক্ষর কমিয়ে বার্তাটি স্বাভাবিক করা হয়। একবার স্বাভাবিক হয়ে গেলে, এটি পরীক্ষা করে যে বার্তাটি ফাইলের শীর্ষে সংজ্ঞায়িত ধ্রুবকগুলির মধ্যে একটি কিনা।
bm-django-echo-bot/bopis/views.py [লাইনস 40-42]
...
# Set of commands the bot understands
CMD_RICH_CARD = 'card'
CMD_CAROUSEL_CARD = 'carousel'
CMD_SUGGESTIONS = 'chips'
...
অর্থাৎ, বটটি সেই বার্তাগুলির জন্য পার্স করে যেখানে বিশেষভাবে এই কোডল্যাবের পূর্ববর্তী ধাপ থেকে কথোপকথন শুরুর postback_data আমরা যে স্ট্রিংগুলি রেখেছি তার কোনওটি থাকে। যদি এই স্ট্রিংগুলির কোনওটিই না দেখা যায়, তবে এটি কেবল বার্তাটিকে echo_message নামক একটি ফাংশনে প্রেরণ করে, যা আপনি কল্পনা করতে পারেন... বার্তাগুলি প্রতিধ্বনিত করবে।
বার্তা পাঠানো হচ্ছে
তাহলে এখন পর্যন্ত, ওয়েব অ্যাপ্লিকেশন কীভাবে বার্তা গ্রহণ করে সে সম্পর্কে আপনার ধারণা থাকা উচিত। এটি সবই ওয়েবহুক দ্বারা সম্পন্ন হয়।
কিন্তু বিজনেস মেসেজ ব্যবহার করে অ্যাপ্লিকেশনটি কীভাবে একজন ব্যবহারকারীকে আউটবাউন্ড মেসেজ পাঠায়?

যখন আপনার পরিকাঠামো ব্যবহারকারীর প্রতি সাড়া দেয়, তখন আপনি Business Messages API-তে সাড়া পাঠান, যা ব্যবহারকারীর কাছে বার্তা পৌঁছে দেয়।
Business Messages API-তে Python, Node.js এবং Java ভাষায় লাইব্রেরি আছে। আমাদের একটি REST APIও আছে যার মাধ্যমে আপনি সরাসরি অনুরোধ করতে পারবেন যদি আপনার পরিকাঠামো আমাদের লাইব্রেরি থাকা ভাষায় না থাকে। একটি নির্দিষ্ট কথোপকথন আইডিতে বার্তা পাঠানোর জন্য cURL কীভাবে ব্যবহার করা হয় তা জানতে Sending Messages দেখুন।
এই কোডল্যাবের উদ্দেশ্যে, আমরা Python ক্লায়েন্ট লাইব্রেরি ব্যবহারের উপর মনোযোগ দেব যা ইতিমধ্যেই Bonjour Meal স্টার্টার কোডের সাথে একীভূত হয়েছে যা আপনার GCP প্রকল্পের App Engine-এ স্থাপন করা হয়েছে, অথবা ngrok-এর মাধ্যমে স্থানীয়ভাবে চালানো হচ্ছে।
চলুন echo_message ফাংশনটি দেখি এবং দেখি কিভাবে আমরা API এর সাথে ইন্টারঅ্যাক্ট করে Business Messages-এ বার্তা পাঠাই।
bm-django-echo-bot/bopis/views.py [লাইনস 199-212]
...
def echo_message(message, conversation_id):
'''
Sends the message received from the user back to the user.
Args:
message (str): The message text received from the user.
conversation_id (str): The unique id for this user and agent.
'''
message_obj = BusinessMessagesMessage(
messageId=str(uuid.uuid4().int),
representative=BOT_REPRESENTATIVE,
text=message)
send_message(message_obj, conversation_id)
...
এই ফাংশনে, echo_message ফাংশনে পাস করা মেসেজ ভেরিয়েবলের সাহায্যে একটি BusinessMessagesMessage ইনস্ট্যান্টিয়েট করা হয়। একবার ইনস্ট্যান্টিয়েট করা হলে, অবজেক্টটি কথোপকথন আইডি সহ send_message এ পাস করা হয়।
bm-django-echo-bot/bopis/views.py [লাইনস 214-236]
...
def send_message(message, conversation_id):
'''
Posts a message to the Business Messages API, first sending
a typing indicator event and sending a stop typing event after
the message has been sent.
Args:
message (obj): The message object payload to send to the user.
conversation_id (str): The unique id for this user and agent.
'''
credentials = ServiceAccountCredentials.from_json_keyfile_name(
SERVICE_ACCOUNT_LOCATION,
scopes=['https://www.googleapis.com/auth/businessmessages'])
client = bm_client.BusinessmessagesV1(credentials=credentials)
# Create the message request
create_request = BusinessmessagesConversationsMessagesCreateRequest(
businessMessagesMessage=message,
parent='conversations/' + conversation_id)
bm_client.BusinessmessagesV1.ConversationsMessagesService(
client=client).Create(request=create_request)
...
send_message ফাংশনটি যা করছে তা হল আপনার পরিষেবা অ্যাকাউন্টের শংসাপত্র ব্যবহার করে যাচাই করা যে আপনি এই কথোপকথনে বার্তা পাঠাতে পারেন, একটি Business Messages ক্লায়েন্ট চালু করা এবং প্রদত্ত conversation ID বার্তা পাঠানোর জন্য একটি অনুরোধ তৈরি করা।
সমৃদ্ধ বৈশিষ্ট্যগুলি এই send_message ফাংশনটিও ব্যবহার করে, তবে তারা যে বার্তাগুলি তৈরি করে তা নির্দিষ্টভাবে সমৃদ্ধ কার্ড, ক্যারোসেল এবং সাজেশন চিপের জন্য। সমৃদ্ধ কার্ড এবং ক্যারোসেলগুলিতে গ্রাফিকাল সম্পদ অন্তর্ভুক্ত থাকতে পারে যখন সাজেশন চিপগুলিতে postback_data থাকে যাতে কলব্যাক লজিক এটিকে যথাযথভাবে পার্স করতে পারে।
এখন আমরা কীভাবে বার্তা পাঠাতে হয় তা দেখেছি, নমুনাটি কীভাবে রিচ কার্ড, ক্যারোসেল এবং সাজেশন চিপ পাঠায় তা পরীক্ষা করে দেখব। পরবর্তী বিভাগে আমরা এই সমৃদ্ধ বৈশিষ্ট্যগুলির কিছু সহ বার্তা পাঠানোর জন্য সোর্স কোড পরিবর্তন করব।
তুমি প্রস্তুত হলে, চলুন Bonjour Meal এজেন্টটি কাস্টমাইজ করি।
৫. আপনার এজেন্টকে কাস্টমাইজ করা
যদি তুমি এখন পর্যন্ত কোডল্যাবটি অনুসরণ করে থাকো, তাহলে আমাদের সুন্দর এজেন্টের সাথে দেখা করা উচিত।

ঠিক আছে, খুব একটা সুন্দর না, আসলে এটি দেখতে কিছুটা খালি এবং আমাদের ব্যবসার খুব একটা ভালো প্রতিনিধিত্ব করে না। সৌভাগ্যবশত, এজেন্টকে সমর্থনকারী কোড সম্পর্কে আমাদের মৌলিক জ্ঞান আছে এবং আমাদের কাছে আমাদের এজেন্টকে যেকোনোভাবে কাস্টমাইজ করার জন্য প্রয়োজনীয় সরঞ্জাম রয়েছে।
এই কোডল্যাবের বাকি অংশে, আমরা এজেন্টকে নিম্নলিখিত বিষয়গুলি দিয়ে প্রসারিত করব:
- একটি আসল লোগো অন্তর্ভুক্ত করুন
- উন্নত স্বাগত বার্তা
- ব্যবসার সময় সম্পর্কে তথ্য প্রদান করুন
- ব্যবহারকারীকে জানান যে অনলাইনে জিনিসপত্র কেনাকাটা শীঘ্রই শুরু হচ্ছে।
- কথোপকথন সহজতর করার জন্য কথোপকথনের পরামর্শ চিপ ব্যবহার করা
লোগো এবং স্বাগত বার্তা আপডেট করার জন্য আমরা বিজনেস কমিউনিকেশনস কনসোলের সুবিধা নেব, তবে একই কাজ করার জন্য আপনার কাছে সর্বদা সরাসরি বিজনেস কমিউনিকেশনস API ব্যবহার করার বিকল্প থাকবে। তারপর আমাদের ব্যবসায়িক সময় সম্পর্কে তথ্য প্রদানের জন্য উপযুক্ত বার্তা পাঠানোর জন্য সোর্স কোড আপডেট করতে হবে এবং Bonjour Meal শীঘ্রই একটি অনলাইন শপিং বৈশিষ্ট্য অফার করবে। এটি হয়ে গেলে, আমরা বিজনেস কমিউনিকেশনস কনসোলে ফিরে যাব এবং ডিজিটাল এজেন্ট যে সুখী পথের অভিজ্ঞতাগুলি সমর্থন করে তার দিকে কথোপকথন পরিচালনা করতে সহায়তা করার জন্য কথোপকথনের পরামর্শ চিপ তৈরি করব।
একটি লোগো অন্তর্ভুক্ত করুন
বিজনেস কমিউনিকেশনস কনসোল থেকে, আপনার এজেন্ট নির্বাচন করুন এবং এজেন্ট তথ্যে যান। আমরা নীচে হলুদ রঙে উল্লেখিত ব্যবসায়িক লোগোটি আপডেট করতে চাই।

আপলোড এ ক্লিক করুন, এবং আপনি আপলোড করার জন্য বা URL থেকে আমদানি করার জন্য একটি ছবি নির্বাচন করতে পারবেন।
আপনার নিজস্ব লোগো ব্যবহারের জন্য আমরা যে সেরা অনুশীলনগুলি সুপারিশ করি তা জানতে ডকুমেন্টেশনে লোগো ডিজাইনের নির্দেশিকাগুলি একবার দেখুন।
এই কোডল্যাবের শুরুতে আপনার ক্লোন করা সোর্স কোডে থাকা লোগোটি আপলোড করা যাক। আপনি এটি রিপোজিটরির ./assets/ ডিরেক্টরিতে পাবেন এবং ফাইলটির নাম "bonjour_meal-logo.png"। আপনি ওয়েব ব্রাউজারের মোডালে ফাইলটি টেনে আনতে পারেন, ছবির মান এবং ক্রপ নিয়ন্ত্রণ করার জন্য একটি হালকা সম্পাদনা সরঞ্জাম উপস্থাপন করা হবে। ছবির রেজোলিউশন সামঞ্জস্য করুন এবং ক্রপ করুন যাতে ছবিটি 50KB সীমাবদ্ধতার চেয়ে কম বা সমান হয়। আপনি যখন ছবিটি নিয়ে খুশি হন, তখন নিশ্চিত করতে নীল বৃত্তে চেক চিহ্নে ক্লিক করুন এবং মোডালের নীচে নির্বাচন করুন ক্লিক করুন।

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

আমরা কথোপকথন শুরু করার জন্য কিছু যোগ করব জেনে, আমরা আমাদের স্বাগত বার্তায় সেগুলি উল্লেখ করতে পারি। ইনপুট ক্ষেত্রে, আসুন এটি নিম্নলিখিত লেখা দিয়ে প্রতিস্থাপন করি:
"Bonjour Meal-এ আপনাকে স্বাগতম। আমি একজন সহকারী যে Bonjour Meal সম্পর্কে আপনার যেকোনো প্রশ্নের উত্তর দিতে সাহায্য করতে পারি। নিম্নলিখিত কিছু বিকল্প ব্যবহার করে দেখুন।"
অবশেষে এজেন্ট তথ্য পৃষ্ঠার উপরের ডানদিকে সংরক্ষণ করুন -এ ক্লিক করুন। আবারও বলছি, আমাদের ক্যাশিং পদ্ধতির কারণে এই পরিবর্তনটি প্রতিফলিত হতে কিছুটা সময় লাগবে, যাতে জিনিসগুলি দ্রুত সম্পন্ন হয়!
ব্যবসার সময় সম্পর্কে তথ্য প্রদান
ব্যবহারকারীদের এই তথ্য প্রদানের জন্য, আমরা Business Messages API ব্যবহার করে ব্যবহারকারীকে একটি কাস্টম বার্তা পাঠাব।
তোমার মনে থাকতে পারে যে views.py এর route_message ফাংশনে বার্তাগুলি পার্স করা হয়। ফাংশনটি প্রথমে স্ট্রিংটিকে স্বাভাবিক করে এবং তারপর স্বাভাবিককৃত বার্তাটি হার্ড কোডেড প্যারামিটারগুলির সাথে মেলে কিনা তা পরীক্ষা করা শুরু করে। সহজ করার জন্য, আসুন একটি অতিরিক্ত শর্ত যোগ করি যেখানে আমরা পরীক্ষা করি যে স্বাভাবিককৃত বার্তাটি একটি নতুন ধ্রুবকের সমান কিনা যাকে আমরা CMD_BUSINESS_HOURS_INQUIRY বলব এবং এতে "business-hours-inquiry" মান থাকবে। যদি শর্তটি সত্য হিসাবে মূল্যায়ন করা হয়, তাহলে আমরা send_message_with_business_hours নামক একটি ফাংশন চালু করব।
route_message ফাংশনটি এখন নিচের মতো দেখাবে:
bm-django-echo-bot/bopis/views.py
...
def route_message(message, conversation_id):
'''
Routes the message received from the user to create a response.
Args:
message (str): The message text received from the user.
conversation_id (str): The unique id for this user and agent.
'''
normalized_message = message.lower()
if normalized_message == CMD_RICH_CARD:
send_rich_card(conversation_id)
elif normalized_message == CMD_CAROUSEL_CARD:
send_carousel(conversation_id)
elif normalized_message == CMD_SUGGESTIONS:
send_message_with_suggestions(conversation_id)
elif normalized_message == CMD_BUSINESS_HOURS_INQUIRY:
send_message_with_business_hours(conversation_id)
else:
echo_message(message, conversation_id)
...
কোডটি কাজ করার জন্য, আমাদের আরও দুটি পরিবর্তন করতে হবে; প্রথমটি হল অন্যান্য ধ্রুবকের সাথে CMD_BUSINESS_HOURS_INQUIRY সংজ্ঞায়িত করা, দ্বিতীয়টি হল send_message_with_business_hours ফাংশনটি আসলে সংজ্ঞায়িত করা এবং Business Messages API ব্যবহার করে একটি বার্তা পাঠানো।
প্রথমে ফাইলের উপরের ধ্রুবকটিকে অন্যান্য ধ্রুবক ঘোষণার সাথে সংজ্ঞায়িত করা যাক:
bm-django-echo-bot/bopis/views.py
...
# Set of commands the bot understands
CMD_RICH_CARD = 'card'
CMD_CAROUSEL_CARD = 'carousel'
CMD_SUGGESTIONS = 'chips'
CMD_BUSINESS_HOURS_INQUIRY = 'business-hours-inquiry'
...
আর এখন, send_message_with_business_hours সংজ্ঞায়িত করতে। আপনি উপযুক্ত Python সিনট্যাক্স অনুসরণ করে ফাইলের যেকোনো জায়গায় এই ফাংশনটি সংজ্ঞায়িত করতে পারেন। যেহেতু এই ফাংশনটি কেবল একটি বার্তা পাঠাচ্ছে, অনেকটা echo_message মতো, আপনি এই ফাংশনটি সংজ্ঞায়িত করার জন্য এটি একটি টেমপ্লেট হিসাবে ব্যবহার করতে পারেন।
bm-django-echo-bot/bopis/views.py
...
def send_message_with_business_hours(conversation_id):
message = '''Thanks for contacting us! The hours for the store are:\n
MON 8am - 8pm\n
TUE 8am - 8pm\n
WED 8am - 8pm\n
THU 8am - 8pm\n
FRI 8am - 8pm\n
SAT 8am - 8pm\n
SUN 8am - 8pm
'''
message_obj = BusinessMessagesMessage(
messageId=str(uuid.uuid4().int),
representative=BOT_REPRESENTATIVE,
text=message)
send_message(message_obj, conversation_id)
...
এর ফলে, আমাদের বট ব্যবহারকারীদের "business-hours-inquiry" বার্তাটি পাঠালে এই ব্যবসায়িক ঘন্টার সাথে তাদের প্রতিক্রিয়া জানাতে সক্ষম হবে। আপনি এরকম কিছু আশা করতে পারেন:

একবার আপনি GCP-তে সোর্স কোড স্থাপন করলে, পরিবর্তনগুলি তাৎক্ষণিকভাবে দৃশ্যমান হবে। আমরা এজেন্টের তথ্য যেভাবে ক্যাশে করা হয় সেভাবে গুগল ক্লাউড প্ল্যাটফর্মে ওয়েব অ্যাপ্লিকেশনটি ক্যাশে করি না, তাই আপনি এখনই এই অভিজ্ঞতাটি পরীক্ষা করতে সক্ষম হবেন।
যদিও উৎস পরিবর্তনের ক্ষেত্রে আমাদের কিছুটা গতি আছে, আসুন আরও একটি পরিবর্তন করি যা ব্যবহারকারীকে অনলাইনে কেনাকাটা করার বিষয়ে জিজ্ঞাসা করতে সাহায্য করবে। আপনার ডিজিটাল এজেন্ট উত্তর দেবে যে বৈশিষ্ট্যটি এখনও উপলব্ধ নয় তবে পরে ফিরে এসে পরীক্ষা করবে।
ব্যবহারকারীকে জানানো যে অনলাইনে কেনাকাটা শীঘ্রই আসছে
ব্যবহারকারীকে ব্যবসার সময় সম্পর্কে অবহিত করার জন্য আমরা একই রকম পরিবর্তন করব। এবার, আসুন তথ্যটি একটি রিচ কার্ডে একটি আকর্ষণীয় ছবির সাথে রাখি।
নরমালাইজড মেসেজটি পার্স করুন এবং CMD_ONLINE_SHOPPING_INQUIRY নামক একটি ধ্রুবকের জন্য একটি শর্ত পরীক্ষা করুন যার মান "online-shopping-inquiry" এ সেট করা আছে যা শর্তটি সত্য হলে send_online_shopping_info_message কে আহ্বান করে।
bm-django-echo-bot/bopis/views.py
...
# Set of commands the bot understands
CMD_RICH_CARD = 'card'
CMD_CAROUSEL_CARD = 'carousel'
CMD_SUGGESTIONS = 'chips'
CMD_BUSINESS_HOURS_INQUIRY = 'business-hours-inquiry'
CMD_ONLINE_SHOPPING_INQUIRY = 'online-shopping-inquiry'
...
...
...
def route_message(message, conversation_id):
'''
Routes the message received from the user to create a response.
Args:
message (str): The message text received from the user.
conversation_id (str): The unique id for this user and agent.
'''
normalized_message = message.lower()
if normalized_message == CMD_RICH_CARD:
send_rich_card(conversation_id)
elif normalized_message == CMD_CAROUSEL_CARD:
send_carousel(conversation_id)
elif normalized_message == CMD_SUGGESTIONS:
send_message_with_suggestions(conversation_id)
elif normalized_message == CMD_BUSINESS_HOURS_INQUIRY:
send_message_with_business_hours(conversation_id)
elif normalized_message == CMD_ONLINE_SHOPPING_INQUIRY:
send_online_shopping_info_message(conversation_id)
else:
echo_message(message, conversation_id)
...
এবার send_online_shopping_info_message সংজ্ঞায়িত করা যাক। আমরা চাই এই বার্তাটি একটি রিচ কার্ডে একটি ছবি সহ পাঠানো হোক, তাই আসুন send_rich_card ফাংশনটি কপি করে send_online_shopping_info_message সংজ্ঞায়িত করার জন্য একটি টেমপ্লেট হিসেবে ব্যবহার করি।
প্রথমে আমাদের ফলব্যাক টেক্সট আপডেট করা উচিত যাতে একটি উপযুক্ত বার্তা থাকে। যদি ডিভাইসটি কোনও কারণে রিচ কার্ড গ্রহণ করতে না পারে তবে ফলব্যাক টেক্সট ব্যবহার করা হয়। এরপর, আমাদের BusinessMessagesRichCard আপডেট করা উচিত যাতে একটি প্রাসঙ্গিক শিরোনাম, বিবরণ, পরামর্শ এবং একটি মিডিয়া ক্ষেত্র অন্তর্ভুক্ত করা যায়। আমাদের ফাংশনটি দেখতে এইরকম হওয়া উচিত:
bm-django-echo-bot/bopis/views.py
...
def send_online_shopping_info_message(conversation_id):
fallback_text = ('Online shopping will be available soon!')
rich_card = BusinessMessagesRichCard(
standaloneCard=BusinessMessagesStandaloneCard(
cardContent=BusinessMessagesCardContent(
title='Online shopping info!',
description='Thanks for your business, we are located in SF near the Golden Gate Bridge. Online shopping is not yet available, please check back with us in a few days.',
suggestions=[],
media=BusinessMessagesMedia(
height=BusinessMessagesMedia.HeightValueValuesEnum.MEDIUM,
contentInfo=BusinessMessagesContentInfo(
fileUrl=SAMPLE_IMAGES[4],
forceRefresh=False
))
)))
message_obj = BusinessMessagesMessage(
messageId=str(uuid.uuid4().int),
representative=BOT_REPRESENTATIVE,
richCard=rich_card,
fallback=fallback_text)
send_message(message_obj, conversation_id)
...
ওহ! আমাদের ডিজিটাল এজেন্ট এখন ব্যবহারকারীদের অনলাইন কেনাকাটা সম্পর্কে জিজ্ঞাসার উত্তর দিতে পারে। আপাতত, আমাদের ডিজিটাল এজেন্ট এখনও অনলাইন কেনাকাটা সমর্থন করে না, তাই আমরা ব্যবহারকারীদের একটি বার্তা প্রদান করি যাতে তাদের জানানো হয় যে এই বৈশিষ্ট্যটি শীঘ্রই আসছে। ব্যবহারকারী যখন অনলাইনে কেনাকাটা সম্পর্কে জিজ্ঞাসা করেন তখন আমাদের ডিজিটাল এজেন্ট দেখতে এইরকম হয়।

ব্যবহারকারীদের ব্যবসার সময় সম্পর্কে জিজ্ঞাসা করার অনুমতি দেওয়ার জন্য আমরা যে পূর্ববর্তী পরিবর্তনটি করেছি ঠিক তেমনই, আপনি যদি ngrok ব্যবহার করেন, অথবা GCP অ্যাপ ইঞ্জিনে কোডটি স্থাপন করার সাথে সাথেই এই পরিবর্তনটি তাৎক্ষণিকভাবে দেখা যাবে।
পরবর্তী অংশে, আমরা কথোপকথন শুরু করার কৌশল এবং পরামর্শ চিপ ব্যবহার করব যাতে কথোপকথনটি সুখী পথে পরিচালিত হয়।
কথোপকথন পরিচালনার জন্য চিপস ব্যবহার করা
আমরা কিছু সোর্স কোড পরিবর্তন করেছি এবং আপডেটেড ডিজিটাল এজেন্ট স্থাপন করেছি, কিন্তু আমরা কখনই আশা করব না যে ব্যবহারকারীরা ব্যবসা সম্পর্কে জিজ্ঞাসা করার জন্য "business-hours-inquiry" বা "online-shopping-info" টাইপ করবেন। আসুন কথোপকথনের শুরুগুলি আপডেট করি যাতে কথোপকথনটি খোলা হলে, ব্যবহারকারীকে কেবল একটি সুন্দর স্বাগত বার্তা দ্বারা স্বাগত জানানো হয় না, বরং কথোপকথনের শুরুগুলিও উপস্থাপন করা হয়।
বিজনেস কমিউনিকেশনস কনসোলে যান এবং আপনার এজেন্টের এজেন্ট তথ্য পৃষ্ঠাটি অ্যাক্সেস করুন। আমরা পূর্বে "চিপস", "কার্ড" এবং "ক্যারোসেল" এর জন্য কথোপকথন শুরু করার বিকল্পগুলি সংজ্ঞায়িত করেছি। যদিও এগুলি এখনও কাজ করে, তবুও এগুলি আর আমাদের ব্যবসায়িক ফাংশনের সাথে প্রাসঙ্গিক নয়। আপনি এই সমৃদ্ধ বৈশিষ্ট্যগুলি প্রদর্শন চালিয়ে যাওয়ার জন্য এগুলি রেখে দিতে পারেন অথবা এগুলি সরিয়ে ফেলতে পারেন যাতে আপনার ডিজিটাল এজেন্ট বিশেষভাবে Bonjour Meal ব্যবসার জন্য কথোপকথন শুরু করার বিকল্পগুলি প্রদর্শন করে।
আমরা দুটি নতুন কথোপকথন শুরু করার বিকল্প তৈরি করব। প্রথমটির জন্য, লেখাটি "আপনার ব্যবসার সময় কত?" এ সেট করুন এবং পোস্টব্যাক ডেটা "ব্যবসায়িক-ঘন্টা-তদন্ত" এ সেট করুন। দ্বিতীয় কথোপকথন শুরুর জন্য, লেখাটি "আমি কি এখানে কেনাকাটা করতে পারি?" এ সেট করুন এবং পোস্টব্যাক ডেটা "অনলাইন-শপিং-তথ্য" এ সেট করুন।
ফলাফলটি নিম্নলিখিত স্ক্রিনশটের মতো কনফিগারেশন হওয়া উচিত:

বিজনেস কমিউনিকেশনস কনসোলে করা অন্যান্য পরিবর্তনের মতো, এটি প্রচারিত হতে কিছুটা সময় লাগবে এবং তারপরে আপনি আপনার মোবাইল ডিভাইসে পরিবর্তনগুলি দেখতে পারবেন।
এখন যেহেতু আমরা কথোপকথন শুরু করার কাজ শেষ করেছি, আমরা কথোপকথন শুরু হওয়ার পরে ব্যবহারকারীকে একটি সুখী পথে পরিচালিত করার একটি উপায়ও চাইব। ডিজিটাল এজেন্ট যে অন্যান্য বৈশিষ্ট্যগুলিতে সক্ষম তা ব্যবহারকারীকে নির্দেশ করার জন্য বার্তা পাঠানোর পরে প্রাসঙ্গিকভাবে চিপ ব্যবহার করা সম্ভব। তাই আমরা যা করব তা হল যখনই ব্যবহারকারী ব্যবসার সময় বা অনলাইন কেনাকাটা সম্পর্কে জিজ্ঞাসা করবেন তখন এজেন্টের সাথে অন্য কিছু করার পরামর্শ সহ একটি বার্তা পাঠাবো।
ফাংশনের শেষে, নিম্নলিখিতটি যোগ করুন:
bm-django-echo-bot/bopis/views.py
...
def send_online_shopping_info_message(conversation_id):
...
# at the end of the function, send a message with suggestions
message_obj = BusinessMessagesMessage(
messageId=str(uuid.uuid4().int),
representative=BOT_REPRESENTATIVE,
text='Let us know how else we can help you:',
fallback='Please let us know how else we can help you.',
suggestions=[
BusinessMessagesSuggestion(
reply=BusinessMessagesSuggestedReply(
text='Business hours',
postbackData='business-hours-inquiry')
),
])
send_message(message_obj, conversation_id)
...
# Let's do the same with the business hours
def send_message_with_business_hours(conversation_id):
...
# at the end of the function, send a message with suggestions
message_obj = BusinessMessagesMessage(
messageId=str(uuid.uuid4().int),
representative=BOT_REPRESENTATIVE,
text='Let us know how else we can help you:',
fallback='Please let us know how else we can help you.',
suggestions=[
BusinessMessagesSuggestion(
reply=BusinessMessagesSuggestedReply(
text='Can I purchase online?',
postbackData='online-shopping-inquiry')
),
])
send_message(message_obj, conversation_id)
...
মনে রাখবেন যে BusinessMessagesSuggestion-এর মধ্যে টেক্সট ফিল্ডটি 25 অক্ষরের মধ্যে সীমাবদ্ধ, যেমনটি ডকুমেন্টেশনে বর্ণিত হয়েছে।
আপডেটেড কথোপকথন শুরু এবং পরামর্শ চিপের কৌশলগত ব্যবহারের মাধ্যমে, এখানে প্রত্যাশিত ব্যবহারকারীর অভিজ্ঞতার কিছু স্ক্রিনশট দেওয়া হল।

৬. অভিনন্দন
অভিনন্দন, আপনি সফলভাবে আপনার প্রথম Business Messages ডিজিটাল এজেন্ট তৈরি করেছেন!
আপনি বিজনেস মেসেজে আপনার ডিজিটাল এজেন্টকে সমর্থন করার জন্য একটি ওয়েব অ্যাপ্লিকেশন স্থাপন করেছেন, এজেন্ট পরিবর্তন করার জন্য বিজনেস কমিউনিকেশনস কনসোল ব্যবহার করেছেন এবং সোর্স কোডে পরিবর্তন করে ডিজিটাল এজেন্টের সাথে ব্যবহারকারীর অভিজ্ঞতাকে আরও উন্নত করেছেন।
একটি ইন্টারেক্টিভ বিজনেস মেসেজ অভিজ্ঞতা তৈরির জন্য প্রয়োজনীয় মূল ধাপগুলি এখন আপনি জানেন এবং এখান থেকে সম্ভাবনাগুলি উত্তেজনাপূর্ণ। আপনার এজেন্টকে ইনভেন্টরি লুকআপ সমর্থন করার জন্য বাড়ানো যেতে পারে অথবা ব্যবহারকারীর আগ্রহের বিষয়গুলি ট্র্যাক করার জন্য একটি শপিং কার্ট চালু করা যেতে পারে। আপনি মেনুতে আইটেমগুলি প্রদর্শন করার জন্য একটি ক্যারোজেল ব্যবহার করতে পারেন এবং পরামর্শ ব্যবহার করে, ব্যবহারকারীকে তাদের আগ্রহের আইটেমগুলি নির্বাচন করার অনুমতি দিতে পারেন।
এটি দেখতে কেমন হতে পারে তার একটি টিজার এখানে দেওয়া হল।

আমি কীভাবে একটি দুর্দান্ত কথোপকথনের অভিজ্ঞতা তৈরি করব?
সেরা এজেন্টরা ব্যবহারকারীদের প্রাসঙ্গিক তথ্য প্রদান করে এবং কথোপকথনের মাধ্যমে তাদের কার্যকারিতা প্রদান করে যাতে তারা ব্যবসার সাথে জড়িত থাকতে পারে এবং যোগাযোগ করতে পারে যেমনটি তারা সাধারণত ফোনে বা এমনকি ব্যক্তিগতভাবে করে। আপনি যে ব্যবসার সাথে কাজ করেন তার সাথে আপনি যে কথোপকথন করতে চান তাতে নিম্নলিখিত বিষয়গুলি কীভাবে প্রযোজ্য হতে পারে তা ভেবে দেখুন।
প্রেক্ষাপট প্রদান করুন এবং প্রত্যাশা নির্ধারণ করুন
প্রেক্ষাপট প্রদানের অর্থ ব্যবহারকারীকে কীভাবে সাহায্য করতে পারেন তা স্পষ্টভাবে বলা থেকে শুরু করে ডিজিটাল এজেন্টকে এমন একটি চরিত্রের সাথে পরিচয় করিয়ে দেওয়া যার সাথে ব্যবহারকারী সম্পর্ক স্থাপন করতে পারে। বিজনেস মেসেজে সফল এজেন্টরা প্রতিনিধিত্বমূলক অবতার ব্যবহার করে ব্যবহারকারীকে দেখান যে তারা কার সাথে কথা বলছেন।
প্রত্যাশা নির্ধারণ আপনার তৈরি করা ব্যবহারকারীর অভিজ্ঞতার উপর নির্ভর করে। উদাহরণস্বরূপ, যদি আপনার এজেন্ট ইনভেন্টরি লুকআপ সমর্থন করে, তাহলে উত্তর দেওয়ার আগে প্রথমে ব্যবহারকারীকে জানান যে প্রাপ্যতা কম থাকতে পারে।
ব্যবহারকারীকে কার্যকারিতা প্রদান করুন
গ্রাহকরা সর্বদা ব্যবসার সাথে সংযুক্ত থাকেন। অর্ডারের অবস্থা পরীক্ষা করা থেকে শুরু করে কোনও পণ্য স্টকে আছে কিনা তা পরীক্ষা করা পর্যন্ত, Business Messages জটিল ব্যবহারকারীর মিথস্ক্রিয়া সমর্থন করতে পারে। অনেক ব্যবহারকারী ব্যবসার ওয়েবসাইটে উত্তর পাওয়া গেলেও তাদের প্রশ্নের উত্তর পেতে ফোনে ব্যবসার সাথে কল করে চলেছেন। এর ফলে ব্যবসাগুলিকে বিশেষ করে ছুটির দিনে কল ভলিউম পরিচালনা করার জন্য আরও বেশি সম্পদ বিনিয়োগ করতে হয়।
ব্যবহারকারীকে ব্যস্ত রাখুন
ব্যবহারকারীকে কথোপকথনে নিযুক্ত রাখার জন্য কথোপকথনের স্পর্শ বিন্দু প্রদান করুন। বার্তাগুলির মধ্যে, আপনি টাইপিং সূচকগুলি ব্যবহার করে ব্যবহারকারীকে জানাতে পারেন যে আপনি ব্যবহারকারীর জন্য একটি উত্তর প্রক্রিয়া করছেন।
টাইপিং ইন্ডিকেটর, সাজেশন চিপস, রিচ কার্ড এবং ক্যারোসেলের মতো সমৃদ্ধ বৈশিষ্ট্যগুলির সাহায্যে, আপনি ব্যবহারকারীকে হ্যাপি পাথ ব্যবহারকারীর অভিজ্ঞতার মাধ্যমে গাইড করতে পারেন যাতে তারা আইটেমের মেনু থেকে অর্ডার করার মতো নির্দিষ্ট কাজগুলি সম্পন্ন করতে পারে। লক্ষ্য হল একটি ব্যবসার ফোন লাইনে কল ট্র্যাফিক হ্রাস করা।
একটি কথোপকথন ব্যবহারকারীকে কার্যকারিতা প্রদান করে তা অত্যন্ত গুরুত্বপূর্ণ। যে ব্যবহারকারীরা মেসেজিংয়ের মাধ্যমে কোনও ব্যবসার সাথে সংযোগ স্থাপন করেন তারা আশা করেন যে তাদের প্রশ্নের উত্তর দ্রুত পাওয়া যাবে। আদর্শ নয় এমন পরিস্থিতিতে, ডিজিটাল এজেন্ট কথোপকথনটি সহজতর করতে পারে না যার ফলে ব্যবহারকারীর অভিজ্ঞতা খারাপ হতে পারে। সৌভাগ্যবশত, এর সমাধানের উপায় রয়েছে, যেমন কথোপকথনটি একটি লাইভ এজেন্টের কাছে স্থানান্তর করা, যা আমরা ভবিষ্যতের কোডল্যাবে আলোচনা করব।
এরপর কী?
যখন আপনি প্রস্তুত হবেন, তখন Business Messages-এ আপনি যে জটিল মিথস্ক্রিয়াগুলি অর্জন করতে পারেন সেগুলি সম্পর্কে জানতে নিম্নলিখিত কয়েকটি বিষয় পরীক্ষা করে দেখুন।
রেফারেন্স ডক্স
- প্রস্তাবিত উত্তর
- ব্যবসায়িক বার্তা বার্তা রেফারেন্স ডকুমেন্ট
- রিচকার্ডের জন্য JSON সংজ্ঞা