Intent ในตัว (Dialogflow)

แบบบิวท์อินคือตัวระบุที่ไม่ซ้ำซึ่งคุณจะระบุเพื่อให้ Google Assistant ว่าการดำเนินการของคุณจะเติมเต็มหมวดหมู่ที่เจาะจงให้ผู้ใช้ได้ คำขอ ลองดูตัวอย่างคำค้นหาของผู้ใช้ที่ Assistant จะจับคู่กับ Intent ในตัว

  • "เล่นเกม" Intent ในตัว: "Ok Google เล่นเกมทดสอบความจำ"
  • "ดูดวงชะตา" Intent ในตัว: "Ok Google ดูดวงชะตาของฉัน"

ในระหว่าง Action discovery, Assistant จะใช้ ข้อมูลเมตาเกี่ยวกับการดำเนินการของคุณ รวมถึง Intent ในตัวที่คุณระบุไว้ เพื่อแนะนำการดำเนินการของคุณให้กับผู้ใช้ เพื่อลดการสื่อสารไป-กลับให้น้อยที่สุด Assistant จะพยายามสแกนพารามิเตอร์จากคำค้นหาของผู้ใช้ด้วย และส่งต่อไปยังการดำเนินการของคุณ

หากต้องการดูรายการ Intent ในตัวทั้งหมดที่ Assistant รองรับ รวมถึงพารามิเตอร์และตัวอย่างข้อความค้นหาของผู้ใช้ ข้อมูลอ้างอิง Intent ในตัว

ผสานรวม Intent ในตัว

การสร้างการดำเนินการมีหลายวิธี ขึ้นอยู่กับวิธีที่คุณสร้างการดำเนินการ ผสานรวม Intent ในตัว

Dialogflow

หากใช้ Dialogflow เพื่อสร้างการดำเนินการ คุณสามารถแนบ Intent ในตัวได้ กราฟิกจากคอนโซล Dialogflow

หากต้องการแนบ Intent ในตัวกับ Dialogflow ให้ทำตามขั้นตอนต่อไปนี้

  1. เปิดคอนโซล Dialogflow เลือกตัวแทนของคุณ จากนั้นไปที่ หน้าจอ Intent
  2. สร้างหรือเลือก Intent ที่ Agent ของคุณทริกเกอร์เมื่อได้รับ Intent ในตัวที่เฉพาะเจาะจง เปิดส่วนเหตุการณ์ แล้วคลิกเพิ่ม กิจกรรม

    วันที่
    รูปที่ 1 การเพิ่มเหตุการณ์ Dialogflow ในคอนโซล Dialogflow
  3. ในช่องเหตุการณ์ ให้พิมพ์ชื่อเหตุการณ์ Intent ในตัวสำหรับ (เช่น actions_intent_PLAY_GAME)

    วันที่
    รูปที่ 2 การแนบ Intent ในตัวกับตัวแทนในคอนโซล Dialogflow
  4. คลิกบันทึก

Actions SDK

หากใช้ Actions SDK เพื่อสร้างการดำเนินการ คุณต้องระบุ การจับคู่ระหว่าง Intent ในตัวกับ Actions ในแพ็กเกจการดำเนินการของคุณ

หากต้องการแนบ Intent ในตัวกับ Actions SDK ให้ทำตามขั้นตอนต่อไปนี้

  1. ระบุ Intent ในตัวในช่องชื่อในคำจำกัดความการดำเนินการ
  2. อัปโหลดแพ็กเกจการดำเนินการไปยังโปรเจ็กต์การดำเนินการโดยใช้เครื่องมือ gactions เป็น ตามที่อธิบายไว้ในภาพรวมของ Actions SDK

ตัวอย่างเช่น ข้อมูลโค้ดต่อไปนี้แสดงวิธีการเพิ่ม CHECK_AIR_QUALITY Intent ในตัว:

{
   "actions":[
      {
         "description":"Default Welcome Intent",
         "name":"MAIN",
         "fulfillment":{
            "conversationName":"conversation_1"
         },
         "intent":{
            "name":"actions.intent.MAIN"
         }
      },
      {
         "description":"Check Air Quality",
         "name":"CHECK_AIR_QUALITY",
         "fulfillment":{
            "conversationName":"conversation_1"
         },
         "intent":{
            "name":"actions.intent.CHECK_AIR_QUALITY"
         }
      }
   ],
   "conversations":{
      "conversation_1":{
         "name":"conversation_1",
         "url":"https://example.com/fulfillment",
         "fulfillmentApiVersion":2
      }
   }
}

จัดการพารามิเตอร์ Intent ในตัว

เมื่อการดำเนินการของคุณเรียกใช้ผ่าน Intent ในตัว การดำเนินการตามคำสั่งซื้ออาจ ได้รับพารามิเตอร์เพิ่มเติม สคีมา Intent กำหนดชื่อของ และประเภทของพารามิเตอร์เป็นประเภทพื้นฐานหรือ schema.org เอนทิตี หากต้องการดูสคีมาสำหรับ Intent ในตัวของการดำเนินการแบบการสนทนา ให้ดู ข้อมูลอ้างอิง Intent ในตัว

คุณจะใช้พารามิเตอร์สำหรับ Intent ในตัวหรือไม่ก็ได้ Assistant จะจัดการ ที่มีค่า หากสามารถแยกออกจากการเรียกใช้ของผู้ใช้ Intent ในตัว

เช่น สคีมาของ actions.intent.CHECK_AIR_QUALITY ในตัว Intent จะกำหนดพารามิเตอร์ที่ไม่บังคับ 4 รายการดังนี้

ชื่อพารามิเตอร์ ประเภท
attributes ค่าสตริง
location ออบเจ็กต์ schema.org/Place
temporalCoverage ออบเจ็กต์ schema.org/Duration
timeIndicator EnumeratedDuration (ส่วนขยายเฉพาะของ Google)

ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างของเว็บฮุคการสนทนา (JSON) เมื่อผู้ใช้เรียกใช้การดำเนินการของคุณโดยพูดว่า "คุณภาพอากาศใน พรุ่งนี้ที่ซานฟรานซิสโก":

"inputs":[
      {
         "intent":"actions.intent.CHECK_AIR_QUALITY",
         "rawInputs":[
            {
               "inputType":"VOICE",
               "query":"what is the air quality in san francisco tomorrow"
            }
         ],
         "arguments":[
            {
               "name":"location",
               "structuredValue":{
                  "geo":{
                     "longitude":-122.41941550000001,
                     "latitude":37.7749295
                  },
                  "@context":"https://schema.org",
                  "@type":"Place",
                  "name":"san francisco"
               }
            },
            {
               "name":"temporalCoverage",
               "rawText":"2018-04-25",
               "textValue":"2018-04-25"
            }
         ]
      }
   ]

ในตัวอย่างนี้ พารามิเตอร์จะใช้ค่าต่อไปนี้

  • พารามิเตอร์ location มี schema.org/Place สำหรับ "เชียงใหม่"
  • พารามิเตอร์ temporalCoverage มี schema.org/Duration สำหรับวันที่ของวันพรุ่งนี้ซึ่งสัมพันธ์กับเวลาของการเรียกใช้
  • ไม่มีค่าสำหรับพารามิเตอร์ attributes และ timeIndicator เนื่องจากวลีสำหรับเรียกของผู้ใช้ไม่มีข้อมูลดังกล่าว

หากคุณใช้ไลบรารีของไคลเอ็นต์ Actions on Google สำหรับ Node.js คุณสามารถดึงค่าของพารามิเตอร์ดังที่แสดงในข้อมูลโค้ดต่อไปนี้

app.intent('actions.intent.CHECK_AIR_QUALITY', (conv) => {
  const attributes = conv.arguments.get('attributes');
  const location = conv.arguments.get('location');
  const temporal_coverage = conv.arguments.get('temporalCoverage');
  Const time_indicator = conv.arguments.get('timeIndicator')

  // Your Action logic. If you need to use any of the parameter values,
  // you should check first that it is defined. Arguments.get returns
  // undefined if it can't find a value for a parameter.

});

ทดสอบการผสานรวมกับ Intent ในตัว

ทำตามขั้นตอนต่อไปนี้เพื่อทดสอบการผสานรวม

  1. เปิดเครื่องมือจำลอง Actions ที่เปิดใช้การดำเนินการทดสอบ หรือเปิด Assistant ในอุปกรณ์ของคุณ
  2. พูดหรือพิมพ์คำค้นหาที่เชื่อมโยงกับ Intent ในตัว ตัวอย่างเช่น "ฉันอยากเล่นเกม"
  3. ค้นหาการดำเนินการจากกล่องโต้ตอบการเลือกแอปที่แสดงอยู่
  4. เลือกแอปที่จะส่ง Intent ไปยังแอป
วันที่
รูปที่ 3 กล่องโต้ตอบการเลือกการดำเนินการที่ได้
มาจากวลี Intent ในตัว
วันที่
รูปที่ 4 การเรียกใช้การดำเนินการที่แนบกับ Intent ในตัว

แนวทางปฏิบัติแนะนำสำหรับการใช้ Intent ในตัว

คุณควรทำตามแนวทางปฏิบัติแนะนำต่อไปนี้เมื่อใช้ Intent ในตัว

  • จับคู่ Intent ในตัวกับการดำเนินการที่เฉพาะเจาะจง: เมื่อ Intent ในตัวที่เฉพาะเจาะจง ทริกเกอร์การดำเนินการของคุณ ส่งผู้ใช้ไปยัง Intent ที่เฉพาะเจาะจง ให้ทำงานได้ราบรื่นที่สุด สำหรับ ตัวอย่างเช่น หากการดำเนินการของคุณรองรับ Intent ในตัว PLAY_GAME และ คุณควรส่งผู้ใช้ไปยังฟีเจอร์เกมทันที ของการดำเนินการของคุณ หลีกเลี่ยงการถามผู้ใช้อีกครั้งว่าต้องการเล่นเกมหรือไม่
  • จัดการพารามิเตอร์ Intent ในตัว: ตรวจสอบว่าคุณใช้ Intent ในตัว ค่าพารามิเตอร์ที่ Assistant ส่งไปยังการดำเนินการตามคำสั่งซื้อ หลีกเลี่ยงการแจ้งผู้ใช้อีกครั้งสำหรับค่าเหล่านั้น