সহজ উত্তর (Dialogflow)

Dialogflow-তে এক্সপ্লোর করুন

Dialogflow-তে আমাদের Responses স্যাম্পেল ইমপোর্ট করতে চালিয়ে যান বিকল্পে ক্লিক করুন। তারপর, স্যাম্পেল ডিপ্লয় ও পরীক্ষা করতে নিচে উল্লেখ করা ধাপগুলি অনুসরণ করুন:

  1. এজেন্টের নাম লিখুন এবং স্যাম্পেলের জন্য নতুন Dialogflow এজেন্ট তৈরি করুন।
  2. এজেন্ট ইমপোর্ট করা হয়ে গেলে, এজেন্টে যান বিকল্পে ক্লিক করুন।
  3. প্রধান নেভিগেশন মেনু থেকে, ফুলফিলমেন্ট বিকল্পে যান।
  4. ইনলাইন এডিটর চালু করে ডিপ্লয় করুন বিকল্পে ক্লিক করুন। এডিটরে স্যাম্পেল কোড আছে।
  5. প্রধান নেভিগেশন মেনু থেকে, ইন্টিগ্রেশন বিকল্পে যান, তারপর Google Assistant বিকল্পে ক্লিক করুন।
  6. যে মোডাল উইন্ডোটি দেখা যাবে, সেখানে পরিবর্তন অটো-প্রিভিউ করুন বিকল্প চালু করুন এবং অ্যাকশন সিমুলেটর খুলতে পরীক্ষা করুন বিকল্পে ক্লিক করুন।
  7. সিমুলেটরে, স্যাম্পেল পরীক্ষা করতে Talk to my test app লিখুন!
চালিয়ে যান

সহজ উত্তর চ্যাট বাবলের মতো দেখায় এবং সাউন্ডের জন্য টেক্সট-টু-স্পিচ (TTS) বা স্পিচ সিন্থেসিস মার্কআপ ল্যাঙ্গুয়েজ (SSML) ব্যবহার করে।

ডিফল্ট হিসেবে TTS টেক্সট চ্যাট বাবল কন্টেন্ট হিসেবে ব্যবহার করা হয়। সেই টেক্সটের ভিজ্যুয়াল দিকটি আপনার প্রয়োজন পূরণ করলে, চ্যাট বাবলের জন্য কোনও ডিসপ্লে টেক্সট নির্দিষ্ট করতে হবে না।

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

প্রপার্টি

ছবি ১. সহজ উত্তরের উদাহরণ (স্মার্টফোন)

সহজ উত্তরের ক্ষেত্রে নিম্নলিখিত প্রয়োজনীয়তা ও ঐচ্ছিক প্রপার্টি থাকে যা আপনি কনফিগার করতে পারবেন:

  • actions.capability.AUDIO_OUTPUT বা actions.capability.SCREEN_OUTPUT ক্ষমতা সহ সারফেসে কাজ করে।
  • প্রতিটি চ্যাট বাবলে ৬৪০টি অক্ষরের সীমা। সীমার চেয়ে বড় স্ট্রিং ৬৪০ অক্ষরের আগে প্রথম শব্দ বিরতি (বা হোয়াইটস্পেস)-তে ট্রাঙ্কেট করা হয়।

  • চ্যাট বাবলের কন্টেন্ট অবশ্যই TTS/SSML আউটপুটের ফোনেটিক সাবসেট বা সম্পূর্ণ ট্রান্সক্রিপ্ট হতে হবে। এটি ব্যবহারকারীদের আপনি যা বলছেন তা বুঝতে সাহায্য করে এবং বিভিন্ন পরিস্থিতিতে বোঝার ক্ষমতা বাড়ায়।

  • প্রতিটি টার্নে সর্বাধিক দুটি চ্যাট বাবল।

  • Google-এ জমা দেওয়া চ্যাট হেড (লোগো) ১৯২x১৯২ পিক্সেলের হতে হবে এবং অ্যানিমেটেড হলে চলবে না।

ছবি ২. সহজ উত্তরের উদাহরণ (স্মার্ট ডিসপ্লে)

নমুনা কোড

Node.js

app.intent('Simple Response', (conv) => {
  conv.ask(new SimpleResponse({
    speech: `Here's an example of a simple response. ` +
      `Which type of response would you like to see next?`,
    text: `Here's a simple response. ` +
      `Which response would you like to see next?`,
  }));
});

Java

@ForIntent("Simple Response")
public ActionResponse welcome(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  responseBuilder.add(
      new SimpleResponse()
          .setTextToSpeech(
              "Here's an example of a simple response. "
                  + "Which type of response would you like to see next?")
          .setDisplayText(
              "Here's a simple response. Which response would you like to see next?"));
  return responseBuilder.build();
}

Node.js

conv.ask(new SimpleResponse({
  speech: `Here's an example of a simple response. ` +
    `Which type of response would you like to see next?`,
  text: `Here's a simple response. ` +
    `Which response would you like to see next?`,
}));

Java

ResponseBuilder responseBuilder = getResponseBuilder(request);
responseBuilder.add(
    new SimpleResponse()
        .setTextToSpeech(
            "Here's an example of a simple response. "
                + "Which type of response would you like to see next?")
        .setDisplayText(
            "Here's a simple response. Which response would you like to see next?"));
return responseBuilder.build();

JSON

মনে রাখবেন, নিচের JSON-এ ওয়েবহুক রেসপন্স বর্ণনা করা হয়েছে।

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Here's an example of a simple response. Which type of response would you like to see next?",
              "displayText": "Here's a simple response. Which response would you like to see next?"
            }
          }
        ]
      }
    }
  }
}

JSON

মনে রাখবেন, নিচের JSON-এ ওয়েবহুক রেসপন্স বর্ণনা করা হয়েছে।

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ],
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "Here's an example of a simple response. Which type of response would you like to see next?",
                "displayText": "Here's a simple response. Which response would you like to see next?"
              }
            }
          ]
        }
      }
    }
  ]
}

SSML এবং সাউন্ড

আপনার উত্তরে SSML এবং সাউন্ড ব্যবহার করলে তা আরও আকর্ষণীয় হয় এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত হয়। SSML ব্যবহার করে কীভাবে উত্তর তৈরি করতে হয় তা নিম্নলিখিত কোড স্নিপেট থেকে জানতে পারবেন:

Node.js

app.intent('SSML', (conv) => {
  conv.ask(`<speak>` +
    `Here are <say-as interpet-as="characters">SSML</say-as> examples.` +
    `Here is a buzzing fly ` +
    `<audio src="https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg"></audio>` +
    `and here's a short pause <break time="800ms"/>` +
    `</speak>`);
  conv.ask('Which response would you like to see next?');
});

Java

@ForIntent("SSML")
public ActionResponse ssml(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  responseBuilder.add(
      "<speak>"
          + "Here are <say-as interpet-as=\"characters\">SSML</say-as> examples."
          + "Here is a buzzing fly "
          + "<audio src=\"https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg\"></audio>"
          + "and here's a short pause <break time=\"800ms\"/>"
          + "</speak>");
  return responseBuilder.build();
}

Node.js

conv.ask(`<speak>` +
  `Here are <say-as interpet-as="characters">SSML</say-as> examples.` +
  `Here is a buzzing fly ` +
  `<audio src="https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg"></audio>` +
  `and here's a short pause <break time="800ms"/>` +
  `</speak>`);
conv.ask('Which response would you like to see next?');

Java

ResponseBuilder responseBuilder = getResponseBuilder(request);
responseBuilder.add(
    "<speak>"
        + "Here are <say-as interpet-as=\"characters\">SSML</say-as> examples."
        + "Here is a buzzing fly "
        + "<audio src=\"https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg\"></audio>"
        + "and here's a short pause <break time=\"800ms\"/>"
        + "</speak>");
return responseBuilder.build();

JSON

মনে রাখবেন, নিচের JSON-এ ওয়েবহুক রেসপন্স বর্ণনা করা হয়েছে।

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "<speak>Here are <say-as interpet-as=\"characters\">SSML</say-as> examples.Here is a buzzing fly <audio src=\"https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg\"></audio>and here's a short pause <break time=\"800ms\"/></speak>"
            }
          },
          {
            "simpleResponse": {
              "textToSpeech": "Which response would you like to see next?"
            }
          }
        ]
      }
    }
  }
}

JSON

মনে রাখবেন, নিচের JSON-এ ওয়েবহুক রেসপন্স বর্ণনা করা হয়েছে।

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ],
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "<speak>Here are <say-as interpet-as=\"characters\">SSML</say-as> examples.Here is a buzzing fly <audio src=\"https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg\"></audio>and here's a short pause <break time=\"800ms\"/></speak>"
              }
            },
            {
              "simpleResponse": {
                "textToSpeech": "Which response would you like to see next?"
              }
            }
          ]
        }
      }
    }
  ]
}

আরও তথ্যের জন্য SSML রেফারেন্স ডকুমেন্টেশন দেখুন।

সাউন্ড লাইব্রেরি

আমাদের সাউন্ড লাইব্রেরিতে আমরা বিভিন্ন ধরনের ফ্রি, ছোট সাউন্ড প্রদান করি। এইসব সাউন্ড আপনার জন্য হোস্ট করা হয়, তাই আপনাকে শুধু SSML-এ এগুলি যোগ করতে হবে।