Google অ্যাসিস্ট্যান্টের জন্য আপনার অ্যাকশনের মাধ্যমে ব্যবহারকারীদের যুক্ত করুন

১. সংক্ষিপ্ত বিবরণ

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

এটি একটি অ্যাডভান্সড কোডল্যাব মডিউল, যা সেইসব পাঠকদের জন্য তৈরি করা হয়েছে যাদের গুগল অ্যাসিস্ট্যান্টের জন্য অ্যাকশন তৈরিতে আগে থেকেই কিছু অভিজ্ঞতা আছে। যদি আপনার গুগল অ্যাকশন নিয়ে কোনো পূর্ব অভিজ্ঞতা না থাকে, তবে আমরা আপনাকে আমাদের প্রাথমিক কোডল্যাবগুলো ( লেভেল ১ , লেভেল ২ , এবং লেভেল ৩ ) অনুসরণ করে প্ল্যাটফর্মটির সাথে পরিচিত হওয়ার জন্য দৃঢ়ভাবে পরামর্শ দিচ্ছি। এই অ্যাডভান্সড মডিউলগুলো আপনাকে এমন কিছু ফিচারের মাধ্যমে পথ দেখাবে যা আপনার অ্যাকশনের কার্যকারিতা বাড়াতে এবং আপনার দর্শক সংখ্যা বৃদ্ধি করতে সাহায্য করবে।

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

এই কোডল্যাবে ‘অ্যাকশনস অন গুগল’-এর জন্য ব্যবহারকারী সম্পৃক্ততার বৈশিষ্ট্য এবং সর্বোত্তম অনুশীলনগুলো আলোচনা করা হয়েছে।

a3fc0061bd01a75.png961ef6e27dc73da2.png

আপনি যা তৈরি করবেন

আপনি ইতিমধ্যে নির্মিত একটি বৈশিষ্ট্যকে সক্ষম করার মাধ্যমে সেটিকে আরও উন্নত করবেন:

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

আপনি যা শিখবেন

  • ব্যবহারকারীর সম্পৃক্ততা কী এবং কোনো কার্যক্রমের সফলতার জন্য এটি কেন গুরুত্বপূর্ণ
  • ব্যবহারকারীর সম্পৃক্ততা বাড়াতে একটি অ্যাকশন কীভাবে পরিবর্তন করবেন
  • বিভিন্ন ধরণের অ্যাকশনে কোন ইউজার এনগেজমেন্ট ফিচারগুলো ব্যবহার করতে হবে
  • অ্যাসিস্ট্যান্টের মাধ্যমে নোটিফিকেশন পাঠাতে অ্যাকশনস এপিআই কীভাবে ব্যবহার করবেন

আপনার যা যা লাগবে

আপনার নিম্নলিখিত সরঞ্জামগুলো অবশ্যই থাকতে হবে:

  • আপনার পছন্দের একটি IDE/টেক্সট এডিটর, যেমন WebStorm , Atom , বা Sublime
  • শেল কমান্ড চালানোর জন্য একটি টার্মিনাল, যেখানে Node.js, npm, এবং git ইনস্টল করা আছে।
  • একটি ওয়েব ব্রাউজার, যেমন গুগল ক্রোম
  • ফায়ারবেস কমান্ড-লাইন ইন্টারফেস সহ একটি স্থানীয় উন্নয়ন পরিবেশ
  • অ্যাসিস্ট্যান্ট সহ একটি মোবাইল ডিভাইস (অ্যান্ড্রয়েড বা আইওএস) (এই প্রজেক্টটি তৈরি করতে আপনি যে গুগল অ্যাকাউন্টটি ব্যবহার করবেন, সেই একই অ্যাকাউন্ট দিয়ে আপনাকে অ্যাসিস্ট্যান্ট-এ সাইন-ইন করতে হবে।)

ওয়েবহুক কোড বোঝার জন্য জাভাস্ক্রিপ্ট (ES6) সম্পর্কে ধারণা থাকা আবশ্যক না হলেও, তা বিশেষভাবে কাম্য।

২. আপনার প্রজেক্টটি সেট আপ করুন।

এই বিভাগে দেখানো হয়েছে, কীভাবে আগে থেকে তৈরি করা একটি সম্পূর্ণ অ্যাকশনে ব্যবহারকারীর সম্পৃক্ততার বৈশিষ্ট্য যোগ করতে হয়।

নমুনাটি বুঝুন

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

নিম্নলিখিত ডায়াগ্রামটি অ্যাকশন জিম স্যাম্পলটির কথোপকথনের প্রবাহ দেখায়:

e2d6e4ad98948cf3.png

আপনার যোগ করা এনগেজমেন্ট ফিচারগুলোর সাথে আরও ভালোভাবে মানিয়ে নেওয়ার জন্য আপনি সংলাপে সামান্য কিছু পরিবর্তন আনবেন। তবে, কথোপকথনের সাধারণ কাঠামোতে খুব বেশি পরিবর্তন আসবে না।

আপনার বেস ফাইলগুলি ডাউনলোড করুন

কোডল্যাবের জন্য গিটহাব রিপোজিটরি ক্লোন করতে নিম্নলিখিত কমান্ডটি চালান:

git clone https://github.com/actions-on-google/user-engagement-codelab-nodejs

আপনার প্রজেক্ট এবং এজেন্ট সেট আপ করুন

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

  1. অ্যাকশন কনসোলটি খুলুন।
  2. নতুন প্রজেক্ট-এ ক্লিক করুন।
  3. একটি প্রজেক্টের নাম টাইপ করুন, যেমন engagement-codelab
  4. প্রজেক্ট তৈরি করুন -এ ক্লিক করুন।
  5. ক্যাটাগরি বাছাই করার পরিবর্তে, নিচে স্ক্রল করে ‘More options’ সেকশনে যান এবং ‘Conversational’ কার্ডটিতে ক্লিক করুন।
  6. বিকল্পগুলি প্রসারিত করতে 'Build your Action'-এ ক্লিক করুন এবং 'Add Action(s)' নির্বাচন করুন।
  7. আপনার প্রথম পদক্ষেপ যোগ করুন -এ ক্লিক করুন।
  8. Create Action ডায়ালগে, Custom Intent নির্বাচন করুন, এবং তারপর Dialogflow কনসোল চালু করতে Build-এ ক্লিক করুন।
  9. Dialogflow কনসোলের এজেন্ট তৈরির পেজে, Create-এ ক্লিক করুন।
  10. ক্লিক করুন 6bf56243a8a11a3b.png বাম দিকের নেভিগেশনে (গিয়ার আইকন)।
  11. এক্সপোর্ট ও ইম্পোর্ট-এ ক্লিক করুন, তারপর রিস্টোর ফ্রম জিপ-এ ক্লিক করুন
  12. পূর্বে ডাউনলোড করা /user-engagement-codelab-nodejs/start/ ডিরেক্টরি থেকে agent.zip ফাইলটি আপলোড করুন।
  13. RESTORE টাইপ করুন এবং Restore-এ ক্লিক করুন।
  14. সম্পন্ন ক্লিক করুন।

আপনার পরিপূর্ণতা স্থাপন করুন

এখন যেহেতু আপনার অ্যাকশনস প্রজেক্ট এবং ডায়ালগফ্লো এজেন্ট প্রস্তুত, ফায়ারবেস ফাংশনস সিএলআই ব্যবহার করে আপনার লোকাল index.js ফাইলটি ডিপ্লয় করুন।

আপনার বেস ফাইল ক্লোনের /user-engagement-codelab-nodejs/start/functions/ ডিরেক্টরি থেকে, নিম্নলিখিত কমান্ডগুলি চালান:

firebase use <PROJECT_ID>
npm install
firebase deploy

কয়েক মিনিট পর, আপনি " Deploy complete! " দেখতে পাবেন, যা নির্দেশ করে যে আপনি সফলভাবে আপনার ওয়েবহুকটি ফায়ারবেসে ডেপ্লয় করেছেন।

ডিপ্লয়মেন্ট ইউআরএলটি পুনরুদ্ধার করুন

আপনাকে Dialogflow-কে ক্লাউড ফাংশনের URL প্রদান করতে হবে। এই URL-টি পাওয়ার জন্য, নিচের ধাপগুলো অনুসরণ করুন:

  1. ফায়ারবেস কনসোল খুলুন।
  2. বিকল্পগুলির তালিকা থেকে আপনার অ্যাকশন প্রজেক্টটি নির্বাচন করুন।
  3. বাম দিকের নেভিগেশন বারে Develop > Functions- এ যান। যদি আপনাকে "Choose data sharing settings" করতে বলা হয়, তাহলে আপনি Do this later-এ ক্লিক করে এই অপশনটি উপেক্ষা করতে পারেন।
  4. ড্যাশবোর্ড ট্যাবের অধীনে, আপনি 'fulfillment' নামে একটি এন্ট্রি দেখতে পাবেন, যার ট্রিগার অংশে একটি URL দেওয়া আছে। এই URL-টি সংরক্ষণ করুন; পরবর্তী অংশে আপনাকে এটি Dialogflow-তে কপি করতে হবে।

1741a329947975db.png

Dialogflow-তে ওয়েবহুক URL সেট করুন

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

  1. Dialogflow কনসোলটি খুলুন (আপনি চাইলে Firebase কনসোলটি বন্ধ করতে পারেন)।
  2. বাম দিকের নেভিগেশনে 'Fulfillment'- এ ক্লিক করুন।
  3. ওয়েবহুক সক্রিয় করুন।
  4. ফায়ারবেস ড্যাশবোর্ড থেকে কপি করা URL-টি পেস্ট করুন, যদি সেটি আগে থেকে দেখা না যায়।
  5. সংরক্ষণ করুন- এ ক্লিক করুন।

আপনার প্রজেক্টটি সঠিকভাবে সেট আপ করা হয়েছে কিনা তা যাচাই করুন।

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

অ্যাকশন সিমুলেটরে আপনার অ্যাকশনটি পরীক্ষা করে দেখতে:

  1. Dialogflow কনসোলের বাম দিকের নেভিগেশনে, Integrations > Google Assistant- এ ক্লিক করুন।
  2. নিশ্চিত করুন যে ‘পরিবর্তনগুলির স্বয়ংক্রিয় পূর্বরূপ’ (Auto-preview changes) সক্রিয় করা আছে এবং আপনার ‘অ্যাকশনস’ (Actions) প্রজেক্ট আপডেট করতে ‘টেস্ট’ (Test) বোতামে ক্লিক করুন।
  3. অ্যাকশন সিমুলেটর আপনার অ্যাকশন প্রজেক্টটি লোড করে। আপনার অ্যাকশন পরীক্ষা করার জন্য, ইনপুট ফিল্ডে Talk to my test app টাইপ করে এন্টার চাপুন।
  4. আপনি অ্যাকশন জিমে আপনাকে স্বাগত জানিয়ে একটি বার্তা দেখতে পাবেন। কথোপকথন চালিয়ে যাওয়ার জন্য নির্দেশাবলী অনুসরণ করার চেষ্টা করুন এবং নিশ্চিত করুন যে আপনার প্রতিটি ইনপুটের জন্য একটি প্রতিক্রিয়া রয়েছে।

60acf1ff87b1a87f.png

৩. দৈনিক আপডেট সাবস্ক্রিপশন যোগ করুন

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

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

f48891c8118f7436.png

এটি ব্যবহারকারীদের কীভাবে সম্পৃক্ত করবে?

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

দৈনিক আপডেট একটি কার্যকর এনগেজমেন্ট টুল হতে পারে, কিন্তু এটি প্রতিটি অ্যাকশনে অন্তর্ভুক্ত করা আবশ্যক নয়। কোনো অ্যাকশনে দৈনিক আপডেট সাবস্ক্রিপশন যোগ করার সিদ্ধান্ত নেওয়ার সময় এই পরামর্শগুলো বিবেচনা করুন:

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

দৈনিক আপডেট চালু করুন

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

ক্লাস লিস্ট ইন্টেন্টের জন্য দৈনিক আপডেট চালু করতে এই ধাপগুলো অনুসরণ করুন:

  1. অ্যাকশন কনসোলে, ডেভেলপ ট্যাবে ক্লিক করুন এবং বাম দিকের নেভিগেশন বার থেকে অ্যাকশনস (Actions) নির্বাচন করুন।
  2. অ্যাকশন তালিকার অধীনে ক্লাস তালিকায় ক্লিক করুন।
  3. ব্যবহারকারীর সম্পৃক্ততা বিভাগের অধীনে, ‘আপনি কি ব্যবহারকারীদের দৈনিক আপডেট দিতে চান’ বিকল্পটি টগল করুন।
  4. একটি বর্ণনামূলক কন্টেন্ট টাইটেল সেট করুন যা দৈনিক আপডেটটি বর্ণনা করে। প্রসঙ্গটি হবে "আপনি আপনার দৈনিক <কন্টেন্ট টাইটেল> কোন সময়ে পেতে চান", তাই নিশ্চিত করুন যে আপনার টাইটেলটি বর্ণনামূলক এবং মুখে বললে সঠিক শোনায়। এই উদাহরণের জন্য, কন্টেন্ট টাইটেলটি ' list of upcoming Action Gym classes হিসেবে সেট করুন।
  5. পৃষ্ঠার শীর্ষে থাকা সেভ বাটনে ক্লিক করুন।

c00885cc30e14d68.png

ডায়ালগফ্লো সেট আপ করুন

দৈনিক আপডেট সাবস্ক্রিপশন ফ্লো-এর জন্য ইন্টেন্ট তৈরি করতে Dialogflow কনসোলে এই ধাপগুলো অনুসরণ করুন:

ব্যবহারকারীকে সাবস্ক্রাইব করতে অনুরোধ করুন

  1. ব্যবহারকারীর দৈনিক আপডেটের জন্য সাবস্ক্রাইব করার অনুরোধটি পরিচালনা করতে একটি নতুন ইন্টেন্ট সেট আপ করুন। Dialogflow কনসোলে, একটি নতুন ইন্টেন্ট তৈরি করতে বাম দিকের নেভিগেশনে Intents-এর পাশে থাকা + বোতামটিতে ক্লিক করুন।
  2. এই নতুন ইন্টেন্টটির নাম দিন Setup Updates
  3. 'প্রশিক্ষণ বাক্যাংশ' বিভাগের অধীনে, নিম্নলিখিত ব্যবহারকারী অভিব্যক্তিগুলি যোগ করুন:
  • Send daily reminders
  • Reminder
  • Remind me
  • Updates
  • Upcoming classes
  1. Fulfillment সেকশনের অধীনে, এই ইন্টেন্টের জন্য ওয়েবহুক কল সক্ষম করুন (Enable webhook call for this intent) অপশনটি টগল করুন।
  2. পৃষ্ঠার শীর্ষে থাকা সেভ বাটনে ক্লিক করুন।

5c70faa02151da0.png

ব্যবহারকারীর সিদ্ধান্ত পরিচালনা করুন

  1. দৈনিক আপডেট সাবস্ক্রিপশন প্রম্পটে ব্যবহারকারীর প্রতিক্রিয়া পরিচালনা করার জন্য একটি নতুন ইন্টেন্ট সেট আপ করুন। নতুন ইন্টেন্ট তৈরি করতে বাম দিকের নেভিগেশনে ইন্টেন্টস- এর পাশে থাকা + বোতামে ক্লিক করুন।
  2. এই নতুন ইন্টেন্টটির নাম দিন Confirm Updates ’।
  3. ইভেন্টস সেকশনের অধীনে, actions_intent_REGISTER_UPDATE যোগ করুন। এই ডায়ালগফ্লো ইভেন্টটি ব্যবহারকারী দৈনিক আপডেট সাবস্ক্রিপশন ফ্লো শেষ করার মাধ্যমে ট্রিগার হবে, তিনি শেষ পর্যন্ত সাবস্ক্রাইব করুন বা না করুন।
  4. Fulfillment সেকশনের অধীনে, এই ইন্টেন্টের জন্য ওয়েবহুক কল সক্ষম করুন (Enable webhook call for this intent) অপশনটি টগল করুন।
  5. পৃষ্ঠার শীর্ষে থাকা সেভ বাটনে ক্লিক করুন।

b871c2bdadac8abc.png

পরিপূর্ণতা বাস্তবায়ন করুন

আপনার ওয়েবহুকে ফুলফিলমেন্ট বাস্তবায়ন করতে, নিম্নলিখিত ধাপগুলি সম্পন্ন করুন:

নির্ভরতা লোড করুন

b2f84ff91b0e1396.png index.js ফাইলে, actions-on-google প্যাকেজ থেকে ` RegisterUpdate প্যাকেজটি যোগ করার জন্য ` require() ফাংশনটি আপডেট করুন, যাতে আপনার ইম্পোর্টগুলো দেখতে এইরকম হয়:

index.js

const {
  dialogflow,
  Suggestions,
  RegisterUpdate,
} = require('actions-on-google');

পরামর্শ চিপস আপডেট করুন

b2f84ff91b0e1396.png index.js ফাইলে, সাজেশন চিপ টাইটেলের তালিকায় একটি DAILY এন্ট্রি যোগ করুন, যাতে আপনার Suggestion ডেফিনিশনটি দেখতে এইরকম হয়:

index.js

// Suggestion chip titles
const Suggestion = {
  HOURS: 'Ask about hours',
  CLASSES: 'Learn about classes',
  DAILY: 'Send daily reminders',
};

নতুন অভিপ্রায়গুলির জন্য পরিপূর্ণতা যোগ করুন

যখন ব্যবহারকারী সাবস্ক্রাইব করতে চান, তখন আপডেটের টার্গেট ইন্টেন্ট ( ক্লাস লিস্ট ) এবং টাইপ ( DAILY ) সহ RegisterUpdate হেল্পারটি কল করে দৈনিক আপডেট সাবস্ক্রিপশন ফ্লো শুরু করুন। সাবস্ক্রিপশন ফ্লো শেষ হয়ে গেলে, অ্যাসিস্ট্যান্ট actions_intent_REGISTER_UPDATE ইভেন্টটি ট্রিগার করে, যেখানে একটি status আর্গুমেন্ট থাকে যা বর্ণনা করে সাবস্ক্রিপশনটি সফল হয়েছে কি না। সাবস্ক্রিপশনের স্ট্যাটাসের উপর নির্ভর করে ব্যবহারকারীকে ফলো-আপ প্রম্পট অফার করুন, যা পরিবর্তিত হবে।

b2f84ff91b0e1396.png index.js ফাইলে নিম্নলিখিত কোডটি যোগ করুন:

index.js

// Start opt-in flow for daily updates
app.intent('Setup Updates', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'Class List',
    frequency: 'DAILY',
  }));
});

// Confirm outcome of opt-in for daily updates
app.intent('Confirm Updates', (conv, params, registered) => {
  if (registered && registered.status === 'OK') {
     conv.ask(`Gotcha, I'll send you an update everyday with the ` +
     'list of classes. Can I help you with anything else?');
  } else {
    conv.ask(` I won't send you daily reminders. Can I help you with anything else?`);
  }
  if (conv.screen) {
    conv.ask(new Suggestions([Suggestion.HOURS, Suggestion.CLASSES]));
  }
});

ব্যবহারকারীকে বিকল্প প্রম্পট অফার করুন

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

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

b2f84ff91b0e1396.png index.js ফাইলে, নিম্নলিখিত কোডটি প্রতিস্থাপন করুন:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  const classesMessage =
  `On ${day} we offer the following classes: ${classes}. ` +
  `Can I help you with anything else?`;
  conv.ask(classesMessage);
  if (conv.screen) {
    conv.ask(new Suggestions([Suggestion.HOURS]));
  }
});

এর সাথে:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
  // If the user started the conversation from the context of a daily update,
  // the conv's arguments will contain an 'UPDATES' section.
  let engagement = conv.arguments.get('UPDATES');
  // Check the conv arguments to tailor the conversation based on the context.
  if (engagement) {
    classesMessage += `Hope to see you soon at Action Gym!`;
    conv.close(classesMessage);
  } else {
    classesMessage += `Would you like me to send you daily reminders of upcoming classes, or can I help you with anything else?`;
    conv.ask(classesMessage);
    if (conv.screen) {
      conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.HOURS]));
    };
  };
});

আপনার দৈনিক আপডেটগুলি পরীক্ষা করুন

আপনার আপডেট করা ওয়েবহুক কোড ফায়ারবেসে ডিপ্লয় করতে টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:

firebase deploy

অ্যাকশন সিমুলেটরে আপনার কাস্টম রিপ্রম্পট পরীক্ষা করার জন্য, এই ধাপগুলো অনুসরণ করুন:

  1. অ্যাকশন কনসোলে, Test- এ যান।
  2. ইনপুট ফিল্ডে Talk to my test app টাইপ করুন এবং এন্টার চাপুন।
  3. Learn about classes টাইপ করে এন্টার চাপুন। আপনার অ্যাকশনের প্রতিক্রিয়া হিসেবে এখন দৈনিক রিমাইন্ডার পাঠানোর প্রস্তাব দেওয়া উচিত।
  4. Send daily reminders টাইপ করুন এবং এন্টার চাপুন।
  5. আপনি যে সময়ে আপডেটটি দেখতে চান, সেই সময়টি টাইপ করুন এবং এন্টার চাপুন। পরীক্ষার জন্য, বর্তমান সময়ের চেয়ে ৩-৫ মিনিট পরের সময় দিয়ে চেষ্টা করে দেখুন।

83a15ecac8c71787.png

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

8582482eafc67d5b.png

৪. পুশ নোটিফিকেশন যোগ করুন

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

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

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

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

7c9d4b633c547823.png

এটি ব্যবহারকারীদের কীভাবে সম্পৃক্ত করবে?

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

পুশ নোটিফিকেশন একটি কার্যকর এনগেজমেন্ট টুল হতে পারে, কিন্তু এটি প্রতিটি অ্যাকশনে অন্তর্ভুক্ত করা আবশ্যক নয়। কোনো অ্যাকশনে পুশ নোটিফিকেশন যোগ করার সিদ্ধান্ত নেওয়ার সময় এই পরামর্শগুলো বিবেচনা করুন:

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

অ্যাকশন এপিআই সক্রিয় করুন

  1. গুগল ক্লাউড কনসোল খুলুন এবং ড্রপডাউন থেকে আপনার অ্যাকশনস প্রজেক্টের নামটি নির্বাচন করুন।

d015c1515b99e3db.png

  1. নেভিগেশন মেনুতে ( ☰) , APIs & Services > Library-তে যান।
  2. অ্যাকশনস এপিআই (Actions API) অনুসন্ধান করুন এবং এনাবল (Enable) ক্লিক করুন।

6d464f49c88e70b4.png

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

অ্যাকশনস এপিআই-এর জন্য প্রমাণীকরণ প্রয়োজন, তাই অনুরোধ পাঠানোর জন্য আপনাকে একটি সার্ভিস অ্যাকাউন্ট তৈরি করতে হবে। অ্যাকশনস এপিআই-এর জন্য একটি সার্ভিস অ্যাকাউন্ট কী তৈরি ও ইনস্টল করতে এই ধাপগুলো অনুসরণ করুন:

  1. Google Cloud Console-এর নেভিগেশন মেনুতে (☰) , APIs & Services > Credentials- এ যান।
  2. ক্রেডেনশিয়াল তৈরি করুন > পরিষেবা অ্যাকাউন্ট কী- তে ক্লিক করুন।
  3. সার্ভিস অ্যাকাউন্ট ড্রপ-ডাউন মেনু থেকে নতুন সার্ভিস অ্যাকাউন্ট নির্বাচন করুন।
  4. নিম্নলিখিত তথ্যগুলি পূরণ করুন:
  • পরিষেবা অ্যাকাউন্টের নাম : service-account
  • ভূমিকা : প্রকল্পের মালিক
  • সার্ভিস অ্যাকাউন্ট আইডি: service-account (এর পরে সর্বদা @<project_id>.iam.gserviceaccount.com থাকবে)
  • কী-এর ধরণ : JSON
  1. তৈরি করুন-এ ক্লিক করুন।
  2. ডাউনলোড করা JSON ফাইলটি আপনার প্রোজেক্টের /user-engagement-codelab/start/functions/ ডিরেক্টরিতে সরান।
  3. JSON ফাইলটির নাম পরিবর্তন করে service-account.json রাখুন।

d9bd79d35691de3a.png

ফায়ারস্টোর সক্রিয় করুন

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

আপনার অ্যাকশনের জন্য একটি ফায়ারস্টোর ডেটাবেস তৈরি করতে এই ধাপগুলো অনুসরণ করুন:

  1. Firebase কনসোলে , আপনার Actions প্রজেক্টের নামটি নির্বাচন করুন।
  2. বাম দিকের নেভিগেশনে, Develop > Database- এ যান এবং Create database-এ ক্লিক করুন।
  3. টেস্ট মোডে শুরু নির্বাচন করুন।
  4. সক্ষম করুন -এ ক্লিক করুন।

6dfc386413954caa.png

ডায়ালগফ্লো সেট আপ করুন

পুশ নোটিফিকেশন অপ্ট-ইন ফ্লো তৈরি করতে Dialogflow কনসোলে এই ধাপগুলো অনুসরণ করুন:

ব্যবহারকারীকে সাবস্ক্রাইব করতে অনুরোধ করুন

  1. বাতিল হওয়া ক্লাসগুলোর পুশ নোটিফিকেশনের জন্য সাবস্ক্রাইব করতে ব্যবহারকারীর অনুরোধ সামলানোর জন্য একটি নতুন ইন্টেন্ট সেট আপ করুন। Dialogflow কনসোলে, একটি নতুন ইন্টেন্ট তৈরি করতে বাম দিকের নেভিগেশনে Intents-এর পাশে থাকা + বোতামে ক্লিক করুন।
  2. এই নতুন ইন্টেন্টটির নাম দিন Setup Push Notifications ”।
  3. 'প্রশিক্ষণ বাক্যাংশ' বিভাগের অধীনে, নিম্নলিখিত ব্যবহারকারী অভিব্যক্তিগুলি যোগ করুন:
  • Subscribe to notifications
  • Send notification
  • Notify me
  • Send class notifications
  • Cancelled notifications
  1. Fulfillment সেকশনের অধীনে, এই ইন্টেন্টের জন্য ওয়েবহুক কল সক্ষম করুন (Enable webhook call for this intent) অপশনটি টগল করুন।
  2. পৃষ্ঠার শীর্ষে থাকা সেভ বাটনে ক্লিক করুন।

3d99bc41d0492552.png

ব্যবহারকারীর সিদ্ধান্ত পরিচালনা করুন

  1. পুশ নোটিফিকেশন সাবস্ক্রিপশন প্রম্পটে ব্যবহারকারীর প্রতিক্রিয়া পরিচালনা করার জন্য একটি নতুন ইন্টেন্ট সেট আপ করুন। নতুন ইন্টেন্ট তৈরি করতে বাম দিকের নেভিগেশনে ইন্টেন্টস- এর পাশে থাকা + বোতামে ক্লিক করুন।
  2. এই নতুন ইন্টেন্টটির নাম দিন Confirm Push Notifications ’।
  3. ইভেন্টস সেকশনের অধীনে actions_intent_PERMISSION যোগ করুন। এই Dialogflow ইভেন্টটি ব্যবহারকারী পুশ নোটিফিকেশন সাবস্ক্রিপশন প্রক্রিয়াটি শেষ করার সাথে সাথে ট্রিগার হবে, তিনি শেষ পর্যন্ত সাবস্ক্রাইব করুন বা না করুন।
  4. Fulfillment সেকশনের অধীনে, এই ইন্টেন্টের জন্য ওয়েবহুক কল সক্ষম করুন (Enable webhook call for this intent) অপশনটি টগল করুন।
  5. পৃষ্ঠার শীর্ষে থাকা সেভ বাটনে ক্লিক করুন।

d37f550c5e07cb73.png

পুশ নোটিফিকেশন পরিচালনা করুন

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

ব্যবহারকারীর পুশ নোটিফিকেশনে ট্যাপ করার মাধ্যমে ট্রিগার হওয়ার জন্য একটি ইন্টেন্ট যোগ করতে এই ধাপগুলো অনুসরণ করুন:

  1. Dialogflow কনসোলে, একটি নতুন ইন্টেন্ট তৈরি করতে বাম দিকের নেভিগেশনে Intents-এর পাশে থাকা + বোতামটিতে ক্লিক করুন।
  2. এই নতুন ইন্টেন্ট Class Canceled
  3. ট্রেনিং ফ্রেজেস সেকশনের অধীনে, ইউজার এক্সপ্রেশন হিসেবে Cancelations যোগ করুন।
  4. Fulfillment সেকশনের অধীনে, এই ইন্টেন্টের জন্য ওয়েবহুক কল সক্ষম করুন (Enable webhook call for this intent) অপশনটি টগল করুন।
  5. পৃষ্ঠার শীর্ষে থাকা সেভ বাটনে ক্লিক করুন।

940379556f559631.png

কথোপকথনের মাঝখানে পরীক্ষার বিজ্ঞপ্তি পাঠান

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

পুশ নোটিফিকেশন পরীক্ষা করার জন্য একটি ইন্টেন্ট তৈরি করতে এই ধাপগুলো অনুসরণ করুন:

  1. টেস্টিং এবং ডিবাগিংয়ের উদ্দেশ্যে, একটি নতুন ইন্টেন্ট সেট আপ করুন যা আপনাকে সাবস্ক্রাইব করা ব্যবহারকারীদের কাছে পুশ নোটিফিকেশন পাঠাতে দেবে। Dialogflow কনসোলে, একটি নতুন ইন্টেন্ট তৈরি করতে বাম দিকের নেভিগেশনে Intents-এর পাশে থাকা + বোতামটিতে ক্লিক করুন।
  2. এই নতুন ইন্টেন্টটির নাম দিন Test Notification
  3. ট্রেনিং ফ্রেজেস সেকশনের অধীনে, ইউজার এক্সপ্রেশন হিসেবে Test notification যোগ করুন।
  4. Fulfillment সেকশনের অধীনে, এই ইন্টেন্টের জন্য ওয়েবহুক কল সক্ষম করুন (Enable webhook call for this intent) অপশনটি টগল করুন।
  5. পৃষ্ঠার শীর্ষে থাকা সেভ বাটনে ক্লিক করুন।

6967f5a997643eb8.png

পুশ নোটিফিকেশন চালু করুন

Class Canceled ইন্টেন্টের জন্য পুশ নোটিফিকেশন চালু করতে এই ধাপগুলো অনুসরণ করুন:

  1. Dialogflow কনসোলের নেভিগেশন বারে থাকা Integrations- এ যান।
  2. Google Assistant কার্ডে, Integration Settings- এ ক্লিক করুন।
  3. ক্লাস ক্যানসেলড-কে একটি ইমপ্লিসিট ইনভোকেশন ইন্টেন্ট হিসেবে যুক্ত করুন। এই ধাপটি প্রয়োজনীয়, যাতে ডায়ালগফ্লো বুঝতে পারে যে ব্যবহারকারীরা (একটি পুশ নোটিফিকেশনে ট্যাপ করে) ক্লাস ক্যানসেলড ইন্টেন্ট ব্যবহার করে আপনার কথোপকথন শুরু করতে পারে।
  4. বন্ধ করুন-এ ক্লিক করুন।

1ac725231ed279a1.png

  1. অ্যাকশন কনসোলে, ডেভেলপ ট্যাবে ক্লিক করুন এবং বাম দিকের নেভিগেশন বার থেকে অ্যাকশনস (Actions) নির্বাচন করুন।
  2. অ্যাকশন তালিকার অধীনে থাকা 'ক্লাস বাতিল' বিকল্পে ক্লিক করুন।
  3. ইউজার এনগেজমেন্ট সেকশনের অধীনে, ‘ Would you like to send push notifications?’ অপশনটি টগল করুন।
  4. একটি বর্ণনামূলক কন্টেন্ট টাইটেল সেট করুন যা পুশ নোটিফিকেশনটি বর্ণনা করে। প্রসঙ্গটি হবে "আমি কি <কন্টেন্ট টাইটেল>-এর জন্য পুশ নোটিফিকেশন পাঠাতে পারি?", তাই নিশ্চিত করুন যে আপনার টাইটেলটি বর্ণনামূলক এবং মুখে বললে সঠিক শোনায়। এই উদাহরণের জন্য, কন্টেন্ট টাইটেলটি ' class cancelations সেট করুন।
  5. পৃষ্ঠার শীর্ষে থাকা সেভ বাটনে ক্লিক করুন।

4304c7cd575f6de3.png

পরিপূর্ণতা বাস্তবায়ন করুন

আপনার ওয়েবহুকে ফুলফিলমেন্ট বাস্তবায়ন করতে, নিম্নলিখিত ধাপগুলি সম্পন্ন করুন:

নির্ভরতা লোড করুন

b2f84ff91b0e1396.png index.js ফাইলে, actions-on-google প্যাকেজ থেকে ` UpdatePermission প্যাকেজটি যোগ করার জন্য ` require() ফাংশনটি আপডেট করুন, যাতে আপনার ইম্পোর্টগুলো দেখতে এইরকম হয়:

index.js

const {
  dialogflow,
  Suggestions,
  RegisterUpdate,
  UpdatePermission,
} = require('actions-on-google');

পরামর্শ চিপস আপডেট করুন

b2f84ff91b0e1396.png index.js ফাইলে, সাজেশন চিপ টাইটেলের তালিকায় একটি NOTIFICATIONS এন্ট্রি যোগ করুন, যাতে আপনার Suggestion ডেফিনিশনটি দেখতে এইরকম হয়:

index.js

// Suggestion chip titles
const Suggestion = {
  HOURS: 'Ask about hours',
  CLASSES: 'Learn about classes',
  DAILY: 'Send daily reminders',
  NOTIFICATIONS: 'Get notifications',
};

নতুন আমদানি সেট আপ করুন

আপনার ফায়ারস্টোর ডাটাবেসের সাথে সংযোগ করতে, firebase-admin প্যাকেজটি যুক্ত করুন এবং ডাটাবেসে সংরক্ষিত ফিল্ডগুলোর জন্য কনস্ট্যান্ট যোগ করুন। এছাড়াও, অথেনটিকেশন এবং অ্যাকশনস এপিআই-এর অনুরোধগুলো পরিচালনা করার জন্য google-auth-library এবং request প্যাকেজগুলো ইম্পোর্ট করুন।

b2f84ff91b0e1396.png index.js ফাইলের imports-এ নিম্নলিখিত কোডটি যোগ করুন:

index.js

// Firebase admin import
const admin = require('firebase-admin');

// Initialize Firestore
admin.initializeApp();
const db = admin.firestore();

// Firestore constants
const FirestoreNames = {
 INTENT: 'intent',
 USER_ID: 'userId',
 USERS: 'users',
};

// Actions API authentication imports
const {auth} = require('google-auth-library');
const request = require('request');

ক্লাস বাতিলের বিজ্ঞপ্তি সেট আপ করার প্রস্তাব

b2f84ff91b0e1396.png index.js ফাইলে, নিম্নলিখিত কোডটি প্রতিস্থাপন করুন:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
  // If the user started the conversation from the context of a daily update,
  // the conv's arguments will contain an 'UPDATES' section.
  let engagement = conv.arguments.get('UPDATES');
  // Check the conv arguments to tailor the conversation based on the context.
  if (engagement) {
    classesMessage += `Hope to see you soon at Action Gym!`;
    conv.close(classesMessage);
  } else {
    classesMessage += `Would you like me to send you daily reminders of upcoming classes, or can I help you with anything else?`;
    conv.ask(classesMessage);
    if (conv.screen) {
      conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.HOURS]));
    };
  };
});

এর সাথে:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
  // If the user started the conversation from the context of a daily update,
  // the conv's arguments will contain an 'UPDATES' section.
  let engagement = conv.arguments.get('UPDATES');
  // Check the conv arguments to tailor the conversation based on the context.
  if (engagement) {
    classesMessage += `Hope to see you soon at Action Gym!`;
    conv.close(classesMessage);
  } else {
    classesMessage += `Would you like to receive daily reminders of upcoming classes, subscribe to notifications about cancelations, or can I help you with anything else?`;
    conv.ask(classesMessage);
    if (conv.screen) {
      conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.NOTIFICATIONS,
Suggestion.HOURS]));
    };
  };
});

নতুন অভিপ্রায়গুলির জন্য পরিপূর্ণতা যোগ করুন

যখন ব্যবহারকারী পুশ নোটিফিকেশনের জন্য সাবস্ক্রাইব করতে চান, তখন তার কাছ থেকে অনুমতি চাওয়ার জন্য UpdatePermission হেল্পারটি কল করুন। যদি সেটি সফল হয়, তাহলে PERMISSION আর্গুমেন্টটি conv অবজেক্টের আর্গুমেন্টগুলোর সাথে যুক্ত হয়ে যাবে, যা আপনি কথোপকথনের মোড় ঘোরানোর জন্য পরীক্ষা করতে পারবেন।

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

সবশেষে, পুশ নোটিফিকেশনে ট্যাপ করার মাধ্যমে ট্রিগার হওয়া Class Canceled ' ইন্টেন্টটির ফুলফিলমেন্ট যোগ করুন। এই উদাহরণে আপনার রেসপন্সটি একটি প্লেসহোল্ডার স্ট্রিং, যদিও এই অ্যাকশনটির একটি প্রোডাকশন-রেডি ভার্সনে আপনার নোটিফিকেশন স্ক্রিপ্টটি কোন ক্লাসটি বাতিল করা হয়েছে সে সম্পর্কে আরও ডাইনামিক তথ্য প্রদান করবে।

b2f84ff91b0e1396.png index.js ফাইলে নিম্নলিখিত কোডটি যোগ করুন:

index.js

// Call the User Information helper for permission to send push notifications
app.intent('Setup Push Notifications', (conv) => {
 conv.ask('Update permission for setting up push notifications');
 conv.ask(new UpdatePermission({intent: 'Class Canceled'}));
});

// Handle opt-in or rejection of push notifications
app.intent('Confirm Push Notifications', (conv) => {
 if (conv.arguments.get('PERMISSION')) {
   let userId = conv.arguments.get('UPDATES_USER_ID');
   if (!userId) {
     userId = conv.request.conversation.conversationId;
   }
   // Add the current conversation ID and the notification's
   // target intent to the Firestore database.
   return db.collection(FirestoreNames.USERS)
   .add({
     [FirestoreNames.INTENT]: 'Class Canceled',
     [FirestoreNames.USER_ID]: userId,
   })
   .then(() => {
     conv.ask(`Great, I'll notify you whenever there's a class cancelation. ` +
     'Can I help you with anything else?');
   });
 } else {
   conv.ask(`Okay, I won't send you notifications about class cancelations. ` +
     'Can I help you with anything else?');
 }
 if (conv.screen) {
    conv.ask(new Suggestions([Suggestion.CLASSES, Suggestion.HOURS]));
  }
});

// Intent triggered by tapping the push notification
app.intent('Class Canceled', (conv) => {
 conv.ask('Classname at classtime has been canceled.');
});

পরীক্ষার বিজ্ঞপ্তি যোগ করুন

কোনো ব্যবহারকারীকে পুশ নোটিফিকেশন পাঠাতে, ইউজার আইডি, নোটিফিকেশনের শিরোনাম এবং টার্গেট ইন্টেন্ট সহ অ্যাকশনস এপিআই-তে একটি POST রিকোয়েস্ট পাঠান। এই উদাহরণে, 'টেস্ট নোটিফিকেশন' ইন্টেন্টটি ট্রিগার করলে এটি আপনার ফায়ারস্টোর ডাটাবেসে অনুসন্ধান চালাবে এবং নোটিফিকেশনের জন্য সাবস্ক্রাইব করা প্রত্যেক ব্যবহারকারীকে পুশ নোটিফিকেশন পাঠাবে।

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

b2f84ff91b0e1396.png index.js ফাইলে নিম্নলিখিত কোডটি যোগ করুন:

index.js

// Debug intent to trigger a test push notification
app.intent('Test Notification', (conv) => {
 // Use the Actions API to send a Google Assistant push notification.
 let client = auth.fromJSON(require('./service-account.json'));
 client.scopes = ['https://www.googleapis.com/auth/actions.fulfillment.conversation'];
 let notification = {
   userNotification: {
     title: 'Test Notification from Action Gym',
   },
   target: {},
 };
 client.authorize((err, tokens) => {
   if (err) {
     throw new Error(`Auth error: ${err}`);
   }
   // Iterate through Firestore and send push notifications to every user
   // who's currently opted in to canceled class notifications.
   db.collection(FirestoreNames.USERS)
       .where(FirestoreNames.INTENT, '==', 'Class Canceled')
       .get()
       .then((querySnapshot) => {
         querySnapshot.forEach((user) => {
           notification.target = {
             userId: user.get(FirestoreNames.USER_ID),
             intent: user.get(FirestoreNames.INTENT),
           };
           request.post('https://actions.googleapis.com/v2/conversations:send', {
             'auth': {
               'bearer': tokens.access_token,
             },
             'json': true,
             'body': {'customPushMessage': notification, 'isInSandbox': true},
           }, (err, httpResponse, body) => {
             if (err) {
               throw new Error(`API request error: ${err}`);
             }
             console.log(`${httpResponse.statusCode}: ` +
               `${httpResponse.statusMessage}`);
             console.log(JSON.stringify(body));
           });
         });
       })
       .catch((error) => {
         throw new Error(`Firestore query error: ${error}`);
       });
 });
 conv.ask('A notification has been sent to all subscribed users.');
});

আপনার পুশ নোটিফিকেশন পরীক্ষা করুন

আপনার আপডেট করা ওয়েবহুক কোড ফায়ারবেসে ডিপ্লয় করতে টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:

firebase deploy

অ্যাকশন সিমুলেটরে নোটিফিকেশন পরীক্ষা করার জন্য, এই ধাপগুলো অনুসরণ করুন:

  1. অ্যাকশন কনসোলে, টেস্ট ট্যাবে যান।
  2. ইনপুট ফিল্ডে Talk to my test app টাইপ করুন এবং এন্টার চাপুন।
  3. Learn about classes টাইপ করুন এবং এন্টার চাপুন।
  4. Get notifications টাইপ করুন এবং এন্টার চাপুন।
  5. আপনি যদি আপনার অ্যাকশনকে পুশ নোটিফিকেশন পাঠানোর অনুমতি আগে থেকে না দিয়ে থাকেন, তাহলে yes টাইপ করে এন্টার চাপুন।
  6. yes টাইপ করে এন্টার চাপুন। এখন আপনার গুগল অ্যাকাউন্টটি এই অ্যাকশনটির জন্য পুশ নোটিফিকেশন পেতে সাবস্ক্রাইব হয়ে যাবে।

3a8704bdc0bcbb17.png

  1. প্রস্থান করার জন্য no টাইপ করে এন্টার চাপুন।
  2. নতুন কথোপকথন শুরু করতে Talk to my test app টাইপ করুন এবং এন্টার চাপুন।
  3. Test notification টাইপ করুন এবং এন্টার চাপুন।

634dfcb0be8dfdec.png

কয়েক মিনিটের মধ্যেই আপনি আপনার মোবাইল ডিভাইসে "অ্যাকশন জিম থেকে টেস্ট নোটিফিকেশন" লেখা একটি অ্যাসিস্ট্যান্ট পুশ নোটিফিকেশন পাবেন। এই নোটিফিকেশনটিতে ট্যাপ করলে আপনাকে আপনার অ্যাকশনের ' ক্লাস বাতিল' ইন্টেন্টে ডিপ লিঙ্ক করা হবে।

33cbde513c10122e.png

৫. একটি অ্যাসিস্ট্যান্ট লিঙ্ক তৈরি করুন

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

আপনি একটি অ্যাসিস্ট্যান্ট লিঙ্ক তৈরি করতে পারেন যা মোবাইল ডিভাইসের ব্যবহারকারীদের সরাসরি আপনার 'অ্যাকশন অন অ্যাসিস্ট্যান্ট'-এ নিয়ে যাবে। যেহেতু অ্যাসিস্ট্যান্ট লিঙ্ক একটি সাধারণ হাইপারলিঙ্ক, তাই আপনি এটি কোনো ওয়েবসাইট বা ব্লগ বা সোশ্যাল মিডিয়া পোস্টের মতো যেকোনো ওয়েব মার্কেটিং উপকরণে যোগ করতে পারেন।

এই ধাপে, আপনি শিখবেন অ্যাসিস্ট্যান্ট লিঙ্ক কী, আপনার অ্যাকশনের ওয়েলকাম ইন্টেন্টের জন্য কীভাবে একটি লিঙ্ক তৈরি করতে হয় এবং পরীক্ষার জন্য একটি সাধারণ ওয়েবসাইটে কীভাবে এটি যুক্ত করতে হয়।

এটি ব্যবহারকারীদের কীভাবে সম্পৃক্ত করবে?

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

Assistant links can be a useful engagement tool, so you should create one if you're planning on advertising your Action through your website or social media. Just be aware of the following tips before you create and distribute an Assistant link:

  • Assistant links only work once your Action is published. While your project is in a draft state, the link will only work on your own devices. Anyone else will be taken to a 404 page in the Actions directory.
  • You can let users test an Assistant link prior to publishing by releasing your Action in an alpha or beta environment . Note that only users who participate in your alpha or beta will be able to test your Assistant link.
  • Make sure the destination intent for your Assistant link makes a good first impression with new users. Your welcome intent is the default destination for an Assistant link because it should already do a good job of introducing your Action

Follow these steps to create an Assistant link for the welcome intent:

  1. In the Actions console, click the Develop tab, and choose Actions in the left navigation bar.
  2. Click on actions.intent.MAIN under the Actions list.
  3. Under the Links section, toggle the Would you like enable a URL for this Action option.
  4. Set a descriptive Link title that describes your Action. Make your title a simple verb-noun pair that describes what the user can accomplish with your Action. For this example, set the Link title to learn about Action Gym .
  5. Copy the HTML snippet from the bottom of this page and save it for later.
  6. Click Save at the top of the page.

55341b8102b71eab.png

Deploy a test website

To test your Assistant link, you can use Firebase tools to deploy a test website alongside your fulfillment. We've already built a simple test website for this example, you just need to add your Assistant link.

Go to your fulfillment's /user-engagement-codelab-nodejs/start/public/ directory and open the index.html file in a text editor.

b2f84ff91b0e1396.png In the index.html file, paste your Assistant link's HTML snippet into the body element. The file should end up looking like the snippet below:

index.html

<body>
    <p>
     <a href="https://assistant.google.com/services/invoke/uid/000000efb5f2fd97">🅖 Ask my test app to learn about Action Gym
     </a>
    </p>
</body>

In the terminal, run the following command to deploy your test website to Firebase:

firebase deploy

Once the deploy command finishes running, take note of the Hosting URL in the output.

b01e8d322fb5d623.png

Go to this URL on your mobile device's web browser and you should see the Assistant link on your test website. Clicking this link on your mobile device should take you to your Action's welcome intent in Assistant.

599845d647f5b624.png

You can also try going to the Hosting URL on a desktop browser, which should take you to a 404 page in the Assistant directory since your Action isn't published.

6. Next steps

অভিনন্দন!

You've now learned about the importance of user engagement when developing an Action, what user engagement features are available on the platform, and how to add each feature to an Action.

Additional learning resources

Explore these resources to learn more about user engagement for your Action:

Follow us on Twitter @ActionsOnGoogle to stay tuned to our latest announcements, and tweet to #AoGDevs to share what you have built!

Feedback survey

Before you go, please fill out this form to let us know how we're doing!