Intent ในตัวคือตัวระบุที่ไม่ซ้ำกันซึ่งคุณระบุเพื่อบอก Google Assistant ว่าการดำเนินการของคุณทำตามคำขอของผู้ใช้ในหมวดหมู่หนึ่งๆ ได้ ลองดูตัวอย่างคำค้นหาของผู้ใช้ที่ Assistant จับคู่กับ Intent ในตัวต่อไปนี้
- Intent ในตัวของ"เล่นเกม": "Ok Google เล่นเกมทดสอบความจำ"
- ความตั้งใจในตัวของ"รับคำทำนาย": "Ok Google ดูดวงของฉัน"
ในระหว่างการค้นพบการดำเนินการ Assistant อาจใช้ข้อมูลเมตาเกี่ยวกับการดำเนินการของคุณ รวมถึง Intent ในตัวที่คุณระบุไว้ เพื่อแนะนำการดำเนินการให้ผู้ใช้ทราบ Assistant ยังจะพยายามสแกนพารามิเตอร์จากคำค้นหาของผู้ใช้และส่งไปยังการดำเนินการของคุณเพื่อลดการสนทนาไปกลับให้น้อยที่สุด
หากต้องการดูรายการ Intent ในตัวทั้งหมดที่ Assistant รองรับ รวมถึงพารามิเตอร์และตัวอย่างการค้นหาของผู้ใช้ โปรดดูข้อมูลอ้างอิง Intent ในตัว
ผสานรวม Intent ในตัว
มีหลายวิธีในการผสานรวม Intent ในตัว ทั้งนี้ขึ้นอยู่กับวิธีสร้างการดำเนินการของคุณ
Dialogflow
หากใช้ Dialogflow เพื่อสร้างการดำเนินการ คุณจะแนบ Intent ในตัวแบบกราฟิกได้จากคอนโซลของ Dialogflow
หากต้องการเชื่อมต่อ Intent ในตัวกับ Dialogflow ให้ทำตามขั้นตอนต่อไปนี้
- เปิดคอนโซล Dialogflow เลือกตัวแทน จากนั้นไปที่หน้าจอ Intent
สร้างหรือเลือก Intent ที่ Agent ทริกเกอร์เมื่อได้รับ Intent ในตัวที่เจาะจง เปิดส่วนเหตุการณ์ แล้วคลิกเพิ่มเหตุการณ์
ในช่องเหตุการณ์ ให้พิมพ์ชื่อเหตุการณ์ Intent ในตัวของ Agent (เช่น
actions_intent_PLAY_GAME
)คลิกบันทึก
Actions SDK
หากคุณใช้ Actions SDK เพื่อสร้างการดำเนินการ คุณต้องระบุการแมประหว่าง Intent ในตัวและ Actions ในแพ็กเกจ Action
หากต้องการเชื่อมต่อ Intent ในตัวกับ Actions SDK ให้ทำตามขั้นตอนต่อไปนี้
- ระบุ Intent ในตัวในช่องชื่อในคำจำกัดความ Action
- อัปโหลดแพ็กเกจการดำเนินการไปยังโปรเจ็กต์ Actions โดยใช้เครื่องมือ
gactions
ตามที่อธิบายไว้ในภาพรวมของ Actions SDK
เช่น ข้อมูลโค้ดต่อไปนี้แสดงวิธีเพิ่ม Intent ในตัวของ CHECK_AIR_QUALITY
{
"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 ในตัว Fulfillment ของคุณอาจได้รับพารามิเตอร์เพิ่มเติม สคีมา Intent กำหนดชื่อของพารามิเตอร์และประเภทของพารามิเตอร์เป็นประเภทพื้นฐานหรือเอนทิตีของ schema.org ดูสคีมาสำหรับ Intent ในตัวของการดำเนินการแบบการสนทนาได้ที่ข้อมูลอ้างอิง Intent ในตัว
คุณจะใส่พารามิเตอร์สำหรับ Intent ในตัวหรือไม่ก็ได้ Assistant จะดูแลการใส่ค่าลงในพารามิเตอร์ หากดึงมาจากการเรียกใช้ Intent ในตัวของผู้ใช้ได้
เช่น สคีมาของ Intent ในตัวของ actions.intent.CHECK_AIR_QUALITY
จะกำหนดพารามิเตอร์ที่ไม่บังคับ 4 ตัวดังนี้
ชื่อพารามิเตอร์ | Type |
---|---|
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 Client สำหรับ 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 ในตัว
ทําตามขั้นตอนต่อไปนี้เพื่อทดสอบการผสานรวม
- เปิดเครื่องจำลองการดำเนินการที่เปิดใช้การดำเนินการทดสอบ หรือเปิด Assistant ในอุปกรณ์
- พูดหรือพิมพ์คำค้นหาที่เชื่อมโยงกับ Intent ในตัวดังกล่าว ตัวอย่างเช่น “ฉันอยากเล่นเกม”
- จากกล่องโต้ตอบการเลือกแอปที่แสดงอยู่ ให้ค้นหาการดำเนินการของคุณ
- เลือกแอปเพื่อส่ง Intent ไปยังแอป
แนวทางปฏิบัติแนะนำในการใช้ Intent ในตัว
คุณควรทำตามแนวทางปฏิบัติแนะนำต่อไปนี้เมื่อใช้ Intent ในตัว
- จับคู่ Intent ในตัวกับการดำเนินการที่เจาะจง: เมื่อ Intent ในตัวที่เจาะจงทริกเกอร์การดำเนินการของคุณ ให้ส่งผู้ใช้ไปยัง Intent ที่เฉพาะเจาะจงและฟังก์ชันการทำงานในการดำเนินการด้วยการดำเนินการที่ราบรื่นน้อยที่สุด ตัวอย่างเช่น หากการดำเนินการของคุณรองรับ Intent ในตัวของ
PLAY_GAME
และได้รับ Intent ดังกล่าว คุณควรส่งผู้ใช้ไปยังฟีเจอร์เกมของการดำเนินการของคุณทันที หลีกเลี่ยงการถามผู้ใช้อีกว่าต้องการเล่นเกมหรือไม่ - จัดการพารามิเตอร์ Intent ในตัว: ตรวจสอบว่าคุณใช้ค่าพารามิเตอร์ Intent ในตัวที่ Assistant ส่งไปยัง Fulfillment ของคุณ หลีกเลี่ยงการแจ้งให้ผู้ใช้ซ้ำสำหรับค่าเหล่านั้น