১. সংক্ষিপ্ত বিবরণ
গুগল অ্যাসিস্ট্যান্ট ডেভেলপার প্ল্যাটফর্ম আপনাকে এমন সফটওয়্যার তৈরি করার সুযোগ দেয়, যা স্মার্ট স্পিকার, ফোন, গাড়ি, টিভি, হেডফোনসহ ১ বিলিয়নেরও বেশি ডিভাইসে ভার্চুয়াল ব্যক্তিগত সহকারী গুগল অ্যাসিস্ট্যান্টের কার্যকারিতা প্রসারিত করে। ব্যবহারকারীরা বিভিন্ন কাজ সম্পন্ন করার জন্য, যেমন মুদিখানার জিনিস কেনা বা রাইড বুক করার জন্য, অ্যাসিস্ট্যান্টের সাথে কথোপকথনে অংশ নেন। একজন ডেভেলপার হিসেবে, আপনি অ্যাসিস্ট্যান্ট ডেভেলপার প্ল্যাটফর্ম ব্যবহার করে ব্যবহারকারী এবং আপনার নিজস্ব থার্ড-পার্টি ফুলফিলমেন্ট সার্ভিসের মধ্যে আনন্দদায়ক ও কার্যকর কথোপকথনমূলক অভিজ্ঞতা সহজেই তৈরি এবং পরিচালনা করতে পারেন।
এই কোডল্যাবটিতে গুগল অ্যাসিস্ট্যান্ট ব্যবহার করে ডেভেলপ করার জন্য মধ্যম-স্তরের ধারণাগুলো আলোচনা করা হয়েছে এবং এটি 'Build Actions Actions SDK (Level 1)' কোডল্যাবে তৈরি করা অ্যাকশনটির উপর ভিত্তি করে নির্মিত। আমরা দৃঢ়ভাবে পরামর্শ দিচ্ছি যে, এটি শুরু করার আগে আপনি লেভেল ১ কোডল্যাবটি সম্পন্ন করুন।
এই কোডল্যাবে আপনি যে অ্যাকশনটি তৈরি করবেন, তা ব্যবহারকারীদের বেছে নেওয়া সহায়তার ওপর ভিত্তি করে, গ্রিফিনবার্গ নামক এক পৌরাণিক দেশে তাদের অভিযানের জন্য ভাগ্য বলে দেবে।
আপনি যা তৈরি করবেন
এই কোডল্যাবে, আপনি নিম্নলিখিত ফাংশনগুলো ব্যবহার করে একটি উন্নতমানের কনভারসেশনাল অ্যাকশন তৈরি করবেন:
- ব্যবহারকারীর কাছ থেকে তথ্য সংগ্রহ করে এবং মানের ওপর নির্ভর করে কথোপকথনের নির্দেশাবলী পরিবর্তন করে।
- কথোপকথন এগিয়ে নিয়ে যাওয়ার জন্য প্রাসঙ্গিক প্রশ্ন করে।
- একটি গেম লুপ তৈরি করে, যাতে ব্যবহারকারী ভাগ্যফল পাওয়ার পর অ্যাকশনটির সাথে পুনরায় ইন্টারঅ্যাক্ট করতে পারে।
নির্মাণ শুরু করার আগে, আপনি আপনার গুগল অ্যাসিস্ট্যান্ট-সক্ষম ডিভাইসে "হে গুগল, টক টু ফেট অ্যান্ড ফরচুন" বলে লাইভ অ্যাকশনটির সাথে ইন্টারঅ্যাক্ট করতে পারেন। একজন পুরনো ব্যবহারকারীর জন্য এই অ্যাকশনটির ডিফল্ট কার্যপ্রণালীটি নিম্নলিখিত ইন্টারঅ্যাকশনের মতো দেখায়:


আপনি যা শিখবেন
- ব্যবহারকারীর কাছ থেকে ডেটা সংগ্রহ করতে স্লট কীভাবে ব্যবহার করবেন
- একটি দৃশ্যে লজিক যোগ করতে কীভাবে কন্ডিশন ব্যবহার করবেন
- কীভাবে একটি গেম লুপ যোগ করবেন
- কীভাবে একটি সহায়ক পথ যুক্ত করবেন
আপনার যা যা লাগবে
এই কোডল্যাবের পূর্বশর্তগুলো নিম্নরূপ:
- আপনার পছন্দের একটি IDE/টেক্সট এডিটর।
- যেখানে NodeJS , npm , এবং git ইনস্টল করা আছে, সেখানে শেল কমান্ড চালানোর জন্য একটি টার্মিনাল।
- একটি ওয়েব ব্রাউজার, যেমন গুগল ক্রোম ।
- একটি সম্পূর্ণ কোডল্যাব লেভেল ১ অ্যাকশনস প্রজেক্ট।
এই কোডল্যাবের ফুলফিলমেন্ট কোড বোঝার জন্য জাভাস্ক্রিপ্ট (ES6) সম্পর্কে ধারণা থাকা বিশেষভাবে কাম্য, যদিও তা আবশ্যক নয়।
ঐচ্ছিক: নমুনা কোডটি নিন।
আপনি চাইলে অ্যাকশনস বিল্ডার কোডল্যাব লেভেল ১ গিটহাব রিপোজিটরি থেকে সম্পূর্ণ লেভেল ১ প্রোজেক্ট কোডটি সংগ্রহ করতে পারেন, যাতে এই কোডল্যাবটি অনুসরণ করতে পারেন। এছাড়া আপনি এই গিটহাব রিপোজিটরিতে সম্পূর্ণ লেভেল ২ প্রোজেক্ট কোডটিও দেখতে পারেন।
২. কথোপকথনমূলক ইন্টারফেস তৈরি করা চালিয়ে যান
প্রথম কোডল্যাবে, আপনি ' Start নামক একটিমাত্র সিন ব্যবহার করে একটি সাধারণ কনভারসেশনাল অ্যাকশন তৈরি করেছিলেন।
এই কোডল্যাবে, আপনি আপনার অ্যাকশনের কথোপকথন প্রসারিত করবেন। নিম্নলিখিত বিভাগগুলিতে, আপনি আপনার অ্যাকশনকে নিম্নলিখিত কাজগুলো করার জন্য কনফিগার করবেন:
- ব্যবহারকারী যখন তার ভাগ্য জানতে চান, তখন একটি নতুন
Fortuneদৃশ্যে চলে যান। - ব্যবহারকারীকে জিজ্ঞাসা করুন তিনি তার যাত্রার জন্য কোন সাহায্য বেছে নিতে চান।
- ব্যবহারকারীর পছন্দ অনুযায়ী একটি কাস্টমাইজড ভাগ্য গণনা প্রদান করুন।
Fortune দৃশ্যে রূপান্তর এবং সৃষ্টি করুন
এই অংশে, আপনাকে নিম্নলিখিত কাজগুলো করতে হবে:
-
Startসিন থেকে বিদ্যমান প্রম্পটটি সরিয়ে ফেলুন, যেটি ব্যবহারকারীকে উত্তর দেয় এবং কথোপকথনটি শেষ করে দেয়। -
Startসিন থেকেFortuneসিনে উত্তরণটি সংজ্ঞায়িত করুন। -
Fortuneদৃশ্যটি তৈরি করুন
Start সিন পরিবর্তন করতে এবং Fortune সিনে একটি ট্রানজিশন যোগ করতে, এই ধাপগুলো অনুসরণ করুন:
- আপনার টেক্সট এডিটরে লেভেল ১ কোডল্যাব থেকে অ্যাকশনস প্রজেক্টটি খুলুন।
-
custom/scenes/Start.yamlফাইলটি খুলুন। -
yes' ইন্টেন্টেরhandlerআপডেট করুন যাতে আপনার কোডটি নিচের কোড স্নিপেটটির সাথে মিলে যায়:
Start.yaml
intentEvents:
- intent: "yes"
transitionToScene: Fortune
- handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: I understand, stranger. Best of luck on your quest! Farewell.
intent: "no"
transitionToScene: actions.scene.END_CONVERSATION
- ফাইলটি সংরক্ষণ করুন।
Fortune নামক একটি নতুন সিন তৈরি করতে, এই ধাপগুলো অনুসরণ করুন:
- টার্মিনালে আপনার কোডল্যাব লেভেল ১ অ্যাকশনস প্রজেক্টে যান।
-
scenesডিরেক্টরিতেFortune.yamlনামে একটি নতুন ফাইল তৈরি করুন:
touch custom/scenes/Fortune.yaml
আপনি পরবর্তী বিভাগে এই ফাইলটি সম্পাদনা করবেন।
Fortune দৃশ্যের জন্য কথোপকথনমূলক যুক্তি সংজ্ঞায়িত করুন
এই কোডল্যাবে, আপনি আপনার Fortune সিনটি এমনভাবে কনফিগার করবেন যাতে এটি ব্যবহারকারীকে জিজ্ঞাসা করে, " আপনার অভিযানে সাহায্যের জন্য আপনি কোনটি বেছে নেবেন, একটি ড্রাগন, একজন অনুবাদক, নাকি একটি কম্পাস?" সামনে এগোনোর আগে ব্যবহারকারীর কাছ থেকে প্রয়োজনীয় তথ্য সংগ্রহ করতে আপনি স্লট ফিলিং নামক একটি ক্যাপাবিলিটি ব্যবহার করতে পারেন।
আপনার অ্যাকশনটি তিনটি সহায়ক উপকরণের জন্য ভাগ্যবাণী প্রদান করে: একটি ড্রাগন, অনুবাদক এবং কম্পাস। ব্যবহারকারীর ইনপুটে এই তিনটি বিকল্প শনাক্ত করার জন্য আপনার অ্যাকশনটি কনফিগার করতে, আপনাকে একটি নতুন টাইপ তৈরি করতে হবে।
একটি সিনের স্লট পূরণের পর্যায়ে আপনি ব্যবহারকারীর কাছ থেকে যে তথ্য চান তা নির্ধারণ করতে টাইপ ব্যবহার করতে পারেন। যখন NLU ইঞ্জিন ব্যবহারকারীর ইনপুটে একটি স্লট ম্যাচ শনাক্ত করে, তখন এটি স্লটটিকে একটি টাইপড প্যারামিটার হিসেবে বের করে নেয়, ফলে আপনি সিনের মধ্যে এটি দিয়ে লজিক প্রয়োগ করতে পারেন।
available_options প্রকার তৈরি করুন
এই অংশে, আপনি available_options নামে একটি নতুন টাইপ তৈরি করবেন, যা প্রম্পটের জবাবে ব্যবহারকারীদের বেছে নেওয়ার জন্য তিনটি বিকল্প (ড্রাগন, ট্রান্সলেটর এবং কম্পাস) নির্দিষ্ট করে। কোনো ব্যবহারকারী একই রকম কিছু বললে, তার জন্য আপনি এই বিকল্পগুলোর কয়েকটি সমার্থক শব্দও সংজ্ঞায়িত করবেন। পরবর্তী কোনো অংশে, আপনি ব্যবহারকারীর পছন্দটি জানতে চান তা নির্দিষ্ট করার জন্য available_options টাইপটিকে একটি স্লটে যুক্ত করবেন।
available_options টাইপটি তৈরি করতে, এই ধাপগুলো অনুসরণ করুন:
-
typesনামে একটি নতুন ডিরেক্টরি তৈরি করুন:
mkdir custom/types
-
typesডিরেক্টরিতেavailable_options.yamlনামে একটি নতুন ফাইল তৈরি করুন:
touch custom/types/available_options.yaml
- আপনার টেক্সট এডিটরে
custom/types/available_options.yamlখুলুন।
টাইপগুলো তথ্যের কী-ভ্যালু পেয়ার হিসেবে কনফিগার করা হয়, যেখানে কী হলো টাইপের নাম এবং ভ্যালুগুলো হলো সেই কী-এর সমার্থক শব্দ। আপনি যখন কী নির্ধারণ করেন, তখন এটি স্বয়ংক্রিয়ভাবে একটি ভ্যালু হিসেবে যুক্ত হয়ে যায়। অ্যাকশনস এসডিকে-এর মাধ্যমে, আপনি কী-গুলোকে entities এবং ভ্যালু-গুলোকে synonyms হিসেবে উপস্থাপন করেন।
ব্যবহারকারীর বেছে নেওয়ার জন্য তিনটি বিকল্প যোগ করতে, এই ধাপগুলো অনুসরণ করুন:
-
available_options.yamlফাইলে নিম্নলিখিতentitiesএবংsynonymsযোগ করুন:
available_options.yaml
synonym:
entities:
dragon:
synonyms:
- dragon
- hydra
- lizard
translator:
synonyms:
- translator
- communicator
- machine
- decoder
- translate
compass:
synonyms:
- compass
- direction
- guide
- navigator
matchType: EXACT_MATCH
- ফাইলটি সংরক্ষণ করুন।
আপনার অ্যাকশন এখন বুঝতে পারছে যে available_options হলো ড্রাগন, ট্রান্সলেটর এবং কম্পাস, এবং এটি কয়েকটি সংশ্লিষ্ট প্রতিশব্দও চিনতে পারে।
স্লট পূরণের ব্যবস্থা করুন
এরপরে, আপনাকে Fortune সিনে স্লট ফিলিং কনফিগার করতে হবে। স্লট ফিলিং লজিক কনফিগার করতে, এই ধাপগুলো অনুসরণ করুন:
- আপনার টেক্সট এডিটরে
custom/scenes/Fortune.yamlখুলুন। -
Fortune.yamlফাইলে নিম্নলিখিতslotsডেটা যোগ করুন:
Fortune.yaml
slots:
- commitBehavior:
writeSessionParam: chosenOptions
name: chosenOptions
promptSettings:
initialPrompt:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: What do you choose to help you on your quest, a dragon, a translator, or a compass?
suggestions:
- title: Dragon
- title: Translator
- title: Compass
required: true
type:
name: available_options
- ফাইলটি সংরক্ষণ করুন।
আপনি এখন স্লটটিতে available_options টাইপটি যোগ করেছেন, যা আপনার অ্যাকশনকে এগিয়ে যাওয়ার আগে ব্যবহারকারীর কাছ থেকে প্রয়োজনীয় তথ্য (তাদের পছন্দের সহায়তা) সংগ্রহ করার কথা বলে দেয়। আপনি স্লটটির মধ্যে একটি প্রম্পটও কনফিগার করেছেন, যা ব্যবহারকারী যখন দৃশ্যের স্লট পূরণের পর্যায়ে পৌঁছায় তখন প্রম্পট কিউতে যুক্ত হয়।
যখন আপনি স্লটটির নাম chosenOptions রাখেন, তখন writeSessionsParam ফিল্ডটি একই নামে ( $session.params.chosenOptions ) আপডেট হয়ে যায়। আপনি প্রম্পটে এবং ক্লায়েন্ট লাইব্রেরির মাধ্যমে আপনার ফুলফিলমেন্টে এই নামে প্যারামিটারটি অ্যাক্সেস করতে পারবেন।
শর্ত যোগ করুন
এখন যেহেতু আপনি এমন একটি স্লট যোগ করেছেন যেখানে ব্যবহারকারীর সাহায্য বেছে নেওয়ার প্রয়োজন হয়, তাই ব্যবহারকারী কথোপকথন চালিয়ে যাওয়ার আগে স্লটের ডেটা সংগ্রহ করা হয়েছে কিনা তা যাচাই করার জন্য আপনি একটি শর্ত যোগ করতে পারেন।
এই অংশে, আপনি scene.slots.status == "FINAL" শর্তটি যোগ করেন, যা স্লট পূরণ সম্পূর্ণ হয়েছে কিনা তা পরীক্ষা করে। সব স্লট পূরণ হয়ে গেলে, শর্তটি প্রম্পট কিউতে একটি প্রম্পট ( You picked $session.params.chosenOptions. ) যোগ করে।
scene.slots.status == "FINAL" শর্তটি কনফিগার করতে, এই ধাপগুলো অনুসরণ করুন:
- আপনার টেক্সট এডিটরে
custom/scenes/Fortune.yamlখুলুন। -
Fortune.yamlফাইলের শীর্ষেconditionalEventsডেটা যোগ করুন:
Fortune.yaml
conditionalEvents:
- condition: scene.slots.status == "FINAL"
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: You picked $session.params.chosenOptions.
- ফাইলটি সংরক্ষণ করুন।
সিমুলেটরে আপনার অ্যাকশন পরীক্ষা করুন
এই পর্যায়ে, আপনি নির্ধারণ করেছেন যে নির্দিষ্ট স্থানটি পূরণ করার জন্য ব্যবহারকারীকে কোন বিকল্পগুলো নির্বাচন করতে হবে। ব্যবহারকারীর কাছ থেকে এই তথ্য পাওয়ার পর, আপনার অ্যাকশনটি তাদের বেছে নেওয়া নির্দিষ্ট বিকল্পটির উল্লেখ করে একটি প্রম্পট প্রদান করবে।
আপনার অ্যাকশনটি পরীক্ষা করতে, এই ধাপগুলো অনুসরণ করুন:
- টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:
gactions deploy preview
আপনার প্রাপ্ত আউটপুটটি নিম্নলিখিতের মতো হবে:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- প্রদত্ত URL-টি কপি করে ব্রাউজারে পেস্ট করুন।
- ইনপুট ফিল্ডে
Talk to my test appক্লিক করুন বা টাইপ করুন এবং এন্টার চাপুন। - ইনপুট ফিল্ডে
Yesটাইপ করুন এবং এন্টার চাপুন। বিকল্পভাবে, আপনি Yes সাজেশন চিপটিতে ক্লিক করতে পারেন।

- ক্লিক করুন, টাইপ করুন বা
dragonবলুন। আপনি "আপনি ড্রাগন বেছে নিয়েছেন" এই বার্তাটি পাবেন।
পরবর্তী বিভাগে, ব্যবহারকারী যে প্রতিটি সহায়তা নির্বাচন করতে পারেন, তার জন্য নির্দেশাবলী আপনি নিজের মতো করে সাজিয়ে নিতে পারবেন।
শর্তাবলী ব্যবহার করে প্রম্পটগুলি কাস্টমাইজ করুন
এই অংশে, ব্যবহারকারীর বেছে নেওয়ার মতো প্রতিটি বিকল্পের জন্য শর্ত যোগ করুন এবং প্রতিটি শর্তের জন্য একটি নিজস্ব প্রম্পট যুক্ত করুন।
dragon ভাগ্য কাস্টমাইজ করুন
ব্যবহারকারী 'ড্রাগন' নির্বাচন করলে শর্তটি আপডেট করতে এবং প্রম্পটটি কাস্টমাইজ করতে, এই ধাপগুলো অনুসরণ করুন:
- আপনার টেক্সট এডিটরে
custom/scenes/Fortune.yamlখুলুন। -
Fortune.yamlফাইলেconditionalEventsডেটা নিম্নলিখিত কোড স্নিপেট দিয়ে প্রতিস্থাপন করুন:
Fortune.yaml
conditionalEvents:
- condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: The people of Gryffinberg will be awestruck by the beauty and
power of the ancient dragon. Much to your dismay, the townspeople
fall into dispute over who will receive the honor of riding the dragon
first. You return home from your quest without everlasting glory or
a dragon.
- ফাইলটি সংরক্ষণ করুন।
এখন, যখন কোনো ব্যবহারকারী "ড্রাগন" বা এর মতো কোনো শব্দ বলবে, তখন আপনার অ্যাকশনটি সেই নির্বাচনের উপর ভিত্তি করে একটি ভাগ্যফল প্রদান করবে। এরপর, আপনি বাকি দুটি নির্বাচন যোগ করবেন।
translator এবং compass ভাগ্যফল কাস্টমাইজ করুন
কোনো ব্যবহারকারী 'translator' বা 'compass' বললে তার জন্য শর্ত যোগ করতে এবং প্রম্পটগুলো কাস্টমাইজ করতে, এই ধাপগুলো অনুসরণ করুন:
-
custom/scenes/Fortune.yamlফাইলে,dragonকন্ডিশনের অধীনে বাকি দুটি কন্ডিশন যোগ করুন:
Fortune.yaml
- condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "translator"
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: With the help of the translator, the rival factions in Gryffinberg
are finally able to communicate with each other and resolve their
disputes. You will complete your quest to restore peace in the town.
The translator will be used on many other journeys across the
earth. After its work is done, it retires honorably to a premier location
in the Gryffinberg History Museum.
- condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "compass"
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: The compass will help you find the mystical and ancient Library
of Gryffinberg. Among its infinite stacks of dusty books, you find
one entitled "Wisdom of the Ages". By the time you've read the 50,000-page
tome, the townspeople have forgotten their problems. You will write
a second edition of "Wisdom of the Ages", but have limited commercial
success.
- ফাইলটি সংরক্ষণ করুন।
সিমুলেটরে আপনার অ্যাকশন পরীক্ষা করুন
এই পর্যায়ে, আপনার অ্যাকশনটি ব্যবহারকারীর নির্বাচিত বিকল্পের উপর ভিত্তি করে তাকে একটি কাস্টমাইজড ভাগ্যফল প্রদান করবে।
আপনার অ্যাকশনটি পরীক্ষা করতে, এই ধাপগুলো অনুসরণ করুন:
- টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:
gactions deploy preview
আপনার প্রাপ্ত আউটপুটটি নিম্নলিখিতের মতো হবে:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- প্রদত্ত URL-টি কপি করে ব্রাউজারে পেস্ট করুন।
- ইনপুট ফিল্ডে
Talk to my test appটাইপ করুন এবং এন্টার চাপুন। - ইনপুট ফিল্ডে Yes টাইপ করুন এবং এন্টার চাপুন। বিকল্পভাবে, Yes সাজেশন চিপটিতে ক্লিক করুন।
- ক্লিক করুন, টাইপ করুন, অথবা বলুন
Translator।

'অনুবাদক' বিকল্পটির জন্য আপনার যথাযথ ভাগ্যফল পাওয়া উচিত।
৩. গেম লুপ যোগ করুন
এই অংশে, আপনি আপনার অ্যাকশনটি এমনভাবে কনফিগার করবেন যাতে ব্যবহারকারী অন্য একটি বিকল্প নির্বাচন করার পর ভিন্ন একটি ভাগ্যবাণী শুনতে পান। এই পরিবর্তনটি একটি খেলার শেষে "আপনি কি আবার খেলতে চান?" বার্তার মতো। এই লুপটি তৈরি করতে, আপনি পূর্বে তৈরি করা yes এবং no ইন্টেন্টগুলো পুনরায় ব্যবহার করতে পারেন এবং সেগুলোকে Again নামের একটি নতুন সিনে যুক্ত করতে পারেন।
দৃশ্যটি Again তৈরি করুন
এই অংশে, আপনি একটি নতুন ' Again ' সিন তৈরি করবেন এবং একটি প্রম্পট যোগ করবেন যা ব্যবহারকারীকে জিজ্ঞাসা করবে যে তিনি অন্য কোনো বিকল্প বেছে নিতে চান কিনা।
Again সিন তৈরি ও কনফিগার করতে, এই ধাপগুলো অনুসরণ করুন:
-
scenesডিরেক্টরিতেAgain.yamlনামে একটি নতুন ফাইল তৈরি করুন:
touch custom/scenes/Again.yaml
- আপনার টেক্সট এডিটরে
custom/scenes/Again.yamlখুলুন। -
Again.yamlএ নিম্নলিখিতonEnterডেটা যোগ করুন:
আবার.yaml
onEnter:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: That is what I see for you. Would you like to choose a different option and explore another future?
suggestions:
- title: "Yes"
- title: "No"
- ফাইলটি সংরক্ষণ করুন।
Fortune থেকে Again দৃশ্যে রূপান্তর যোগ করুন
ব্যবহারকারী তার ভাগ্য জানার পর, কথোপকথনটি নতুন ' Again দৃশ্যে চলে যাওয়া প্রয়োজন।
Fortune দৃশ্য থেকে Again দৃশ্যে একটি ট্রানজিশন যোগ করতে, এই ধাপগুলো অনুসরণ করুন:
- আপনার টেক্সট এডিটরে
custom/scenes/Fortune.yamlখুলুন। - নিম্নলিখিত কোড স্নিপেটে দেখানো অনুযায়ী, প্রতিটি কন্ডিশনে
transitionToScene: Againযোগ করুন:
Fortune.yaml
conditionalEvents:
- condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: The people of Gryffinberg will be awestruck by the beauty and
power of the ancient dragon. Much to your dismay, the townspeople
fall into dispute over who will receive the honor of riding the dragon
first. You return home from your quest without everlasting glory or
a dragon.
transitionToScene: Again
- condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "translator"
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: With the help of the translator, the rival factions in Gryffinberg
are finally able to communicate with each other and resolve their
disputes. You will complete your quest to restore peace in the town.
The translator will be used on many other journeys across the
earth. After its work is done, it retires honorably to a premier location
in the Gryffinberg History Museum.
transitionToScene: Again
- condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "compass"
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: The compass will help you find the mystical and ancient Library
of Gryffinberg. Among its infinite stacks of dusty books, you find
one entitled "Wisdom of the Ages". By the time you've read the 50,000-page
tome, the townspeople have forgotten their problems. You will write
a second edition of "Wisdom of the Ages", but have limited commercial
success.
transitionToScene: Again
- ফাইলটি সংরক্ষণ করুন।
সিমুলেটরে আপনার অ্যাকশন পরীক্ষা করুন
এই পর্যায়ে, ব্যবহারকারী তার ভাগ্য জানার পর আপনার অ্যাকশনটি তাকে নিম্নলিখিত বার্তাটি দেবে: "আমি আপনার জন্য এটাই দেখতে পাচ্ছি। আপনি কি অন্য কোনো বিকল্প বেছে নিয়ে অন্য কোনো ভবিষ্যৎ অন্বেষণ করতে চান?"
আপনার অ্যাকশনটি পরীক্ষা করতে, এই ধাপগুলো অনুসরণ করুন:
- টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:
gactions deploy preview
আপনার প্রাপ্ত আউটপুটটি নিম্নলিখিতের মতো হবে:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- প্রদত্ত URL-টি কপি করে ব্রাউজারে পেস্ট করুন।
- ইনপুট ফিল্ডে
Talk to my test appটাইপ করুন এবং এন্টার চাপুন। - ইনপুট ফিল্ডে
Yesটাইপ করুন এবং এন্টার চাপুন। বিকল্পভাবে, Yes সাজেশন চিপটিতে ক্লিক করুন। - ক্লিক করুন, টাইপ করুন, অথবা
dragonবলুন।

আপনার ড্রাগন বিকল্পের জন্য ভাগ্যফল এবং ' Again প্রম্পটটি পাওয়া উচিত।
ইনটেন্ট যোগ করুন এবং Again দৃশ্যে ট্রানজিশন করুন।
এই অংশে, আপনি Again ' সিন-এ ' yes এবং no ' ইন্টেন্ট যোগ করবেন, যাতে আপনার অ্যাকশন বুঝতে পারে যে ব্যবহারকারী একটি নতুন বিকল্প বেছে নিতে চান কি না। আপনি yes এবং no ' ইন্টেন্টগুলোর জন্য উপযুক্ত ট্রানজিশনও যোগ করবেন। ' yes ' ইন্টেন্টটি ' Fortune সিন-এ ট্রানজিশন করে, অন্যদিকে ' no ' ইন্টেন্টটি End conversation ' সিস্টেম সিন-এ ট্রানজিশন করে।
Again সিন-এ ইনটেন্ট ও ট্রানজিশন যোগ করতে, এই ধাপগুলো অনুসরণ করুন:
- আপনার টেক্সট এডিটরে
custom/scenes/Again.yamlখুলুন। -
Again.yamlফাইলের একেবারে শুরুতে,OnEnterএর উপরেintentEventsডেটা যোগ করুন:
আবার.yaml
intentEvents:
- intent: "yes"
transitionToScene: Fortune
- handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: It pleases me that you are satisfied with your choice. Best
of luck on your quest. Farewell.
intent: "no"
transitionToScene: actions.scene.END_CONVERSATION
- ফাইলটি সংরক্ষণ করুন।
সিমুলেটরে আপনার অ্যাকশন পরীক্ষা করুন
আপনার অ্যাকশনটির এখন বোঝা উচিত যে ব্যবহারকারী একটি নতুন বিকল্প বেছে নিতে চান নাকি কথোপকথনটি শেষ করতে চান।
yes ইন্টেন্টটি পরীক্ষা করতে, এই ধাপগুলো অনুসরণ করুন:
- টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:
gactions deploy preview
আপনার প্রাপ্ত আউটপুটটি নিম্নলিখিতের মতো হবে:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- প্রদত্ত URL-টি কপি করে ব্রাউজারে পেস্ট করুন।
- ইনপুট ফিল্ডে
Talk to my test appটাইপ করুন এবং এন্টার চাপুন। - ইনপুট ফিল্ডে
Yesটাইপ করুন এবং এন্টার চাপুন। বিকল্পভাবে, Yes সাজেশন চিপটিতে ক্লিক করুন। - বিকল্পগুলো থেকে যেকোনো একটিতে ক্লিক করুন, টাইপ করুন বা বলুন।
- ইনপুট ফিল্ডে
Yesটাইপ করুন এবং এন্টার চাপুন।

আপনাকে এই প্রশ্নটি করা হবে, "আপনার অভিযানে সাহায্যের জন্য আপনি কী বেছে নেবেন, একটি ড্রাগন, একজন অনুবাদক, নাকি একটি কম্পাস?"
অভিপ্রায় no তা পরীক্ষা করতে, এই ধাপগুলো অনুসরণ করুন:
- বিকল্পগুলো থেকে যেকোনো একটিতে ক্লিক করুন, টাইপ করুন বা বলুন।
- ইনপুট ফিল্ডে
Noটাইপ করুন এবং এন্টার চাপুন।
আপনি End conversation এই বার্তাটি পাবেন: "আপনি আপনার সিদ্ধান্তে সন্তুষ্ট জেনে আমি আনন্দিত। আপনার যাত্রার জন্য শুভকামনা। বিদায়।"
৪. একটি সহায়ক পথ যুক্ত করুন
আপনি এখন আপনার অ্যাকশনে প্রধান পথটি তৈরি করেছেন যা বেশিরভাগ ব্যবহারকারী অনুসরণ করে। তবে, ব্যবহারকারী Fortune দৃশ্যের এই প্রশ্নের উত্তরে, " আপনার অভিযানে সাহায্যের জন্য আপনি কী বেছে নেবেন, একটি ড্রাগন, একজন অনুবাদক, নাকি একটি কম্পাস?", প্রদত্ত বিকল্পগুলোর বাইরে অন্য কোনো বিকল্প বেছে নিতে পারে।
এই অংশে, আপনি আপনার অ্যাকশনটি এমনভাবে কনফিগার করবেন যাতে এটি বুঝতে পারে কখন একজন ব্যবহারকারী "magic" , "money" , "horse" বা "phone" বলেন, এবং যখন তারা এই বিকল্পগুলির মধ্যে একটি বেছে নেন, তখন যেন ব্যবহারকারীকে মূল তিনটি পছন্দের মধ্যে থেকে একটি বেছে নেওয়ার জন্য পুনরায় অনুরোধ করে। এই লজিকটি কনফিগার করার জন্য, আপনাকে একটি নতুন type তৈরি করতে হবে যাতে এই অন্যান্য পছন্দগুলি থাকে এবং একটি নতুন ইন্টেন্ট, other_option , তৈরি করতে হবে যা ব্যবহারকারী এই বিকল্পগুলির মধ্যে একটি বললে ম্যাচ করবে। ইন্টেন্ট প্যারামিটারগুলি শনাক্ত ও নিষ্কাশন করার জন্য আপনাকে other_option ইন্টেন্টের মধ্যে ট্রেনিং ফ্রেজগুলিও অ্যানোটেট করতে হবে।
যখন অ্যাসিস্ট্যান্টের ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং ইঞ্জিন ব্যবহারকারীর ইনপুটে কোনো প্যারামিটারের মিল খুঁজে পায়, তখন এটি সেই মানটিকে একটি টাইপড প্যারামিটার হিসেবে বের করে নেয়, যাতে আপনি একটি সিনে সেটির ওপর লজিক প্রয়োগ করতে পারেন। এই কোডল্যাবে, আপনি আপনার অ্যাকশনটি এমনভাবে কনফিগার করবেন যাতে এটি ব্যবহারকারীর বেছে নেওয়া এইডটি বের করে নেয় এবং একটি প্রম্পটে সেই পছন্দের উল্লেখ করে।
unavailable_options প্রকার তৈরি করুন
আপনি এখন একটি unavailable_options টাইপ তৈরি করতে পারেন যাতে বিভিন্ন ধরণের অপশন থাকে, যাতে আপনার অ্যাকশন ব্যবহারকারীর ইনপুট থেকে সেই ডেটা শনাক্ত করতে পারে।
unavailable_options টাইপটি তৈরি করতে, এই ধাপগুলো অনুসরণ করুন:
-
typesডিরেক্টরিতেunavailable_options.yamlনামে একটি নতুন ফাইল তৈরি করুন:
touch custom/types/unavailable_options.yaml
- আপনার টেক্সট এডিটরে
custom/types/unavailable_options.yamlখুলুন। -
unavailable_options.yamlফাইলে নিম্নলিখিতsynonymsডেটা যোগ করুন:
unavailable_options.yaml
synonym:
entities:
money:
synonyms:
- money
- cash
- gold
horse:
synonyms:
- horse
- stallion
- steed
magic:
synonyms:
- magic
- enchanted
- spells
phone:
synonyms:
- phone
- cell
- apps
matchType: EXACT_MATCH
- ফাইলটি সংরক্ষণ করুন।
other_option অভিপ্রায় তৈরি করুন
এরপরে, আপনি other_option নামে একটি ইন্টেন্ট তৈরি করুন এবং unavailable_options টাইপের অপশনগুলো অন্তর্ভুক্ত করে এমন ট্রেনিং ফ্রেজ যোগ করুন। যখন ব্যবহারকারী unavailable_options টাইপের মধ্যে থাকা কোনো একটি অপশন নির্বাচন করেন, তখন এই ইন্টেন্টটি ম্যাচ হয়।
other_option ইন্টেন্টটি তৈরি ও কনফিগার করতে, এই ধাপগুলো অনুসরণ করুন:
-
intentsডিরেক্টরিতেother_option.yamlনামে একটি নতুন ফাইল তৈরি করুন:
touch custom/intents/other_option.yaml
- আপনার টেক্সট এডিটরে
custom/intents/other_option.yamlখুলুন। -
other_option.yamlফাইলে নিম্নলিখিতparametersdata এবংtrainingPhrasesdata যোগ করুন:
other_option.yaml
parameters:
- name: chosenUnavailableOption
type:
name: unavailable_options
trainingPhrases:
- I want to use ($chosenUnavailableOption 'spells' auto=true)
- I really really want to use a ($chosenUnavailableOption 'phone' auto=true)
- ($chosenUnavailableOption 'magic' auto=true)!
- ($chosenUnavailableOption 'cash' auto=true)
- I want to ride a ($chosenUnavailableOption 'horse' auto=true)
এখানে, আপনি পূর্ববর্তী বিভাগে নির্দিষ্ট করা অনুপলব্ধ বিকল্পগুলো দিয়ে প্রশিক্ষণ বাক্যাংশগুলোকে ম্যানুয়ালি টীকাযুক্ত করবেন। ' chosenUnavailableOption ' নামক ইন্টেন্ট প্যারামিটারটি আপনাকে বিকল্পটির নাম বের করতে এবং একটি প্রম্পটে সেই বিকল্পটি ব্যবহার করার সুযোগ দেয়, যা আপনি পরবর্তী বিভাগে করবেন।
- ফাইলটি সংরক্ষণ করুন।
Fortune দৃশ্যে other_option ইন্টেন্ট যোগ করুন
এখন আপনার কাছে other_option নামে একটি ইন্টেন্ট আছে, যা ব্যবহারকারীর মূল অপশনগুলোর বাইরে অন্য কোনো অপশন নির্দিষ্ট করার বিষয়টি সামলাতে পারে। এই অংশে, আপনি Fortune সিন-এ other_option ইন্টেন্টটি যোগ করবেন। ব্যবহারকারীর ইনপুটের উপর ভিত্তি করে প্রম্পটটি কাস্টমাইজ করতে আপনি ইন্টেন্ট প্যারামিটারটি ব্যবহার করবেন।
Fortune সিন-এ other_option ইন্টেন্টটি যোগ করতে, এই ধাপগুলো অনুসরণ করুন:
- আপনার টেক্সট এডিটরে
custom/scenes/Fortune.yamlখুলুন। -
conditionalEventsডেটা এবংslotsডেটার মধ্যে নিম্নলিখিতintentEventsডেটা যোগ করুন:
Fortune.yaml
intentEvents:
- handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: I have seen the future and a $intent.params.chosenUnavailableOption.original will not aid you on your journey.
intent: other_option
- ফাইলটি সংরক্ষণ করুন।
$intent.params.chosenUnavailableOption এক্সপ্রেশনটি ইন্টেন্ট প্যারামিটার অবজেক্টকে নির্দেশ করে, এবং $intent.params.chosenUnavailableOption.original সেই অবজেক্টের মানকে নির্দেশ করে। original প্রপার্টিটি ব্যবহারকারীর নির্দিষ্ট করা র' ইনপুটকে নির্দেশ করে।
যখন কোনো ব্যবহারকারী Fortune সিন চলাকালীন unavailable_options টাইপে তালিকাভুক্ত কোনো অপশন বলেন, তখন other_option ইন্টেন্টটি ম্যাচ হয় এবং প্রম্পট কিউতে একটি প্রম্পট যুক্ত করে। যেহেতু কোনো ট্রানজিশন নির্দিষ্ট করা নেই, তাই কন্ডিশন স্টেজটি পুনরায় মূল্যায়ন করে সিন এক্সিকিউশন লুপটি চলতে থাকে। এরপর chosenOptions স্লটটি তার প্রম্পটটি প্রম্পট কিউতে যুক্ত করে এবং প্রম্পট কিউটি ব্যবহারকারীর কাছে পৌঁছে দেওয়া হয়।
সিমুলেটরে আপনার অ্যাকশন পরীক্ষা করুন
যখন কোনো ব্যবহারকারী unavailable_options টাইপে তালিকাভুক্ত বিকল্পগুলির মধ্যে একটি নির্বাচন করবেন, তখন আপনার অ্যাকশনটি যথাযথভাবে সাড়া দেবে এবং ব্যবহারকারী কোন সহায়কটি বেছে নিয়েছেন তা নির্দিষ্ট করে দেবে। এরপর আপনার অ্যাকশনটি ব্যবহারকারীকে মূল পছন্দগুলির (একটি ড্রাগন, অনুবাদক, বা কম্পাস) মধ্যে থেকে একটি বেছে নিতে পুনরায় অনুরোধ করবে।
সিমুলেটরে আপনার অ্যাকশনটি পরীক্ষা করতে, এই ধাপগুলো অনুসরণ করুন:
- টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:
gactions deploy preview
আপনার প্রাপ্ত আউটপুটটি নিম্নলিখিতের মতো হবে:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- প্রদত্ত URL-টি কপি করে ব্রাউজারে পেস্ট করুন।
- ইনপুট ফিল্ডে
Talk to my test appটাইপ করুন এবং এন্টার চাপুন। - ইনপুট ফিল্ডে
Yesটাইপ করুন এবং এন্টার চাপুন। বিকল্পভাবে, Yes সাজেশন চিপটিতে ক্লিক করুন। - ইনপুট ফিল্ডে
magicটাইপ করুন এবং এন্টার চাপুন।

আপনি হয়তো লক্ষ্য করবেন যে, ব্যবহারকারী যখন 'magic' শব্দটি বেছে নেন, তখন এর আগে 'a' আর্টিকেলটি থাকার কারণে প্রম্পটটি শুনতে সঠিক মনে হয় না। আপনি পরবর্তী বিভাগগুলিতে এই সমস্যাটির সমাধান করবেন।
unavailable_options হ্যান্ডলার যোগ করুন
unavailable_options টাইপের উপযুক্ত অপশনগুলোর আগে "a" আর্টিকেলটি বসানোর জন্য, আপনি আপনার ফুলফিলমেন্ট লজিকে একটি ইভেন্ট হ্যান্ডলার কনফিগার করতে পারেন। এই হ্যান্ডলারটি পরীক্ষা করবে যে ব্যবহারকারীর বেছে নেওয়া অপশনটির আগে "a" প্রয়োজন কিনা। প্রথমে, আপনাকে Fortune সিন থেকে হ্যান্ডলারটিকে কল করার জন্য আপনার অ্যাকশনটি কনফিগার করতে হবে।
Fortune সিন-এ unavailable_options হ্যান্ডলারটি যোগ করতে, এই ধাপগুলো অনুসরণ করুন:
- আপনার টেক্সট এডিটরে
custom/scenes/Fortune.yamlখুলুন। - নিম্নলিখিত
intentEventsডেটা দিয়েFortune.yamlফাইলটি আপডেট করুন:
Fortune.yaml
intentEvents:
- handler:
webhookHandler: unavailable_options
intent: other_option
- ফাইলটি সংরক্ষণ করুন।
পরিপূর্ণতা আপডেট এবং স্থাপন করুন
এখন যেহেতু আপনি আপনার অ্যাকশনকে unavailable_options ইভেন্ট হ্যান্ডলার কল করার জন্য কনফিগার করেছেন, আপনি আপনার ফুলফিলমেন্টে হ্যান্ডলারটি আপডেট করে তা ডিপ্লয় করতে পারেন।
আপনার পরিপূরণ আপডেট করতে, এই ধাপগুলো অনুসরণ করুন:
- আপনার টেক্সট এডিটরে
webhooks/ActionsOnGoogleFulfillment/index.jsখুলুন। -
index.jsফাইলেরgreetinghandler`-এর অধীনে নিম্নলিখিত কোডটি যোগ করুন:
index.js
app.handle('unavailable_options', conv => {
const option = conv.intent.params.chosenUnavailableOption.original;
const optionKey = conv.intent.params.chosenUnavailableOption.resolved;
let message = 'I have seen the future and ';
if(optionsNeedA.has(optionKey)){
message = message + 'a ';
}
message = message + `${option} will not aid you on your journey. `;
conv.add(message);
});
-
const app = conversation({debug:true});এর নিচে নিম্নলিখিত কোডটি যোগ করুন:
index.js
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
- ফাইলটি সংরক্ষণ করুন।
কোডটি বুঝুন
unavailable_options হ্যান্ডলারটি নিম্নলিখিত কাজগুলো করে:
-
convঅবজেক্ট থেকেoptionডেটা নিয়ে ব্যবহারকারীর দেওয়া মূল ইনপুট, অর্থাৎoriginalপ্রপার্টিতে,optionঅ্যাসাইন করে। -
resolvedপ্রপার্টিতেoptionKeyঅ্যাসাইন করে, যাunavailable_optionsটাইপের জন্য কী। -
optionKeyএমন কোনো অপশন কিনা যাতে একটি "a" প্রয়োজন, তা যাচাই করে; যদি তাই হয়, তাহলে একটি অতিরিক্ত "a" যোগ করে বার্তাটি তৈরি করা হয়। -
conv.add(message)এর মাধ্যমে বার্তাটি যোগ করা হয়।
আপডেট হ্যান্ডলার
অ্যাকশনটিকে unavailable_options ব্যবহার করার অনুমতি দিতে, webhooks/ActionsOnGoogleFulfillment.yaml এ unavailable_options হ্যান্ডলারটি যোগ করুন।
-
ActionsOnGoogleFulfillment.yamlএunavailable_optionsহ্যান্ডলারের নামটি যোগ করুন:
ActionsOnGoogleFulfillment.yaml
handlers: - name: greeting - name: unavailable_options inlineCloudFunction: executeFunction: ActionsOnGoogleFulfillment
- ফাইলটি সংরক্ষণ করুন।
সিমুলেটরে আপনার অ্যাকশন পরীক্ষা করুন
ব্যবহারকারীর unavailable_options টাইপের পছন্দের আগে একটি "a" আর্টিকেল প্রয়োজন কিনা, তার উপর ভিত্তি করে আপনার অ্যাকশনটি এখন প্রম্পটটি সামঞ্জস্য করবে।
আপনার অ্যাকশনটি পরীক্ষা করতে, এই ধাপগুলো অনুসরণ করুন:
- টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:
gactions deploy preview
আপনার প্রাপ্ত আউটপুটটি নিম্নলিখিতের মতো হবে:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- প্রদত্ত URL-টি কপি করে ব্রাউজারে পেস্ট করুন।
- ইনপুট ফিল্ডে
Talk to my test appক্লিক করুন বা টাইপ করুন এবং এন্টার চাপুন। - ইনপুট ফিল্ডে
Yesটাইপ করুন এবং এন্টার চাপুন। বিকল্পভাবে, Yes সাজেশন চিপটিতে ক্লিক করুন। - ইনপুট ফিল্ডে
magicটাইপ করে এন্টার চাপুন। তারপর, ইনপুট ফিল্ডেhorseটাইপ করে এন্টার চাপুন।

আপনার করণীয় হলো 'horse' বিকল্পটির আগে 'a' আর্টিকেলটি যোগ করা, এবং 'magic' বিকল্পটির জন্য প্রম্পটটি 'a' আর্টিকেল ছাড়া তৈরি করা।
৫. অ্যাকশন কনসোলে অ্যাকশনটি দেখুন
অ্যাকশনস এসডিকে-এর সাথে অ্যাকশনস বিল্ডার নামক একটি ওয়েব-ভিত্তিক আইডিই-এর আন্তঃকার্যক্ষমতা রয়েছে, যা অ্যাকশনস কনসোলের সাথে সমন্বিত। আপনি gactions push কমান্ড ব্যবহার করে আপনার লোকাল ফাইল সিস্টেম থেকে কনসোলে থাকা আপনার অ্যাকশনের ড্রাফটটি পুশ করতে পারেন। অ্যাকশনস কনসোল আপনার অ্যাকশনের কনফিগারেশনের একটি ভিজ্যুয়াল উপস্থাপনা প্রদান করে। ডেভেলপমেন্টের সময় আপনার অ্যাকশনের দৃশ্যমান বিন্যাস দেখাটা বেশ সহায়ক হতে পারে এবং এটি টেস্টিংয়ের জন্য পরিবেশিত আপনার অ্যাকশনের ভার্সনকে প্রভাবিত করে না।
আপনার অ্যাকশনস প্রজেক্টটি পুশ করতে এবং অ্যাকশনস কনসোলে তা দেখতে, এই ধাপগুলো অনুসরণ করুন:
- আপনার প্রজেক্টটি অ্যাকশন কনসোলে পুশ করতে টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:
gactions push
আপনার প্রাপ্ত আউটপুটটি নিম্নলিখিতের মতো হবে:
✔ Done. Files were pushed to Actions Console, and you can now view your project with this URL: https://console.actions.google.com/project/{project-id}/overview. If you want to test your changes, run "gactions deploy preview", or navigate to the Test section in the Console.
- প্রদত্ত URL-টি কপি করে ব্রাউজারে পেস্ট করুন।
- অ্যাকশন কনসোলে , উপরের নেভিগেশন বারে থাকা ডেভেলপ- এ ক্লিক করুন।
- Scenes- এর পাশের ড্রপ-ডাউন তীরটিতে ক্লিক করুন এবং Start-এ ক্লিক করুন। আপনি আপনার Action-এর
Startscene-এর একটি ভিজ্যুয়াল উপস্থাপনা দেখতে পাবেন, যেমনটি নিম্নলিখিত স্ক্রিনশটে দেখানো হয়েছে:

আপনার প্রকল্পটি পরিচ্ছন্ন করুন [প্রস্তাবিত]
সম্ভাব্য চার্জ এড়ানোর জন্য, যে প্রজেক্টগুলো আপনি ব্যবহার করতে চান না, সেগুলো সরিয়ে ফেলার পরামর্শ দেওয়া হচ্ছে। এই কোডল্যাবে আপনার তৈরি করা প্রজেক্টগুলো ডিলিট করতে, এই ধাপগুলো অনুসরণ করুন:
- ক্লাউড প্রজেক্ট এবং রিসোর্সগুলো ডিলিট করতে, 'প্রজেক্ট বন্ধ করা (ডিলিট করা)' বিভাগে তালিকাভুক্ত ধাপগুলো সম্পূর্ণ করুন।
- ঐচ্ছিক: অ্যাকশন কনসোল থেকে আপনার প্রজেক্টটি অবিলম্বে মুছে ফেলার জন্য, 'একটি প্রজেক্ট মুছুন' বিভাগে তালিকাভুক্ত ধাপগুলি সম্পূর্ণ করুন। আপনি যদি এই ধাপটি সম্পূর্ণ না করেন, তাহলে প্রায় ৩০ দিন পর আপনার প্রজেক্টটি স্বয়ংক্রিয়ভাবে মুছে যাবে।
৬. অভিনন্দন!
অ্যাকশনস এসডিকে ব্যবহার করে গুগল অ্যাসিস্ট্যান্টের জন্য অ্যাকশন তৈরি করার প্রয়োজনীয় মধ্যবর্তী দক্ষতাগুলো এখন আপনার জানা আছে।
আপনি যা কভার করেছেন
- Node.js ফুলফিলমেন্ট লাইব্রেরি ব্যবহার করে কীভাবে কনভারসেশনাল অ্যাকশন তৈরি করবেন
- ব্যবহারকারীর কাছ থেকে ডেটা সংগ্রহ করতে স্লট কীভাবে ব্যবহার করবেন
- দৃশ্যে লজিক যোগ করতে কন্ডিশন কীভাবে ব্যবহার করবেন
- কীভাবে একটি গেম লুপ যোগ করবেন
- কীভাবে একটি সহায়ক পথ যুক্ত করবেন
আরও জানুন
গুগল অ্যাসিস্ট্যান্টের জন্য অ্যাকশন তৈরি করার বিষয়ে জানতে আপনি এই রিসোর্সগুলো দেখতে পারেন:
- গুগল অ্যাসিস্ট্যান্টের জন্য অ্যাকশন তৈরির ডকুমেন্টেশন
- নমুনা কোড এবং লাইব্রেরির জন্য অ্যাকশনস অন গুগল গিটহাব পেজ।
- গুগল অ্যাসিস্ট্যান্ট নিয়ে কাজ করা ডেভেলপারদের জন্য অফিসিয়াল রেডিট কমিউনিটি
- কথোপকথনমূলক ক্রিয়াকলাপ সংক্রান্ত সর্বোত্তম অনুশীলন এবং নির্দেশিকাগুলির জন্য কথোপকথন নকশার নির্দেশিকা
আমাদের সর্বশেষ ঘোষণাগুলো সম্পর্কে জানতে টুইটারে @ActionsOnGoogle- এ আমাদের অনুসরণ করুন, এবং আপনি যা তৈরি করেছেন তা শেয়ার করতে #AoGDevs- এ টুইট করুন!
মতামত সমীক্ষা
যাওয়ার আগে, আপনার অভিজ্ঞতা সম্পর্কে একটি সংক্ষিপ্ত সমীক্ষা পূরণ করুন।