ทำตามวิธีการในแต่ละส่วนด้านล่างเพื่อผสานรวมกับ Google Assistant ลงในโปรเจ็กต์ของคุณ
การเชื่อมโยง gRPC
บริการ Google Assistant สร้างต่อยอดจาก gRPC ซึ่งเป็น ประสิทธิภาพการทำงาน เฟรมเวิร์ก RPC แบบโอเพนซอร์ส เฟรมเวิร์กนี้เหมาะสำหรับ สตรีมมิงเสียงแบบ 2 ทิศทาง
Python
หากคุณใช้ Python ให้เริ่มต้นใช้งานคำแนะนำนี้
C++
โปรดดูตัวอย่าง C++ ของเรา ใน GitHub
Node.js
ลองดูตัวอย่าง Node.js ของเรา ใน GitHub
Android Things
สนใจอุปกรณ์แบบฝังไหม ลองใช้ Assistant SDK ตัวอย่างสำหรับ Android Things
ภาษาอื่นๆ
- โคลนที่เก็บ googleapis เพื่อดูคำจำกัดความของอินเทอร์เฟซบัฟเฟอร์โปรโตคอลสำหรับ Google Assistant Service API
- ทำตามเอกสารประกอบเกี่ยวกับ gRPC เพื่อสร้าง gRPC การเชื่อมโยงสำหรับภาษาที่คุณเลือก
- ทำตามขั้นตอนในส่วนด้านล่าง
ให้สิทธิ์และตรวจสอบสิทธิ์บัญชี Google เพื่อทำงานร่วมกับ Assistant
ขั้นตอนถัดไปคือให้สิทธิ์อุปกรณ์พูดคุยกับ Google Assistant โดยใช้บัญชี Google ของคุณ
รับโทเค็น OAuth ที่มีขอบเขต Assistant SDK
Assistant SDK ใช้โทเค็นเพื่อการเข้าถึง OAuth 2.0 เพื่อให้สิทธิ์แก่อุปกรณ์ของคุณ เชื่อมต่อกับ Assistant
ขณะสร้างต้นแบบ คุณสามารถใช้เครื่องมือการให้สิทธิ์เพื่อสร้าง OAuth2.0 ได้อย่างง่ายดาย
ข้อมูลเข้าสู่ระบบจากไฟล์ client_secret_<client-id>.json
ที่สร้างขึ้นเมื่อ
การลงทะเบียนรุ่นอุปกรณ์
ดำเนินการต่อไปนี้เพื่อสร้างข้อมูลเข้าสู่ระบบ
ใช้สภาพแวดล้อมเสมือนของ Python เพื่อแยกเครื่องมือการให้สิทธิ์และการอ้างอิงจากแพ็กเกจ Python ของระบบ
sudo apt-get update
sudo apt-get install python3-dev python3-venv # Use python3.4-venv if the package cannot be found.
python3 -m venv env
env/bin/python -m pip install --upgrade pip setuptools wheel
source env/bin/activate
ติดตั้งเครื่องมือการให้สิทธิ์
python -m pip install --upgrade google-auth-oauthlib[tool]
เรียกใช้เครื่องมือ นำแฟล็ก
--headless
ออกหากคุณเรียกใช้จากเทอร์มินัลในอุปกรณ์ (ไม่ใช่เซสชัน SSH)google-oauthlib-tool --client-secrets /path/to/client_secret_client-id.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless
เมื่อคุณพร้อมที่จะผสานรวมการให้สิทธิ์เป็นส่วนหนึ่งของการจัดสรร กลไกของอุปกรณ์ โปรดอ่านคำแนะนำในการการใช้ OAuth 2.0 เพื่อเข้าถึง Google APIs เพื่อทำความเข้าใจวิธีรับ คงไว้ และใช้โทเค็นเพื่อการเข้าถึง OAuth เพื่อให้ อุปกรณ์ที่จะพูดกับ Assistant API
ใช้คำแนะนำต่อไปนี้เมื่อทำตามคำแนะนำเหล่านี้
- ขอบเขต OAuth: https://www.googleapis.com/auth/assistant-sdk-protocoltype
ขั้นตอน OAuth ที่รองรับมีดังนี้
ดูแนวทางปฏิบัติแนะนำเกี่ยวกับความเป็นส่วนตัวและความปลอดภัย เพื่อดูคำแนะนำเกี่ยวกับวิธีรักษาความปลอดภัยของอุปกรณ์
ตรวจสอบสิทธิ์การเชื่อมต่อ gRPC ด้วยโทเค็น OAuth
สุดท้าย นำชิ้นส่วนทั้งหมดมารวมกันโดยอ่านวิธีใช้โทเค็น กับ Google ตรวจสอบสิทธิ์การเชื่อมต่อ gRPC กับ Assistant API
ลงทะเบียนอุปกรณ์ของคุณ
ลงทะเบียนรุ่นและอินสแตนซ์ของอุปกรณ์ด้วยตนเอง หรือเครื่องมือการลงทะเบียน (มีให้บริการ ใน Python)
ใช้กล่องโต้ตอบการสนทนาพื้นฐานกับ Assistant
- ใช้ไคลเอ็นต์ gRPC สตรีมมิงแบบ 2 ทิศทาง สำหรับ Google Assistant Service API
- รอให้ผู้ใช้ส่งคำขอใหม่ (เช่น รอให้การรบกวน GPIO จากการกดปุ่ม)
ส่ง
AssistRequest
ข้อความที่ตั้งค่าช่องconfig
(ดูAssistConfig
) ตรวจสอบว่าช่องconfig
มีข้อมูลต่อไปนี้- ฟิลด์
audio_in_config
ซึ่งระบุวิธีประมวลผล ข้อมูลaudio_in
ที่จะแสดงในคำขอต่อๆ ไป (ดูAudioInConfig
) - ฟิลด์
audio_out_config
ซึ่งระบุรูปแบบที่ต้องการสำหรับ เซิร์ฟเวอร์ที่จะใช้เมื่อส่งกลับaudio_out
ข้อความ (ดูAudioOutConfig
) - ฟิลด์
device_config
ซึ่งระบุฟิลด์ ลงทะเบียนอุปกรณ์กับ Assistant (ดูDeviceConfig
) - ฟิลด์
dialog_state_in
ซึ่งมีlanguage_code
ที่เกี่ยวข้องกับคำขอ (ดูDialogStateIn
)
- ฟิลด์
เริ่มบันทึก
ส่ง
AssistRequest
ขาออกหลายรายการ ข้อความที่มีข้อมูลเสียงจากข้อความค้นหาที่พูดในช่องaudio_in
จัดการ
AssistResponse
ขาเข้า ข้อความดึงข้อมูลเมตาของการสนทนาจาก
AssistResponse
เช่น จากdialog_state_out
ให้ใช้conversation_state
และvolume_percentage
(ดูDialogStateOut
)หยุดบันทึกเมื่อได้รับ
AssistResponse
กับevent_type
ของEND_OF_UTTERANCE
.เล่นเสียงจากคำตอบของ Assistant ด้วยข้อมูลเสียงจาก
audio_out
ด้วยนำ
conversation_state
ที่แยกไว้ก่อนหน้ามาคัดลอก ลงในDialogStateIn
ข้อความในAssistConfig
สำหรับAssistRequest
ถัดไป
เพียงเท่านี้ คุณก็พร้อมที่จะส่งคำขอแรกไปยัง Assistant ผ่านทางอุปกรณ์ของคุณ
ขยายกล่องโต้ตอบการสนทนาด้วยการดำเนินการของอุปกรณ์
ขยายกล่องโต้ตอบการสนทนาพื้นฐานด้านบนเพื่อทริกเกอร์ฮาร์ดแวร์เฉพาะ ความสามารถของอุปกรณ์
- ใน
AssistResponse
ขาเข้า ข้อความ ให้แตกฟิลด์device_action
(โปรดดูDeviceAction
) - แยกวิเคราะห์เพย์โหลด JSON ของช่อง
device_request_json
โปรดดู ลักษณะของอุปกรณ์สำหรับ รายการลักษณะที่รองรับ หน้าสคีมาแต่ละหน้าแสดงตัวอย่างตัวอย่าง "EXECUTE" ที่มีคำสั่งอุปกรณ์และพารามิเตอร์ที่แสดงผลใน เพย์โหลด JSON
รับข้อความถอดเสียงจากคำขอของผู้ใช้
หากคุณมีจอแสดงผลติดอยู่กับอุปกรณ์ คุณอาจต้องการใช้จอแสดงผลดังกล่าวเพื่อ
แสดงคำขอของผู้ใช้ แยกวิเคราะห์ช่อง speech_results
เพื่อรับข้อความถอดเสียงนี้
ในAssistResponse
ข้อความ เมื่อการจดจำเสียงเสร็จสมบูรณ์ รายการนี้จะมีรายการ 1 รายการ
ที่มีการตั้งค่า stability
เป็น 1.0
รับข้อความและ/หรือภาพของคำตอบของ Assistant
หากคุณมีจอแสดงผลติดอยู่กับอุปกรณ์ คุณอาจต้องการใช้จอแสดงผลดังกล่าวเพื่อ
แสดงคำตอบที่เป็นข้อความธรรมดาของ Assistant ต่อคำขอของผู้ใช้ ข้อความนี้อยู่
ในDialogStateOut.supplemental_display_text
ด้วย
Assistant รองรับภาพตอบกลับผ่าน HTML5 สำหรับบางคำถาม (
สภาพอากาศที่ Mountain View เป็นอย่างไรหรือตอนนี้เป็นเวลาเท่าไหร่) หากต้องการเปิดใช้ ให้ตั้งค่า
ฟิลด์ screen_out_config
ใน AssistConfig
ScreenOutConfig
ข้อความมีฟิลด์ screen_mode
ซึ่งควรตั้งค่าเป็น PLAYING
AssistResponse
ข้อความจะมีการตั้งค่าฟิลด์ screen_out
คุณสามารถแยกข้อมูล HTML5 (หากมี) จาก
data
การส่งข้อความค้นหาผ่านการป้อนข้อความ
หากคุณมีอินเทอร์เฟซแบบข้อความ (เช่น แป้นพิมพ์) แนบอยู่กับอุปกรณ์
ตั้งค่าช่อง text_query
ในช่อง config
(ดู AssistConfig
)
โปรดอย่าตั้งค่าช่อง audio_in_config
การแก้ปัญหา
โปรดดูที่การแก้ปัญหา หน้านี้ถ้าพบปัญหา