দোকানে অনলাইন পিকআপ কিনুন: বনজোর খাবার - পার্ট 1 - শুরু করা

1। পরিচিতি

637766505206e0a1.pngc604dca3ca211399.png

শেষ আপডেট: 2022-05-11

ব্যবসা বার্তা স্বাগতম!

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

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

একটি ভাল ডিজিটাল এজেন্ট কি করে?

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

আপনি কি নির্মাণ করবেন

এই কোডল্যাবে, আপনি Bonjour Meal নামে একটি কাল্পনিক কোম্পানির জন্য Business Messages-এ একটি ডিজিটাল এজেন্ট তৈরি করতে যাচ্ছেন। এই ডিজিটাল এজেন্ট কয়েকটি সহজ প্রশ্নের উত্তর দেবে যেমন "আপনি কখন বন্ধ করবেন?" অথবা "আমি কি অনলাইনে কিনতে পারি?"।

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

এই কোডল্যাবে, আপনার অ্যাপ হবে

  • একটি সাজেশন চিপের মাধ্যমে প্রশ্নের উত্তর দিন
  • আপনার ডিজিটাল এজেন্ট উত্তর দিতে পারে এমন প্রশ্ন জিজ্ঞাসা করতে ব্যবহারকারীকে গাইড করুন
  • ব্যবহারকারীকে কথোপকথনে নিযুক্ত রাখতে সমৃদ্ধ কথোপকথন বৈশিষ্ট্য প্রদান করুন

883b5a7f9f266276.png

আপনি কি শিখবেন

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

এই কোডল্যাবটি আপনার প্রথম ডিজিটাল এজেন্ট তৈরির উপর দৃষ্টি নিবদ্ধ করে।

আপনি কি প্রয়োজন হবে

  • একটি বিনামূল্যে ব্যবসায়িক যোগাযোগ বিকাশকারী অ্যাকাউন্টের জন্য নিবন্ধন করুন৷
  • কিভাবে নির্দেশাবলীর জন্য আমাদের ডেভেলপার সাইট দেখুন
  • 5 বা তার উপরে সংস্করণ সহ একটি Android ডিভাইস বা Google মানচিত্র অ্যাপ সহ একটি iOS ডিভাইস৷
  • ওয়েব অ্যাপ্লিকেশন প্রোগ্রামিং অভিজ্ঞতা
  • একটি ইন্টারনেট সংযোগ!

2. সেট আপ করা হচ্ছে

APIs সক্রিয় করুন

এই কোডল্যাবের জন্য, যেহেতু আমরা একটি জ্যাঙ্গো অ্যাপ্লিকেশনের সাথে কাজ করব, তাই অ্যাপ ইঞ্জিনে অ্যাপ্লিকেশনটি স্থাপন করতে আমরা ক্লাউড বিল্ড API-এর উপর নির্ভর করব। বিকল্পভাবে, আপনি যদি ngrok ব্যবহার করেন, তাহলে Cloud Build API সক্ষম করার প্রয়োজন নেই।

ক্লাউড বিল্ড API সক্ষম করতে:

  1. Google ক্লাউড কনসোলে ক্লাউড বিল্ড API খুলুন।
  2. সক্ষম করুন ক্লিক করুন।

একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন

বিজনেস কমিউনিকেশনস এবং বিজনেস মেসেজ এপিআই অ্যাক্সেস করার জন্য আপনাকে একটি সার্ভিস অ্যাকাউন্ট তৈরি করতে হবে। ব্যবসায়িক যোগাযোগ বিকাশকারী কনসোলের মধ্যে একটি পরিষেবা অ্যাকাউন্ট তৈরি করতে ডকুমেন্টেশনের ধাপগুলি অনুসরণ করুন৷

জ্যাঙ্গো পাইথন ইকোবট স্টার্টার কোড স্থাপন করুন

একটি টার্মিনালে, নিম্নলিখিত কমান্ডের সাহায্যে আপনার প্রকল্পের কার্যকারী ডিরেক্টরিতে জ্যাঙ্গো ইকো বট নমুনা ক্লোন করুন:

$ 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

একটি টার্মিনালে, নমুনার ধাপ-1 ডিরেক্টরিতে নেভিগেট করুন।

নমুনা স্থাপন করতে একটি টার্মিনালে নিম্নলিখিত কমান্ডগুলি চালান:

$ 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]

আপনি এইমাত্র যে স্টার্টার কোডটি স্থাপন করেছেন তাতে বিজনেস মেসেজ থেকে বার্তা পাওয়ার জন্য একটি ওয়েবহুক সহ একটি ওয়েব অ্যাপ্লিকেশন রয়েছে৷ অ্যাপ্লিকেশনটি ব্যবহারকারীর কাছে বার্তাগুলিকে প্রতিধ্বনিত করে এবং কথোপকথনের পৃষ্ঠে উপলব্ধ কিছু সমৃদ্ধ বৈশিষ্ট্যগুলি প্রদর্শন করতে পারে।

আপনার ওয়েববুক কনফিগার করুন

এখন যেহেতু আপনার পরিষেবা স্থাপন করা হয়েছে, আপনি ব্যবসায়িক যোগাযোগ বিকাশকারী কনসোলের অ্যাকাউন্ট সেটিংস পৃষ্ঠায় আপনার ওয়েবহুক URL সেট করতে অ্যাপ্লিকেশনটির URL ব্যবহার করবেন৷

ওয়েবহুক URL হবে অ্যাপ্লিকেশনের URL + "/callback/"। উদাহরণস্বরূপ, এটি এরকম কিছু হতে পারে: https://PROJECT_ID.appspot.com/callback/

বিজনেস কমিউনিকেশনস কনসোল অ্যাকাউন্ট সেটিংস পৃষ্ঠায় যান। নেভিগেশন বারের নীচে উপরের ডানদিকে, আপনি আপনার GCP প্রকল্পের নাম দেখতে পাবেন। আপনি যদি একটি ড্রপডাউন দেখতে পান, আপনার GCP প্রকল্প নির্বাচন করতে ভুলবেন না।

যোগাযোগের বিশদ বিবরণের প্রযুক্তিগত বিন্দুটি পূরণ করুন এবং তারপরে আপনার নিয়োজিত অ্যাপ্লিকেশনটির জন্য ওয়েবহুক URL সহ ওয়েবহুক আপডেট করুন৷

ceb66c905ded40be.png

আপনার GCP প্রকল্পের রেফারেন্সের পাশে সংরক্ষণ করুন ক্লিক করুন।

3. আপনার প্রথম এজেন্ট তৈরি করা

বিজনেস কমিউনিকেশন ডেভেলপার কনসোল ব্যবহার করা

বিজনেস কমিউনিকেশনস কনসোলে, কনসোল ড্যাশবোর্ডে ফিরিয়ে আনার জন্য উপরের বাম দিকের লোগোতে ক্লিক করুন, তারপর এজেন্ট তৈরি করুন এ ক্লিক করুন। আপনি আপনার এজেন্ট তৈরি করার সাথে সাথে আপনি একটি ব্র্যান্ড তৈরি করেন। এজেন্ট প্রকারের জন্য ব্যবসা বার্তা নির্বাচন করুন এবং নিশ্চিত করুন যে অংশীদারের তথ্য সঠিক।

ব্র্যান্ডে , আপনি যে ব্র্যান্ডটি তৈরি করছেন তার নাম লিখুন৷ ব্র্যান্ডটি হল সেই ব্যবসা যার সাথে আপনি কাজ করছেন এবং ভোক্তারা এজেন্টের সাথে কথোপকথন করতে পারে৷ এজেন্টের নামে , ব্যবসা বার্তা কথোপকথনে ব্যবহারকারীরা কী দেখতে চান তা নির্দিষ্ট করুন৷ কাল্পনিক বনজোর খাবারের ক্ষেত্রে, বনজোর রেল হল সেই রেল কোম্পানি যেটি বনজোর মিল রেস্তোরাঁগুলি পরিচালনা করে। তাই আমি ব্র্যান্ড হিসাবে Bonjour Rail এবং এজেন্ট হিসাবে Bonjour Meal উল্লেখ করব।

এজেন্ট হল কথোপকথনমূলক সত্তা যা ব্র্যান্ডের প্রতিনিধিত্ব করে।

88a9798e6546eb4e.png

এজেন্ট তৈরি করুন ক্লিক করুন এবং কনসোলকে কিছু জাদু করতে দিন। ব্র্যান্ড এবং এজেন্ট তৈরি করার জন্য বিজনেস কমিউনিকেশন এপিআই-কে বেশ কয়েকটি অনুরোধ করতে এই অনুরোধটি কয়েক সেকেন্ড সময় নেয়। আপনি একটি এজেন্ট তৈরি করতে এবং একটি ব্র্যান্ড তৈরি করতে সরাসরি বিজনেস কমিউনিকেশন API ব্যবহার করতে পারেন৷ কনসোল যা করছে একই জিনিসগুলি করতে কার্ল অনুরোধ কীভাবে দেখাবে তা দেখতে ডকুমেন্টেশনটি দেখুন।

আপনার প্রথম কথোপকথন হচ্ছে

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

f6bd8ded561db36f.png

আপনি যেকোন একটিতে ক্লিক করে পরীক্ষার URL কপি করতে পারেন। অবশ্যই, আপনার হাতে পরীক্ষা করার জন্য যে ডিভাইসটি রয়েছে তার জন্য পরীক্ষার URLটি অনুলিপি করুন। আপনি যেভাবে চান এই কপি করা বার্তাটি আপনার ডিভাইসে পাঠান।

একবার আপনার মোবাইল ডিভাইসে, লিঙ্কটি আলতো চাপলে আপনার এজেন্ট পরীক্ষার URL আগে থেকে তৈরি করা ব্যবসা বার্তা এজেন্ট লঞ্চারকে আহ্বান করে।

আপনার এজেন্টের কথোপকথন সারফেস আহ্বান করতে লঞ্চে ট্যাপ করুন।

2bf9f282e09062de.png

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

বিজনেস মেসেজে উপলব্ধ সমৃদ্ধ বৈশিষ্ট্যগুলি প্রদর্শন করার জন্য স্থাপন করা অ্যাপ্লিকেশনটিতে কিছু যুক্তিও রয়েছে৷

  • আপনি যদি "কার্ড" পাঠান, তাহলে আপনি একটি সমৃদ্ধ কার্ড ব্যবহার করবেন
  • আপনি যদি "চিপস" পাঠান, তাহলে আপনি পরামর্শ চিপস আহ্বান করবেন
  • আপনি যদি "ক্যারোজেল" পাঠান, তাহলে আপনি সমৃদ্ধ কার্ডের একটি ক্যারোজেল আহ্বান করবেন

অভিনন্দন! এটি আপনার এজেন্টের উদ্বোধনী কথোপকথন, আপনার সাথে!

আপনার এজেন্টের সাথে যোগাযোগকারী ব্যক্তিকে আরও ভাল প্রসঙ্গ প্রদান করতে প্রতিটি সমৃদ্ধ বৈশিষ্ট্য ব্যবহার করা যেতে পারে। ধারণাগুলি আরও ভালভাবে যোগাযোগ করতে রিচ কার্ডগুলিতে গ্রাফিকাল সম্পদগুলি পাঠান, বা কথোপকথন পরিচালনা করতে পরামর্শ চিপগুলি ব্যবহার করুন৷

স্বাগত বার্তা আপডেট করা এবং কথোপকথনের চিপ ব্যবহার করা

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

এজেন্ট ওভারভিউ পৃষ্ঠায় যান এবং এজেন্ট তথ্য নির্বাচন করুন। স্বাগত বার্তা এবং কথোপকথন শুরুর বিভাগে নীচে স্ক্রোল করুন।

4323f988216fa054.png

পড়ার জন্য স্বাগত বার্তা (হলুদ ইনপুট ক্ষেত্র) আপডেট করুন:

বনজোর মিল স্টার্টার এজেন্টে স্বাগতম। আমি আপনার বার্তাগুলিকে প্রতিধ্বনিত করতে পারি এবং আপনাকে প্ল্যাটফর্মে সমর্থিত কিছু সমৃদ্ধ বৈশিষ্ট্য দেখাতে পারি, এই পরামর্শগুলি ব্যবহার করে দেখুন!

পরামর্শ চিপ, ক্যারোজেল এবং কার্ডের জন্য কথোপকথন স্টার্টার যোগ করতে উপরের চিত্রের বেগুনি বাক্সে রেফারেন্স হিসাবে কথোপকথন স্টার্টার যোগ করুন ক্লিক করুন। আপনার যোগ করা কথোপকথন শুরুর জন্য একটি পাঠ্য উপাদান এবং একটি পোস্টব্যাকডেটা উপাদান প্রয়োজন৷ পাঠ্যটি ব্যবহারকারীর কাছে প্রদর্শিত হয় যখন পোস্টব্যাক ডেটা আপনার এজেন্টের ওয়েবহুকে পাঠানো হয়। ওয়েবহুক পোস্টব্যাক ডেটার জন্য পার্স করে এবং ব্যবহারকারীকে উপযুক্ত প্রতিক্রিয়া পাঠাবে। 906bc74668a1b215.png

কনসোলে এজেন্ট তথ্য পরিবর্তনের পরে এইরকম দেখায়:

8e96b0a10edd20af.png

কনসোলের ডান দিকে, আপনি এজেন্ট দেখতে কেমন হবে তার একটি পূর্বরূপ দেখতে পাবেন। লক্ষ্য করুন কিভাবে স্বাগত বার্তাটি প্রতিফলিত করে যা আপনি এইমাত্র এটিতে পরিবর্তন করেছেন এবং এটির নীচে থাকা পরামর্শ চিপগুলি?

ব্যবহারকারীর অভিজ্ঞতা কেমন হবে সে সম্পর্কে ধারণা পেতে এটি একটি দুর্দান্ত সরঞ্জাম। আপনি যখন আপনার এজেন্ট তৈরি করছেন এবং আপনি যে ব্যবহারকারীদের যাত্রা সমর্থন করতে চান তার পরিকল্পনা করার সময় আপনি এটি ব্যবহার করতে পারেন।

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

ইতিমধ্যে, আসুন হুডের নীচে সবকিছু কীভাবে কাজ করে তা দেখে নেওয়া যাক।

4. স্টার্টার কোড বিশ্লেষণ

সোর্স কোডের 10,000 ফুট ভিউ

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

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

উচ্চ স্তরে, জ্যাঙ্গো ইউআরএলগুলিকে ভিউতে রুট করবে এবং ভিউ লজিক একটি টেমপ্লেট তৈরি করে যা ব্রাউজারে রেন্ডার হয়। প্রজেক্টের urls.py দেখে নেওয়া যাক।

bm-django-echo-bot/bmcodelab/urls.py [লাইনস 31-37]

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/

উভয় ইউআরএল রুট 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 সম্বলিত একটি HTTP প্রতিক্রিয়া ফেরত দিই। তাই হ্যাঁ, আপনি প্রকৃতপক্ষে প্রকল্পের রুট ইউআরএল খুলতে পারেন, কিন্তু সেখানে সত্যিই অনেক কিছু করার নেই কারণ এটি আপনাকে এই কোডল্যাবে ফিরিয়ে আনে।

অন্য ইউআরএল 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.")
...

এখানে যুক্তিটি একটি বার্তা বা পরামর্শের প্রতিক্রিয়ার জন্য অনুরোধের অংশটিকে বিশ্লেষণ করে এবং সেই তথ্যটিকে route_message নামক একটি ফাংশনে পাস করে, তারপর বার্তার প্রাপ্তি স্বীকার করার জন্য একটি HttpResponse ব্যবসা বার্তা পরিকাঠামোতে ফেরত দেয়।

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

b10113f9d037e6a5.png

ব্যবসায়িক বার্তাগুলি আপনার ওয়েবহুকে একটি 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 নামক একটি ফাংশনে বার্তাটি প্রেরণ করে, যা আপনি কল্পনা করতে পারেন... বার্তাগুলি প্রতিধ্বনিত হবে।

বার্তা পাঠানো হচ্ছে

সুতরাং এখন পর্যন্ত, ওয়েব অ্যাপ্লিকেশন দ্বারা বার্তাগুলি কীভাবে গ্রহণ করা হয় সে সম্পর্কে আপনার ধারণা থাকা উচিত। এটা সব webhook দ্বারা সম্পন্ন করা হয়.

কিন্তু কিভাবে অ্যাপ্লিকেশন ব্যবসা বার্তা ব্যবহার করে একটি ব্যবহারকারীকে একটি বহির্গামী বার্তা পাঠায়?

a9475b1da93a83e8.png

যখন আপনার পরিকাঠামো ব্যবহারকারীকে সাড়া দেয়, তখন আপনি ব্যবসা বার্তা API-তে প্রতিক্রিয়া পাঠান, যা ব্যবহারকারীকে বার্তা পৌঁছে দেয়।

বিজনেস মেসেজ এপিআই-এর পাইথন, নোড.জেএস এবং জাভাতে লাইব্রেরি রয়েছে। আমাদের কাছে একটি REST APIও রয়েছে যা আপনি সরাসরি অনুরোধ করতে পারেন যদি আপনার পরিকাঠামো এমন কোনো ভাষায় না হয় যার জন্য আমাদের একটি লাইব্রেরি আছে। একটি নির্দিষ্ট কথোপকথন আইডিতে একটি বার্তা পাঠাতে কীভাবে সিআরএল ব্যবহার করা হয় তা দেখতে বার্তা পাঠানোর দিকে নজর দিন।

এই কোডল্যাবের উদ্দেশ্যে, আমরা পাইথন ক্লায়েন্ট লাইব্রেরি ব্যবহার করার উপর ফোকাস করব যা ইতিমধ্যেই Bonjour Meal স্টার্টার কোডের সাথে একত্রিত করা হয়েছে যা আপনার GCP প্রকল্পে অ্যাপ ইঞ্জিনে স্থাপন করা হয়েছে, অথবা ngrok-এর মাধ্যমে স্থানীয়ভাবে চলছে।

আসুন echo_message ফাংশনটি দেখি এবং দেখুন কিভাবে আমরা এপিআই-এর সাথে ব্যবসা বার্তায় বার্তা পাঠাতে পারি।

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)
...

এই ফাংশনে, একটি BusinessMessagesMessage echo_message ফাংশনে পাস করা বার্তা ভেরিয়েবলের সাথে তাত্ক্ষণিক করা হয়। একবার তাত্ক্ষণিকভাবে, বস্তুটি তারপর কথোপকথন আইডি সহ 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)
...

আপনি যে কথোপকথনে বার্তা পাঠাতে পারেন, একটি বিজনেস মেসেজ ক্লায়েন্টকে ইনস্ট্যান্ট করা এবং প্রদত্ত conversation ID বার্তা পাঠানোর অনুরোধ তৈরি করতে পারেন তা যাচাই করতে আপনার পরিষেবা অ্যাকাউন্টের শংসাপত্রগুলি ব্যবহার করে সমস্ত send_message ফাংশন করছে।

সমৃদ্ধ বৈশিষ্ট্যগুলি এই send_message ফাংশনটিকেও ব্যবহার করে, তবে তারা যে বার্তাগুলি তৈরি করে তা রিচ কার্ড, ক্যারোজেল এবং পরামর্শ চিপগুলির জন্য নির্দিষ্ট৷ রিচ কার্ড এবং ক্যারোসেলগুলিতে গ্রাফিকাল সম্পদ অন্তর্ভুক্ত থাকতে পারে যখন পরামর্শ চিপগুলিতে postback_data থাকে যাতে কলব্যাক লজিক এটিকে যথাযথভাবে পার্স করতে পারে।

এখন যেহেতু আমরা দেখেছি কীভাবে একটি বার্তা পাঠাতে হয়, নমুনাটি কীভাবে সমৃদ্ধ কার্ড, ক্যারোসেল এবং পরামর্শ চিপ পাঠায় তা তদন্ত করুন৷ নিম্নলিখিত বিভাগে আমরা এই সমৃদ্ধ বৈশিষ্ট্যগুলির কিছু সহ বার্তা পাঠাতে উত্স কোডটি সংশোধন করব৷

আপনি প্রস্তুত হলে, আসুন বনজোর মিল এজেন্টকে কাস্টমাইজ করি।

5. আপনার এজেন্ট কাস্টমাইজ করা

আপনি যদি এখন পর্যন্ত কোডল্যাব অনুসরণ করে থাকেন, তাহলে আমাদের সুন্দর এজেন্টকে দেখতে হবে।

906bc74668a1b215.png

ঠিক আছে এত সুন্দর নয়, এটি আসলে কিছুটা খালি দেখাচ্ছে এবং সত্যিই আমাদের ব্যবসাকে খুব ভালভাবে উপস্থাপন করে না। সৌভাগ্যবশত, আমাদের কাছে এজেন্টকে সমর্থনকারী কোডের একটি মৌলিক জ্ঞান রয়েছে এবং আমাদের এজেন্টকে যে কোনো উপায়ে কাস্টমাইজ করার জন্য আমাদের প্রয়োজনীয় সরঞ্জাম রয়েছে।

এই কোডল্যাবের বাকি অংশে, আমরা এজেন্টকে নিম্নলিখিতগুলির সাথে প্রসারিত করব:

  • একটি প্রকৃত লোগো অন্তর্ভুক্ত করুন
  • উন্নত স্বাগত বার্তা
  • ব্যবসার সময় সম্পর্কে তথ্য প্রদান করুন
  • ব্যবহারকারীকে জানাতে দিন যে অনলাইন আইটেম কেনা শীঘ্রই আসছে
  • কথোপকথন সহজতর করার জন্য কথোপকথন পরামর্শ চিপ ব্যবহার

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

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

eb6b8ac6b62387ee.png

আপলোড এ ক্লিক করুন, এবং আপনি একটি URL থেকে আপলোড বা আমদানি করতে একটি ছবি নির্বাচন করতে সক্ষম হবেন৷

আপনার নিজের লোগো ব্যবহার করার জন্য আমরা সুপারিশ করি এমন সেরা অনুশীলনগুলি সম্পর্কে জানতে ডকুমেন্টেশনে লোগো ডিজাইনের নির্দেশিকাগুলি দেখুন৷

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

1856081f59623ae2.png

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

স্বাগত বার্তা আপডেট করুন

স্বাগত বার্তা আপডেট করা এমন কিছু যা আমরা ইতিমধ্যে এই কোডল্যাবে আগে করেছি। আবার তা করা যাক, কিন্তু এইবার একটি স্বাগত বার্তা কনফিগার করুন যা বনজোর মিল ব্যবহারকারীর যাত্রায় আরও প্রযোজ্য।

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

6598fec47021136e.png

আমরা কথোপকথন স্টার্টার যোগ করব জেনে, আমরা আমাদের স্বাগত বার্তায় তাদের উল্লেখ করতে পারি। ইনপুট ক্ষেত্রে, আসুন এটিকে নিম্নলিখিত পাঠ্য দিয়ে প্রতিস্থাপন করি:

"বনজোর মেলে স্বাগতম। আমি একজন সহকারী যে বনজোর খাবার সম্পর্কে আপনার প্রশ্নগুলির বিষয়ে আপনাকে সাহায্য করতে পারে। নিম্নলিখিত বিকল্পগুলির মধ্যে কয়েকটি ব্যবহার করে দেখুন।"

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

ব্যবসার সময় সম্পর্কে তথ্য প্রদান

ব্যবহারকারীদের এই তথ্য প্রদান করতে, আমরা ব্যবসা বার্তা API ব্যবহার করে ব্যবহারকারীকে একটি কাস্টম বার্তা পাঠাব।

আপনি মনে করতে পারেন যে বার্তাগুলি views.py এর route_message ফাংশনে পার্স করা হয়েছে। ফাংশনটি প্রথমে স্ট্রিংটিকে স্বাভাবিক করে তোলে এবং তারপর স্বাভাবিক বার্তাটি হার্ড কোডেড প্যারামিটারগুলির সাথে মেলে কিনা তা পরীক্ষা করা শুরু করে। সরলতার জন্য, আসুন একটি অতিরিক্ত শর্ত যোগ করি যেখানে আমরা পরীক্ষা করি যে স্বাভাবিক বার্তাটি একটি নতুন ধ্রুবকের সমান কিনা যাকে আমরা CMD_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 সংজ্ঞায়িত করতে। উপযুক্ত পাইথন সিনট্যাক্স অনুসরণ করে আপনি ফাইলের যেকোনো জায়গায় এই ফাংশনটি সংজ্ঞায়িত করতে পারেন। যেহেতু এই ফাংশনটি সহজভাবে একটি বার্তা পাঠাচ্ছে, অনেকটা 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)
...

এর সাথে, আমাদের বট ব্যবহারকারীর কাছে এই ব্যবসার সময়গুলির সাথে প্রতিক্রিয়া জানাতে সক্ষম হবে যখন তারা নিম্নলিখিত বার্তা পাঠাবে: "ব্যবসা-ঘন্টা-তদন্ত"। আপনি এই মত কিছু আশা করতে পারেন:

125802166995afd5.png

একবার আপনি GCP-এ সোর্স কোড স্থাপন করলে, পরিবর্তনগুলি অবিলম্বে দৃশ্যমান হবে। আমরা Google ক্লাউড প্ল্যাটফর্মে ওয়েব অ্যাপ্লিকেশনটিকে সেইভাবে ক্যাশে করি না যেভাবে এজেন্টের তথ্য ক্যাশে করা হয়, তাই আপনি এখনই এই অভিজ্ঞতাটি পরীক্ষা করতে সক্ষম হবেন।

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

ব্যবহারকারীকে জানিয়ে দেওয়া হচ্ছে যে অনলাইনে কেনাকাটা শীঘ্রই আসছে

ব্যবহারকারীকে ব্যবসার সময় সম্পর্কে অবহিত করার জন্য আমরা একই ধরনের পরিবর্তন করব। এইবার, একটি আকর্ষক ইমেজ সহ তথ্যগুলিকে একটি সমৃদ্ধ কার্ডে রাখি৷

স্বাভাবিক করা বার্তা পার্স করুন এবং CMD_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_online_shopping_info_message সংজ্ঞায়িত করতে একটি টেমপ্লেট হিসাবে ব্যবহার করার জন্য send_rich_card ফাংশনটি অনুলিপি করি।

একটি উপযুক্ত বার্তা পেতে প্রথমে আমাদের ফলব্যাক পাঠ্য আপডেট করা উচিত। কোনো কারণে ডিভাইসটি রিচ কার্ড না পেলে ফলব্যাক টেক্সট ব্যবহার করা হয়। এর পরে, একটি প্রাসঙ্গিক শিরোনাম, বিবরণ, পরামর্শ এবং একটি মিডিয়া ক্ষেত্র অন্তর্ভুক্ত করতে আমাদের 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)
...

উহু! আমাদের ডিজিটাল এজেন্ট এখন অনলাইন শপিং সম্পর্কে অনুসন্ধানকারী ব্যবহারকারীদের প্রতিক্রিয়া জানাতে পারে। আপাতত, আমাদের ডিজিটাল এজেন্ট এখনও অনলাইন কেনাকাটা সমর্থন করে না, তাই আমরা ব্যবহারকারীদের জানিয়ে একটি বার্তা দিই যে বৈশিষ্ট্যটি শীঘ্রই আসছে। যখন ব্যবহারকারী অনলাইনে কেনাকাটা সম্পর্কে জিজ্ঞাসা করে তখন আমাদের ডিজিটাল এজেন্ট এই রকম দেখায়।

5cd63c57c1b84f9a.png

একজন ব্যবহারকারীকে ব্যবসার সময় সম্পর্কে জিজ্ঞাসা করার অনুমতি দেওয়ার জন্য আমরা পূর্বের পরিবর্তনের মতোই, আপনি যদি ngrok ব্যবহার করেন বা আপনি GCP অ্যাপ ইঞ্জিনে কোডটি স্থাপন করার সাথে সাথে এই পরিবর্তনটি অবিলম্বে দেখা যাবে।

পরবর্তী অংশে, আমরা কথোপকথন শুরু এবং পরামর্শ চিপ ব্যবহার করব কথোপকথনকে সুখী পথের দিকে নিয়ে যেতে।

কথোপকথন গাইড করতে চিপ ব্যবহার করে

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

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

আমরা দুটি নতুন কথোপকথন স্টার্টার তৈরি করব। প্রথমটির জন্য, পাঠ্যটি "আপনার ব্যবসার সময় কত?" এবং পোস্টব্যাক ডেটা "ব্যবসা-ঘন্টা-তদন্ত"-এ সেট করুন। দ্বিতীয় কথোপকথন শুরুর জন্য, পাঠ্যটি "আমি কি এখানে কেনাকাটা করতে পারি?" এবং পোস্টব্যাক ডেটা "অনলাইন-শপিং-তথ্য" এ সেট করুন।

ফলাফলটি নিম্নলিখিত স্ক্রিনশট হিসাবে কনফিগারেশন হওয়া উচিত:

ef6e6888acea93e3.png

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

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

ফাংশন শেষে, নিম্নলিখিত যোগ করুন:

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টি অক্ষরের মধ্যে সীমাবদ্ধ, যেমনটি ডকুমেন্টেশনে বর্ণনা করা হয়েছে।

আপডেট করা কথোপকথন শুরু এবং পরামর্শ চিপগুলির কৌশলগত ব্যবহারের সাথে, এখানে প্রত্যাশিত ব্যবহারকারীর অভিজ্ঞতার কিছু স্ক্রিনশট রয়েছে৷

ef57695e2bacdd20.png

6. অভিনন্দন

অভিনন্দন, আপনি সফলভাবে আপনার প্রথম ব্যবসায়িক বার্তা ডিজিটাল এজেন্ট তৈরি করেছেন!

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

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

এটি সম্ভবত কেমন হতে পারে তার একটি টিজার।

57d2bb7b0ec38c81.png

আমি কিভাবে একটি মহান কথোপকথন অভিজ্ঞতা তৈরি করতে পারি?

সর্বোত্তম এজেন্টরা ব্যবহারকারীকে কথোপকথনের মাধ্যমে কার্যকারিতা দেওয়ার সময় প্রাসঙ্গিক তথ্য সরবরাহ করে যাতে তারা নিযুক্ত হতে পারে এবং ব্যবসার সাথে যোগাযোগ করতে পারে যেমন তারা সাধারণত ফোনে বা এমনকি ব্যক্তিগতভাবে করে। আপনি যে ব্যবসার সাথে কাজ করেন তার সাথে আপনি যে কথোপকথন করতে চান তার জন্য নিম্নলিখিত বিষয়গুলি কীভাবে প্রযোজ্য হতে পারে সে সম্পর্কে চিন্তা করুন৷

প্রসঙ্গ প্রদান করুন এবং প্রত্যাশা সেট করুন

প্রসঙ্গ প্রদান করা স্পষ্টভাবে বলা থেকে যেকোন কিছু হতে পারে আপনি কীভাবে ব্যবহারকারীকে এমন ব্যক্তিত্বের সাথে ডিজিটাল এজেন্টের পরিচয় দিতে সাহায্য করতে পারেন যা ব্যবহারকারীর সাথে সম্পর্কিত হতে পারে। ব্যবসায়িক বার্তাগুলিতে সফল এজেন্টরা প্রতিনিধিত্বমূলক অবতার ব্যবহার করে ব্যবহারকারীকে তারা কার সাথে কথা বলছে তা দেখানোর জন্য।

প্রত্যাশা সেট করা ব্যবহারকারীর অভিজ্ঞতার উপর নির্ভর করে যা আপনি তৈরি করছেন। উদাহরণস্বরূপ, যদি আপনার এজেন্ট ইনভেন্টরি লুকআপ সমর্থন করে, তাহলে প্রথমে ব্যবহারকারীকে জানান যে উত্তর দেওয়ার আগে উপলব্ধতা কম হতে পারে।

ব্যবহারকারীকে কার্যকারিতা প্রদান করুন

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

ব্যবহারকারীকে নিযুক্ত রাখুন

ব্যবহারকারীকে কথোপকথনে নিযুক্ত রাখতে কথোপকথনমূলক স্পর্শ পয়েন্ট প্রদান করুন। বার্তাগুলির মধ্যে, আপনি ব্যবহারকারীকে জানাতে টাইপিং সূচকগুলি আহ্বান করতে পারেন যে আপনি ব্যবহারকারীর জন্য একটি উত্তর প্রক্রিয়া করছেন৷

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

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

এরপর কি?

আপনি প্রস্তুত হলে, ব্যবসা বার্তাগুলিতে আপনি অর্জন করতে পারেন এমন আরও জটিল মিথস্ক্রিয়া সম্পর্কে জানতে নিম্নলিখিত বিষয়গুলির মধ্যে কয়েকটি দেখুন

রেফারেন্স ডক্স