สร้างแอป Google Chat ของ Dialogflow CX ที่เข้าใจและโต้ตอบด้วยภาษาธรรมชาติ

หน้านี้อธิบายวิธีสร้างแอป Google Chat ที่ทั้ง เข้าใจและตอบด้วยภาษาที่เป็นธรรมชาติโดยใช้ Dialogflow คู่มือนี้ใช้ Dialogflow CX ซึ่งมีการผสานรวมโดยตรงกับ Google Chat นอกจากนี้ คุณยังใช้ Dialogflow ES เพื่อสร้างแอป Google Chat ของ Dialogflow ES ได้โดยทำตามคำแนะนำของ Dialogflow ES Google Chat

ตัวอย่างเช่น ลองพิจารณาแอป Chat ที่ช่วยให้ผู้ใช้เช่ารถได้ ผู้ใช้อาจเขียนว่า "ฉันอยากเช่ารถ" แอป Chat อาจตอบกลับด้วยคำถาม เช่น "คุณต้องการรับรถที่ไหน" ซึ่งจะเริ่มการสนทนา กับผู้ใช้ที่เหมือนมนุษย์ โดยแอป Chat จะ เข้าใจและตอบกลับด้วยคำพูดของมนุษย์ขณะจองรถเช่า

นี่เป็นเพียงตัวอย่างหนึ่ง แอป Chat ของ Dialogflow มีประโยชน์ในการโต้ตอบทุกรูปแบบ หากต้องใช้คำพูดที่เป็นธรรมชาติของมนุษย์ ก็ต้องใช้แอป Dialogflow Chat ซึ่งเอเจนต์ที่สร้างไว้ล่วงหน้าจะช่วยให้คุณเริ่มต้นใช้งานได้อย่างรวดเร็ว และแสดงให้เห็นถึงสิ่งที่ Dialogflow ทำได้ เช่น

  • จองเที่ยวบิน
  • กำหนดเวลานัดหมายแพทย์
  • สั่งอาหาร
  • ตอบคำถามเกี่ยวกับแคตตาล็อกสินค้าค้าปลีก เช่น สินค้ามีสีอื่นหรือไม่
  • หน้าการเลือกเอเจนต์ Dialogflow ที่สร้างไว้ล่วงหน้า
    รูปที่ 1 การเลือก Agent ที่สร้างไว้ล่วงหน้าสำหรับแอป Dialogflow Chat
  • การทดสอบ Agent ใน Dialogflow CX
    รูปที่ 2 ทดสอบ Agent ใน Dialogflow CX เพื่อให้แน่ใจว่าตรรกะและการกำหนดค่าของ Agent ทำงานได้ตามที่ต้องการ แผนภาพแสดงชุดหน้าเว็บตามลำดับที่เกี่ยวข้องกับขั้นตอนที่เฉพาะเจาะจงในการสนทนา เช่น การตั้งค่าสถานที่รับและสถานที่ตั้งสำหรับการคืนสินค้ารถเช่า และกำหนดค่าตรรกะที่เชื่อมต่อหน้าเว็บเหล่านั้น ระบบจะทดสอบการสนทนาในโปรแกรมจำลอง
  • การกำหนดค่าแอปแชท Dialogflow
    รูปที่ 3 การกำหนดค่าแอป Chat เพื่อประมวลผลคำตอบโดยใช้ Agent Dialogflow CX ในหน้าการกำหนดค่า Chat API ในคอนโซล Google Cloud
  • การทดสอบแอปแชทของ Dialogflow CX
    รูปที่ 4 การสนทนาเกี่ยวกับการจองรถเช่าด้วยแอป Dialogflow Chat ใน Google Chat

วัตถุประสงค์

  • ตั้งค่าสภาพแวดล้อม
  • สร้างและติดตั้งใช้งาน Agent ของ Dialogflow CX
  • สร้างและติดตั้งใช้งานแอปใน Chat ที่ขับเคลื่อนโดยเอเจนต์ Dialogflow CX
  • ทดสอบแอป Chat

ข้อกำหนดเบื้องต้น

สถาปัตยกรรม

แผนภาพต่อไปนี้แสดงสถาปัตยกรรมของแอป Chat ที่สร้างด้วย Dialogflow

สถาปัตยกรรมของแอปใน Chat ที่ใช้งานด้วย Dialogflow

ในแผนภาพก่อนหน้า ผู้ใช้ที่โต้ตอบกับแอปแชท Dialogflow จะมีลำดับการไหลของข้อมูลดังนี้

  1. ผู้ใช้ส่งข้อความใน Chat ไปยัง แอป Chat ไม่ว่าจะในข้อความส่วนตัวหรือใน พื้นที่ทำงานใน Chat
  2. เอเจนต์เสมือนของ Dialogflow ซึ่งอยู่ใน Google Cloud จะรับ และประมวลผลข้อความเพื่อสร้างคำตอบ
  3. ไม่บังคับ: การใช้Webhook ของ Dialogflow ช่วยให้เอเจนต์ Dialogflow โต้ตอบกับบริการของบุคคลที่สามภายนอกได้ เช่น ระบบจัดการโปรเจ็กต์หรือเครื่องมือออกตั๋ว
  4. เอเจนต์ Dialogflow จะส่งคำตอบกลับไปยัง บริการแอป Chat ใน Chat
  5. ระบบจะส่งคำตอบไปยังพื้นที่ใน Chat

ตั้งค่าสภาพแวดล้อม

ก่อนใช้ Google API คุณต้องเปิดใช้ API ในโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google คุณเปิด API อย่างน้อย 1 รายการในโปรเจ็กต์ Google Cloud เดียวได้
  1. ในคอนโซล Google Cloud ให้เปิดใช้ Google Chat API และ Dialogflow API

    เปิดใช้ API

  2. ยืนยันว่าคุณกำลังเปิดใช้ API ในโปรเจ็กต์ที่อยู่ในระบบคลาวด์ที่ถูกต้อง แล้วคลิกถัดไป

  3. ยืนยันว่าคุณกำลังเปิดใช้ API ที่ถูกต้อง แล้วคลิกเปิดใช้

สร้าง Agent ของ Dialogflow CX

เอเจนต์ Dialogflow CX คือเอเจนต์เสมือนที่จัดการการสนทนาพร้อมกัน กับผู้ใช้ปลายทาง เป็นโมดูลความเข้าใจภาษาธรรมชาติที่ เข้าใจความแตกต่างของภาษามนุษย์ Dialogflow จะแปลข้อความของผู้ใช้ปลายทาง ระหว่างการสนทนาเป็นข้อมูลที่มีโครงสร้างซึ่งแอปและบริการของคุณ สามารถเข้าใจได้ คุณออกแบบและสร้างเอเจนต์ Dialogflow เพื่อจัดการการสนทนาประเภทต่างๆ ที่ระบบของคุณต้องการ

ตัวแทน Dialogflow ก็เหมือนตัวแทนศูนย์บริการทางโทรศัพท์ที่เป็นมนุษย์ คุณฝึกทั้ง 2 โมเดล เพื่อจัดการสถานการณ์การสนทนาที่คาดไว้ และการฝึกไม่จำเป็นต้อง ชัดเจนมากเกินไป

วิธีสร้าง Agent ของ Dialogflow CX มีดังนี้

  1. ในคอนโซล Dialogflow CX ให้เปิดคอนโซล Dialogflow CX คลิก เมนู > Dialogflow CX

    ไปที่คอนโซล Dialogflow CX

  2. เลือกโปรเจ็กต์ Google Cloud หากต้องการค้นหาโปรเจ็กต์ คุณอาจต้อง คลิกทั้งหมด แล้วค้นหา

  3. ตอนนี้คุณมีตัวเลือกในการเลือก Agent ที่สร้างไว้ล่วงหน้าหรือ สร้าง Agent ของคุณเอง หากต้องการสำรวจการปรับแต่ง Agent โดยละเอียดในภายหลัง ให้เลือกเอเจนต์ที่สร้างไว้ล่วงหน้า ซึ่งจะช่วยให้คุณทราบสิ่งที่ Agent ทำได้

    หากต้องการเลือกเอเจนต์ที่สร้างไว้ล่วงหน้า ให้ทำตามขั้นตอนต่อไปนี้

    1. คลิกใช้เอเจนต์ที่สร้างไว้ล่วงหน้า
    2. เลือกเอเจนต์ที่สร้างไว้ล่วงหน้า สำหรับคู่มือนี้ ให้เลือก การเดินทาง: บริการเช่ารถ

      ระบบจะจัดประเภท Agent เป็นระดับเริ่มต้น ระดับกลาง หรือระดับสูง โดยพิจารณาจากจำนวนฟีเจอร์ที่ Agent ใช้ และตามความซับซ้อนของตรรกะการสนทนา การเลือกเอเจนต์ระดับกลางหรือระดับสูงอาจต้องมีการปรับแต่งและการตั้งค่าเฉพาะเอเจนต์ ซึ่งรวมถึงการเปิดใช้ฟีเจอร์และ API ในคอนโซล Google Cloud

    3. คลิกนำเข้าในฐานะตัวแทน

    หากต้องการสร้างเอเจนต์ของคุณเอง ให้ทำตามขั้นตอนต่อไปนี้

    1. คลิกสร้างเอเจนต์
    2. เลือกสร้างโดยอัตโนมัติเพื่อสร้าง เอเจนต์ที่เก็บข้อมูล หรือเลือกสร้างเองเพื่อสร้างเอเจนต์ประเภทอื่นๆ

    ดูคำแนะนำแบบทีละขั้นตอนโดยละเอียดเกี่ยวกับกระบวนการสร้าง Agent ได้ที่สร้าง Agent ของ Dialogflow CX

  4. กำหนดการตั้งค่าพื้นฐานของเอเจนต์

    1. ในส่วนชื่อที่แสดง ให้ป้อนชื่อที่แสดง
    2. เลือกสถานที่ที่ต้องการ หากต้องการเปลี่ยน การตั้งค่าตำแหน่งขั้นสูง ให้คลิกแก้ไข
    3. เลือกเขตเวลาที่ต้องการ
    4. เลือกภาษาเริ่มต้นสำหรับตัวแทน คุณจะเปลี่ยนภาษาเริ่มต้นของเอเจนต์หลังจากสร้างแล้วไม่ได้
  5. คลิกสร้าง Dialogflow CX จะเริ่มสร้าง Agent แล้วแสดงโฟลว์เริ่มต้นเริ่มต้นของ Agent

  6. ปรับแต่งเอเจนต์ (ไม่บังคับ) ดูคำแนะนำแบบทีละขั้นตอนโดยละเอียดเกี่ยวกับกระบวนการปรับแต่งเอเจนต์ได้ที่สร้างเอเจนต์ Dialogflow CX

  7. แนวทางปฏิบัติแนะนำคือการทดสอบเอเจนต์

    1. คลิกทดสอบเอเจนต์
    2. เลือกทดสอบเอเจนต์ในสภาพแวดล้อม
    3. เลือกฉบับร่างในสภาพแวดล้อม
    4. ใน Flow ให้เลือก Default Start Flow
    5. ใน Page ให้เลือก Start Page
    6. ในช่องสำหรับเขียนของพูดคุยกับตัวแทน ให้พิมพ์ Hello แล้วกด Enter Agent จะตอบกลับด้วยการแนะนำตัว
    7. ทำการทดสอบให้เสร็จสมบูรณ์โดยสนทนาทดสอบตัวอย่าง
  8. สร้าง Agent Dialogflow CX แล้ว กลับไปที่คอนโซล Dialogflow CX คลิกเมนู > Dialogflow CX

    ไปที่คอนโซล Dialogflow CX

  9. ในส่วนเอเจนต์ ให้คลิก > คัดลอกชื่อ บันทึกชื่อนี้ไว้ เนื่องจาก คุณจะใช้ชื่อนี้เมื่อกำหนดค่าแอป Chat

สร้างแอป Chat และเชื่อมต่อกับเอเจนต์ Dialogflow

หลังจากสร้างเอเจนต์ Dialogflow CX แล้ว ให้ทำตามขั้นตอนต่อไปนี้เพื่อเปลี่ยนเอเจนต์ให้เป็นแอปแชท

  1. ในคอนโซล Google Cloud ให้ไปที่ Google Chat API ค้นหา "Google Chat API" แล้วคลิก Google Chat API จากนั้นคลิกจัดการ

    ไปที่ Chat API

  2. คลิกการกำหนดค่า แล้วตั้งค่าแอป Chat ดังนี้

    1. ในส่วนชื่อแอป ให้ป้อน Dialogflow App
    2. ใน URL อวตาร ให้ป้อน https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png
    3. ในคำอธิบาย ให้ป้อน Responds to real human conversation
    4. ในส่วนฟังก์ชันการทำงาน ให้เลือกเข้าร่วมพื้นที่ทำงานและการสนทนากลุ่ม
    5. ในส่วนการตั้งค่าการเชื่อมต่อ ให้เลือก Dialogflow
    6. ในส่วนการตั้งค่า Dialogflow ให้เลือก Dialogflow CX
    7. ในชื่อทรัพยากรของ Agent หรือสภาพแวดล้อม ให้วางชื่อ Agent ของ Dialogflow CX ที่คุณคัดลอกไว้ที่ส่วนท้ายของ สร้าง Agent ของ Dialogflow CX
    8. ทำให้แอป Chat นี้พร้อมใช้งานสำหรับบุคคลและกลุ่มที่เฉพาะเจาะจง ในโดเมนของคุณ แล้วป้อนอีเมล
    9. ในส่วนบันทึก ให้เลือกบันทึกข้อผิดพลาดไปยังการบันทึก
  3. คลิกบันทึก

แอป Chat พร้อมรับและตอบกลับ ข้อความใน Chat แล้ว

ทดสอบแอป Chat

ทดสอบแอปแชท Dialogflow CX โดยส่งข้อความถึงแอปใน Google Chat

  1. เปิด Google Chat โดยใช้บัญชี Google Workspace ที่คุณ ระบุไว้เมื่อเพิ่มตัวเองเป็นผู้ทดสอบที่เชื่อถือได้

    ไปที่ Google Chat

  2. คลิก แชทใหม่
  3. ในช่องเพิ่มบุคคลอย่างน้อย 1 คน ให้พิมพ์ชื่อแอป Chat
  4. เลือกแอป Chat จากผลการค้นหา ข้อความส่วนตัวจะเปิดขึ้น

  5. ในข้อความส่วนตัวใหม่กับแอป ให้พิมพ์ Hello แล้ว กด enter

    แอป Dialogflow Chat จะตอบกลับด้วยการแนะนำตัว

  6. ทำการทดสอบให้เสร็จสมบูรณ์โดยมีการสนทนาทดสอบตัวอย่าง

ตัวอย่างการสนทนาทดสอบ

หากต้องการทดสอบแอปแชท Dialogflow CX ในคอนโซล Dialogflow CX หรือใน Google Chat ให้สนทนาตามตัวอย่างต่อไปนี้ คำอธิบายจะช่วยให้คุณเข้าใจวิธีที่เอเจนต์ Dialogflow CX ตีความภาษาธรรมชาติของผู้ใช้และสร้างคำตอบเป็นภาษาธรรมชาติของตัวเองในแต่ละขั้นตอนของการสนทนา การสนทนาตัวอย่างนี้อิงตามเอเจนต์ที่สร้างไว้ล่วงหน้า ชื่อ Travel: car rental

Dialog คำอธิบาย
ผู้ใช้ปลายทาง: สวัสดี
ตัวแทน: สวัสดี ฉันคือตัวแทนรถเช่าเสมือน ฉันช่วยคุณ เริ่มการจองรถเช่าใหม่ได้ วันนี้คุณต้องการความช่วยเหลือในเรื่องใด
  1. ระบบจะเรียกเส้นทาง Default Welcome Intent ใน Default Start Flow
  2. การดำเนินการตามคำสั่งซื้อสำหรับตัวแฮนเดิลสถานะนี้ ("สวัสดี ฉัน...") จะเพิ่มลงในคิวการตอบกลับ
  3. Agent จะส่งคิวการตอบกลับไปยังผู้ใช้ปลายทาง
ผู้ใช้ปลายทาง: ฉันต้องการเช่ารถ
ตัวแทน: คุณต้องการรับรถที่ใด
  1. ระบบจะจับคู่เส้นทาง Intent car_rental.reservation_create ในหน้าเริ่มต้น
  2. เซสชันจะเปลี่ยนไปที่หน้าสถานที่ตั้งสำหรับรับเงินสด
  3. แบบฟอร์มหน้าสถานที่รับสินค้ายังไม่สมบูรณ์ ดังนั้น Agent จึงใช้พารามิเตอร์ pickup_location เพื่อแจ้งให้ผู้ใช้ทราบ ("คุณต้องการรับสินค้าที่ใด") ซึ่งจะเพิ่มลงในคิวการตอบกลับ
  4. Agent จะส่งคิวการตอบกลับไปยังผู้ใช้ปลายทาง
ผู้ใช้ปลายทาง: ลาสเวกัส
ตัวแทน: โอเค การรับสินค้าของคุณจะอยู่ในลาสเวกัส
ตัวแทน: สถานที่ส่งแตกต่างจากสถานที่รับ ใช่ไหม
  1. อินพุตของผู้ใช้ปลายทางจะกรอกพารามิเตอร์ pickup_location ที่ Agent ร้องขอในการสนทนาก่อนหน้า
  2. ระบบจะจับคู่เจตนา car_rental.return_different_location ในขั้นตอนการเริ่มต้นเริ่มต้น
  3. ระบบจะประเมินและเรียกเส้นทางการกรอกแบบฟอร์มในหน้าสถานที่รับ โดยมีข้อความตอบกลับ ("โอเค การรับสินค้า...") ซึ่งจะเพิ่มลงในคิวการตอบกลับพร้อมการอ้างอิงพารามิเตอร์ที่แปลงเป็นค่าจริงซึ่งผู้ใช้ปลายทางระบุ
  4. เซสชันจะเปลี่ยนไปที่หน้ายืนยันตำแหน่ง
  5. หน้ายืนยันสถานที่มีรายการการดำเนินการตามคำสั่ง ("สถานที่ส่งของคุณแตกต่างกันไหม...") ซึ่งจะเพิ่มลงในคิวการตอบกลับ
  6. Agent จะส่งคิวการตอบกลับไปยังผู้ใช้ปลายทาง
ผู้ใช้ปลายทาง: ได้ ฉันจะคืนรถที่ลอสแอนเจลิส
ตัวแทน: โอเค จุดส่งของคุณจะอยู่ในลอสแอนเจลิส
ตัวแทน: คุณต้องการรับรถวันและเวลาใด
  1. ระบบจะจับคู่เจตนา car_rental.return_different_location ในขั้นตอนการเริ่มต้นเริ่มต้น
  2. เซสชันจะเปลี่ยนไปที่หน้าสถานที่ทิ้ง
  3. ข้อมูลที่ผู้ใช้ปลายทางป้อนจะเติมพารามิเตอร์ drop_off_location ที่ Agent ร้องขอในการสนทนาก่อนหน้า
  4. ระบบจะประเมินและเรียกเส้นทางการกรอกแบบฟอร์มในหน้าสถานที่ส่ง โดยมีข้อความตอบกลับ ("โอเค การส่งของคุณ...") ซึ่งจะเพิ่ม ลงในคิวการตอบกลับ
  5. เซสชันจะเปลี่ยนไปที่หน้าระยะเวลาเช่า
  6. หน้าระยะเวลาการเช่ามีค่าแบบฟอร์มไม่สมบูรณ์ จึงแจ้งให้ผู้ใช้ระบุพารามิเตอร์ pickup_date_time ("คุณต้องการรับรถวันที่และเวลาใด") ซึ่งจะเพิ่มลงในคิวการตอบกลับ
  7. Agent จะส่งคิวการตอบกลับไปยังผู้ใช้ปลายทาง
ผู้ใช้ปลายทาง: ฉันต้องการรับรถในวันที่ 5 มีนาคมตอนเที่ยง
ตัวแทน: คุณต้องการนำรถมาส่งวันและเวลาใด
  1. ข้อมูลที่ผู้ใช้ปลายทางป้อนจะกรอกพารามิเตอร์ pickup_date_time ที่ Agent ร้องขอใน การสนทนาก่อนหน้า
  2. หน้าระยะเวลาการเช่ามีค่าแบบฟอร์มที่ขาดหายไปอีก จึงแจ้งให้ผู้ใช้ระบุพารามิเตอร์ drop_off_date_time ("คุณต้องการคืนรถวันที่และเวลาใด") ซึ่งจะเพิ่มลงในคิวการตอบกลับ
  3. Agent จะส่งคิวการตอบกลับไปยังผู้ใช้ปลายทาง
ผู้ใช้ปลายทาง: 15 มีนาคม เวลา 12:00 น.
ตัวแทน: เพื่อยืนยัน

คุณจะรับรถที่ ลาสเวกัส 2024-03-05 12:00:00 และส่งคืนที่ ลอสแอนเจลิส 2024-03-15 12:00:00

ข้อมูลถูกต้องไหม
  1. ข้อมูลที่ผู้ใช้ปลายทางป้อนจะเติมพารามิเตอร์ drop_off_date_time ที่ Agent ร้องขอใน การสนทนาก่อนหน้า
  2. เซสชันจะเปลี่ยนไปที่หน้ายืนยันระยะเวลาการเช่า
  3. หน้ายืนยันระยะเวลาการเช่ามีรายการที่ดำเนินการ ("ดังนั้นเพื่อยืนยัน...") ซึ่งจะเพิ่มลงในคิวการตอบกลับ
  4. Agent จะส่งคิวการตอบกลับไปยังผู้ใช้ปลายทาง
ผู้ใช้ปลายทาง: ได้ ขอบคุณ
ตัวแทน: ยอดเยี่ยม ตอนนี้มาเลือกรถกัน
ตัวแทน: คุณต้องการรถราคาประหยัดหรือรถหรู
  1. ระบบจะจับคู่เส้นทางของ Intent small_talk.confirmation.yes ในหน้ายืนยันระยะเวลาการเช่า
  2. ตัวแทนจะยืนยันตัวเลือกของผู้ใช้ด้วยข้อความ ("ยอดเยี่ยม มาเลือกกันเลย"), ซึ่งจะเพิ่มลงในคิวการตอบกลับ
  3. เซสชันจะเปลี่ยนไปที่หน้าการแยกความกำกวมของยานพาหนะ
  4. แบบฟอร์มหน้าการแยกความกำกวมของยานพาหนะไม่สมบูรณ์ ดังนั้น Agent จึงใช้พารามิเตอร์ vehicle_type เพื่อแจ้งให้ผู้ใช้ทราบ ("คุณต้องการรถยนต์แบบประหยัดหรือหรูหรา...") ซึ่งจะเพิ่มลงในคิวการตอบกลับ
  5. Agent จะส่งคิวการตอบกลับไปยังผู้ใช้ปลายทาง
ผู้ใช้ปลายทาง: ขอแบบประหยัด
ตัวแทน: คุณต้องการรถยนต์หรือรถบรรทุกของ Cymbal
  1. ระบบจะจับคู่เส้นทางของเจตนา $session.params.vehicle_type="economy_vehicle"
  2. เซสชันจะเปลี่ยนไปที่หน้าตัวเลือกทางเศรษฐกิจ
  3. หน้าตัวเลือกทางเศรษฐกิจมีรายการที่ต้องดำเนินการ ("คุณต้องการ...") ซึ่งจะเพิ่มลงในคิวการตอบกลับ
  4. Agent จะส่งคิวการตอบกลับไปยังผู้ใช้ปลายทาง
ผู้ใช้ปลายทาง: Cymbal Truck
ตัวแทน: รถบรรทุก Cymbal มีราคา $50.33 ต่อวัน รถคันนี้จุคนได้ 4 คนและมีวิทยุ AM/FM คุณต้องการดำเนินการชำระเงินไหม
ผู้ใช้ปลายทาง: ได้
  1. Intent $session.params.vehicle_type="Cymbal Truck" จะตรงกับเส้นทางและระบบจะป้อนค่าพารามิเตอร์ vehicle_model
  2. เซสชันจะเปลี่ยนไปที่หน้ายืนยัน Cymbal Truck
  3. หน้ายืนยันรถบรรทุก Cymbalมีรายการ Fulfillment ("รถบรรทุก Cymbal ราคา $50.33 ต่อวัน...") ซึ่งจะเพิ่มลงในคิวการตอบกลับ
  4. Agent จะส่งคิวการตอบกลับไปยังผู้ใช้ปลายทาง
  5. คำตอบของผู้ใช้ตรงกับเส้นทาง small_talk.confirmation.yes
ตัวแทน: คุณจะใช้บัตรประเภทใด
ผู้ใช้ปลายทาง: Altostrat
ตัวแทน: โปรดป้อนหมายเลขบัตรเครดิต
ผู้ใช้ปลายทาง: 1234 1234 1234 1234
ตัวแทน: ชื่อบนบัตรคืออะไร
ผู้ใช้ปลายทาง: ชาร์ลี
ตัวแทน: ที่อยู่สำหรับการเรียกเก็บเงินคืออะไร
ผู้ใช้ปลายทาง: 1800 Amphibious Blvd. Mountain View, CA
ตัวแทน: รหัสไปรษณีย์สำหรับการเรียกเก็บเงินคืออะไร
ผู้ใช้ปลายทาง: 94045
ตัวแทน: คุณจะรับรถ Cymbal ในลาสเวกัส วันที่ 05-03-2024 เวลา 12:00:00 และส่งคืนวันที่ 15-03-2024 เวลา 12:00:00 ราคารวมสำหรับการเดินทางนี้คือ $175.38
ตัวแทน: ขอขอบคุณที่เช่ากับเราและขอให้มีความสุข
  1. ระบบจะเปลี่ยนเซสชันไปที่หน้าการชำระเงิน
  2. แบบฟอร์มการชำระเงินยังไม่สมบูรณ์ ดังนั้นเอเจนต์จึงแจ้งให้ ผู้ใช้ระบุพารามิเตอร์ card_type, card_number, billing_name, billing_street_address และ billing_zip_code ("คุณจะใช้บัตรประเภทใด...") ซึ่งจะเพิ่มลงในคิวการตอบกลับตามลำดับและส่งเมื่อผู้ใช้ตอบกลับ คำตอบของผู้ใช้จะกำหนดค่าพารามิเตอร์แต่ละค่า
  3. เซสชันจะเปลี่ยนไปที่หน้าการยืนยันการเช่า
  4. หน้าการยืนยันการเช่ามีรายการการดำเนินการตามคำสั่ง ("โอเค การรับของคุณจะเป็น...") ซึ่งจะเพิ่มลงในคิวการตอบกลับ
  5. Agent จะส่งคิวการตอบกลับไปยังผู้ใช้ปลายทาง
  6. เซสชันจะเปลี่ยนไปที่หน้าสิ้นสุดเซสชัน

ส่งข้อความการ์ดจาก Dialogflow

Dialogflow สามารถตอบกลับด้วยข้อความข้อความหรือการ์ด หากต้องการตอบกลับด้วยข้อความการ์ด ให้ระบุเป็นเพย์โหลดที่กำหนดเองในการดำเนินการตามคำสั่ง

JSON ต่อไปนี้แสดงวิธีส่งข้อความการ์ดเป็นเพย์โหลดที่กำหนดเองในการดำเนินการตามคำสั่ง

json

{ "hostAppDataAction": { "chatDataAction": { "createMessageAction": {
  "message": { "cardsV2": [{
    "cardId": "createCardMessage",
    "card": {
      "header": {
        "title": "A card message!",
        "subtitle": "Sent from Dialogflow",
        "imageUrl": "https://developers.google.com/chat/images/chat-product-icon.png",
        "imageType": "CIRCLE"
      },
      "sections": [{ "widgets": [{ "buttonList": { "buttons": [{
        "text": "Read the docs!",
        "onClick": { "openLink": {
          "url": "https://developers.google.com/workspace/chat"
        }}
      }]}}]}]
    }
  }]}
}}}}

ข้อจำกัดและข้อควรพิจารณา

  • เมื่อใช้แอป Google Chat กับ Dialogflow ออบเจ็กต์เหตุการณ์แชท จะมีข้อจำกัดและข้อควรพิจารณาดังนี้
    • เหตุการณ์ในหน้าแรกของแอป: ระบบยังไม่รองรับเหตุการณ์ APP_HOME
    • อินพุตการค้นหา Dialogflow: ข้อความที่ส่งเป็นอินพุตการค้นหาไปยัง เอเจนต์ Dialogflow จะขึ้นอยู่กับประเภทเหตุการณ์ ดังนี้
      • MESSAGE: ค่าของฟิลด์ argumentText จาก ข้อความแชท
      • APP_COMMAND: สตริง "APP_COMMAND_PAYLOAD"
      • ADDED_TO_SPACE: สตริง "ADDED_TO_SPACE_PAYLOAD"
      • REMOVED_FROM_SPACE: สตริง "REMOVED_FROM_SPACE_PAYLOAD"
      • CARD_CLICKED: สตริง "BUTTON_CLICKED_PAYLOAD"
      • WIDGET_UPDATED: สตริง "WIDGET_UPDATED_PAYLOAD" (ใช้สำหรับ การเติมข้อความอัตโนมัติ)
    • เพย์โหลดเหตุการณ์แบบเต็ม: ระบบจะส่งเพย์โหลด JSON แบบเต็มของ เหตุการณ์การโต้ตอบในแชทไปยัง Dialogflow ภายในฟิลด์ WebhookRequest.payload คุณเข้าถึงข้อมูลนี้ได้ใน Webhook ของ Dialogflow ดูข้อมูลเพิ่มเติมได้ที่ เอกสารประกอบเกี่ยวกับคำขอ Webhook ของ Dialogflow CX
  • ข้อควรพิจารณาในการตอบกลับคำสั่งและรับข้อมูลจากการ์ดหรือกล่องโต้ตอบ
  • ไม่รองรับตัวอย่างลิงก์
  • หากเอเจนต์ Dialogflow ตอบกลับด้วยข้อความเพียงข้อความเดียว ระบบจะส่งข้อความ ไปยัง Google Chat แบบซิงโครนัส หากเอเจนต์ Dialogflow ตอบกลับ ด้วยข้อความหลายรายการ ระบบจะส่งข้อความทั้งหมดไปยัง Chat แบบไม่พร้อมกันโดยการเรียกใช้เมธอด create ในทรัพยากร spaces.messages ใน Chat API 1 ครั้งต่อข้อความ
  • เมื่อใช้การผสานรวม Dialogflow CX กับ Chat คุณต้องตั้งค่าเอเจนต์ Dialogflow และแอป Chat ในโปรเจ็กต์ Google Cloud เดียวกัน หากต้องการตั้งค่า Dialogflow และ Chat ในโปรเจ็กต์ที่อยู่ในระบบคลาวด์ที่แตกต่างกัน คุณสามารถ ตั้งค่าเซิร์ฟเวอร์กลางเพื่ออำนวยความสะดวกในการเชื่อมต่อได้ ดูวิธีได้ที่ตัวอย่างการผสานรวม Chat สำหรับ Dialogflow CX ใน GitHub

แก้ปัญหา

หากต้องการแก้ไขข้อบกพร่องของแอป Chat ให้เริ่มด้วยการตรวจสอบบันทึกข้อผิดพลาด เนื่องจากแอปนี้ใช้ Dialogflow คุณจึงมีแหล่งข้อมูลการบันทึกและการแก้ปัญหาหลายอย่างให้ใช้งานได้ ดังนี้

  • บันทึกของส่วนเสริม Google Workspace: บันทึกการค้นหาสำหรับ ข้อมูลโดยละเอียดเกี่ยวกับลักษณะการทำงานของแอป Chat รวมถึงการโต้ตอบกับ Chat ดูบันทึกการค้นหาสําหรับส่วนเสริมของ Google Workspace

  • ข้อผิดพลาดของแอป Google Chat: สำหรับข้อความแสดงข้อผิดพลาดและการแก้ไขทั่วไปของแอป Chat โปรดดูแก้ปัญหาและแก้ไขข้อผิดพลาดของแอป Chat

  • การบันทึกใน Cloud ของ Dialogflow CX: ตรวจสอบว่าได้เปิดใช้การบันทึกใน Cloud ในการตั้งค่า Agent ของ Dialogflow เพื่อบันทึกรายละเอียดการดำเนินการ รวมถึงข้อผิดพลาดจาก Agent และการโต้ตอบของ Webhook ดูวิธีเปิดใช้และกำหนดค่าได้ในเอกสารประกอบการตั้งค่า Agent ของ Dialogflow CX คุณดูบันทึกเหล่านี้ได้ใน Logs Explorer ของคอนโซล Google Cloud

  • ประวัติการสนทนาของ Dialogflow CX: ตรวจสอบการโต้ตอบที่ผ่านมาเพื่อทำความเข้าใจโฟลว์การสนทนาและระบุจุดที่เกิดปัญหา ดูประวัติการสนทนา

  • การแก้ปัญหาทั่วไปของ Dialogflow: หากพบปัญหาที่กว้างขึ้นใน Dialogflow โปรดดูคู่มือการแก้ปัญหาของ Dialogflow CX

ล้างข้อมูล

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

  1. ในคอนโซล Google Cloud ให้ไปที่หน้าจัดการทรัพยากร คลิก เมนู > IAM และผู้ดูแลระบบ > จัดการทรัพยากร

    ไปที่เครื่องมือจัดการทรัพยากร

  2. ในรายการโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการลบ แล้วคลิก ลบ
  3. ในกล่องโต้ตอบ ให้พิมพ์รหัสโปรเจ็กต์ แล้วคลิกปิดเพื่อลบ โปรเจ็กต์
  • Dialogflow CX ใช้แนวทาง เครื่องสถานะ ในการออกแบบเอเจนต์ Dialogflow ซึ่งช่วยให้คุณควบคุมการสนทนาได้อย่างชัดเจนและตรงไปตรงมา รวมถึงมอบประสบการณ์การใช้งานที่ดียิ่งขึ้นแก่ผู้ใช้ปลายทางและ เวิร์กโฟลว์การพัฒนาที่ดียิ่งขึ้น เมื่อสร้างแอป Dialogflow Chat เราขอแนะนำให้ใช้ Dialogflow CX
  • Dialogflow ES เป็นอีกวิธีหนึ่งในการใช้ Dialogflow กับแอปแชท

แอปใน Chat ที่ไม่ใช่ส่วนเสริม: สร้างแอป Google Chat ของ Dialogflow CX

หากคุณกำลังสร้างหรือบำรุงรักษาแอป Chat ที่ไม่ใช่ส่วนเสริม Google Workspace โปรดทราบความแตกต่างในการกำหนดค่า เพย์โหลด และเหตุการณ์ต่อไปนี้

กำหนดค่าแอปแชท Dialogflow CX ที่ไม่ใช่ส่วนเสริม

เมื่อกำหนดค่า Google Chat API ในคอนโซล Google Cloud ให้ทำดังนี้

  1. เลือกสร้างแอป Chat นี้เป็นส่วนเสริมของ Google Workspace กล่องโต้ตอบจะเปิดขึ้นเพื่อขอให้คุณยืนยัน คลิกปิดใช้ในกล่องโต้ตอบ
  2. ตั้งค่า Dialogflow CX ที่เหลือให้เสร็จสมบูรณ์ แล้วคลิกบันทึก

ส่งข้อความการ์ดจากแอป Chat ของ Dialogflow CX ที่ไม่ใช่ส่วนเสริม

ในแอป Chat ที่ไม่ใช่ส่วนเสริม ให้ระบุcardsV2 ออบเจ็กต์ระดับบนสุดในเพย์โหลดที่กำหนดเองของ Dialogflow ใน Fulfillment ดังนี้

json

{
  "cardsV2": [{
    "cardId": "createCardMessage",
    "card": {
      "header": {
        "title": "A card message!",
        "subtitle": "Sent from Dialogflow",
        "imageUrl": "https://developers.google.com/chat/images/chat-product-icon.png",
        "imageType": "CIRCLE"
      },
      "sections": [
        {
          "widgets": [
            {
              "buttonList": {
                "buttons": [
                  {
                    "text": "Read the docs!",
                    "onClick": {
                      "openLink": {
                        "url": "https://developers.google.com/workspace/chat"
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      ]
    }
  }]
}

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

  • เหตุการณ์การโต้ตอบในแชท มีการรองรับและข้อควรพิจารณาต่อไปนี้
    • ระบบรองรับ ประเภทเหตุการณ์การโต้ตอบ ต่อไปนี้
      • MESSAGE
      • ADDED_TO_SPACE
      • CARD_CLICKED
    • สําหรับเหตุการณ์ MESSAGE หรือ ADDED_TO_SPACE อินพุตการค้นหาที่ส่งไปยังเอเจนต์ Dialogflow จะสอดคล้องกับค่าของฟิลด์ argumentText ใน ข้อความแชท หากข้อความมีคำสั่งเครื่องหมายทับ ระบบจะใช้ค่าของฟิลด์ text แทน
    • สําหรับCARD_CLICKEDเหตุการณ์ ระบบจะจัดรูปแบบอินพุตการค้นหาที่ส่งไปยังเอเจนต์ Dialogflow เป็น CARD_CLICKED.functionName โดยที่ functionName สอดคล้องกับค่าของฟิลด์ function ของออบเจ็กต์ Action ที่แนบมากับองค์ประกอบการ์ดแบบอินเทอร์แอกทีฟ (เช่น ปุ่ม)
    • ระบบจะส่งเพย์โหลด JSON แบบเต็มของเหตุการณ์การโต้ตอบใน Chat แต่ละรายการ ไปยัง Dialogflow เป็นเพย์โหลดที่กำหนดเองในพารามิเตอร์การค้นหา และ เข้าถึงได้ด้วย Webhook ของ Dialogflow โดยการค้นหาค่าของฟิลด์ WebhookRequest.payload
  • ข้อควรพิจารณาในการตอบกลับคำสั่งเครื่องหมายทับและรับข้อมูลจากการ์ดหรือกล่องโต้ตอบใน แอป Chat ที่ไม่ใช่ส่วนเสริม
    • เมื่อแอป Dialogflow Chat ที่ไม่ใช่ ส่วนเสริมได้รับข้อความที่มี คำสั่ง Slash อินพุตการค้นหาจะมีเฉพาะค่าของฟิลด์ text ฟิลด์ text จะขึ้นต้นด้วยชื่อของคำสั่งเครื่องหมายทับ (เช่น /command) ซึ่งคุณใช้กำหนดค่าเจตนาของเอเจนต์ Dialogflow เพื่อตรวจหาคำสั่งเครื่องหมายทับได้
    • หากต้องการแสดงกล่องโต้ตอบจากเอเจนต์ Dialogflow ในแอป Chat ที่ไม่ใช่ ส่วนเสริม ให้ตอบกลับด้วย เพย์โหลด JSON ที่กำหนดเองรายการเดียวซึ่งมีข้อความที่มีDIALOG การตอบกลับการดำเนินการ
    • หากต้องการประมวลผลข้อมูลที่ป้อนจากการ์ดใน แอป Chat ที่ไม่ใช่ ส่วนเสริม เอเจนต์ Dialogflow จะตรวจหา เจตนาที่ขึ้นต้นด้วยข้อความ CARD_CLICKED และตอบกลับด้วย เพย์โหลด JSON ที่กำหนดเองรายการเดียวซึ่งมี การดำเนินการที่เหมาะสม