คำตอบง่ายๆ (Dialogflow)

สำรวจใน Dialogflow

คลิกต่อไปเพื่อนำเข้าตัวอย่างการตอบกลับใน Dialogflow จากนั้นทำตาม ด้านล่างเพื่อปรับใช้และทดสอบตัวอย่าง

  1. ป้อนชื่อ Agent และสร้าง Agent ใหม่ของ Dialogflow สำหรับตัวอย่าง
  2. หลังจากนำเข้าตัวแทนเสร็จแล้ว ให้คลิกไปที่ตัวแทน
  3. จากเมนูการนำทางหลัก ให้ไปที่การดำเนินการตามคำสั่งซื้อ
  4. เปิดใช้เครื่องมือแก้ไขในบรรทัด แล้วคลิกทำให้ใช้งานได้ เครื่องมือแก้ไขมีตัวอย่าง โค้ด
  5. จากเมนูการนำทางหลัก ให้ไปที่ Integrations แล้วคลิก Google Assistant
  6. ในหน้าต่างโมดัลที่ปรากฏขึ้น ให้เปิดใช้แสดงตัวอย่างการเปลี่ยนแปลงอัตโนมัติ แล้วคลิกทดสอบ เพื่อเปิดเครื่องมือจำลอง Actions
  7. ในเครื่องมือจำลอง ให้ป้อน Talk to my test app เพื่อทดสอบตัวอย่าง

คำตอบง่ายๆ จะอยู่ในรูปแบบลูกโป่งแชทและใช้การอ่านออกเสียงข้อความ (TTS) หรือภาษามาร์กอัปการสังเคราะห์เสียง (SSML) สำหรับเสียง

ระบบจะใช้ข้อความ TTS เป็นเนื้อหาลูกโป่งแชทโดยค่าเริ่มต้น หากลักษณะการมองเห็น ข้อความตรงตามความต้องการ คุณไม่จำเป็นต้องระบุข้อความที่แสดงสำหรับแชท

นอกจากนี้คุณยังสามารถอ่านหลักเกณฑ์ในการออกแบบการสนทนาของเราเพื่อเรียนรู้เกี่ยวกับ วิธีใส่องค์ประกอบภาพเหล่านี้ไว้ในการดำเนินการของคุณ

พร็อพเพอร์ตี้

วันที่
รูปที่ 1 ตัวอย่างคำตอบง่ายๆ (สมาร์ทโฟน)

คําตอบแบบง่ายมีข้อกําหนดต่อไปนี้และไม่บังคับ พร็อพเพอร์ตี้ที่คุณสามารถกำหนดค่าได้ ซึ่งได้แก่

  • รองรับบนแพลตฟอร์มที่มี actions.capability.AUDIO_OUTPUT หรือ ความสามารถ actions.capability.SCREEN_OUTPUT รายการ
  • จำนวนอักขระสูงสุด 640 ตัวต่อบับเบิลแชท สตริงที่ยาวกว่าขีดจำกัดคือ ที่ตัดคำแรก (หรือเว้นวรรค) ก่อน 640 อักขระ

  • เนื้อหาลูกโป่งแชทต้องเป็นชุดย่อยการออกเสียงหรือการถอดเสียงที่สมบูรณ์ของ เอาต์พุต TTS/SSML วิธีนี้จะช่วยให้ผู้ใช้เข้าใจสิ่งที่คุณพูดและเพิ่มจำนวน ความเข้าใจในสภาวะต่างๆ ได้

  • บับเบิลแชทไม่เกิน 2 รายการต่อตา

  • ส่วนหัวแชท (โลโก้) ที่คุณส่งถึง Google ต้องมีขนาด 192x192 พิกเซลและ เป็นภาพเคลื่อนไหวไม่ได้

รูปที่ 2 ตัวอย่างคำตอบง่ายๆ (จออัจฉริยะ)

โค้ดตัวอย่าง

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