ทำตามวิธีการในแต่ละส่วนด้านล่างเพื่อผสานรวม 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 ด้วยขอบเขต SDK ของ Assistant
Assistant SDK ใช้โทเค็นเพื่อการเข้าถึง OAuth 2.0 เพื่อให้สิทธิ์อุปกรณ์เชื่อมต่อกับ Assistant
เมื่อสร้างต้นแบบ คุณสามารถใช้เครื่องมือการให้สิทธิ์เพื่อสร้างข้อมูลเข้าสู่ระบบ OAuth2.0 ได้อย่างง่ายดายจากไฟล์ client_secret_<client-id>.json
ที่สร้างขึ้นเมื่อลงทะเบียนรุ่นอุปกรณ์
ทำตามขั้นตอนต่อไปนี้เพื่อสร้างข้อมูลเข้าสู่ระบบ
ใช้สภาพแวดล้อมเสมือนของ Python เพื่อแยกเครื่องมือการให้สิทธิ์และทรัพยากร Dependency ออกจากแพ็กเกจ 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 API เพื่อทำความเข้าใจวิธีรับ คงสถานะ และใช้โทเค็นเพื่อการเข้าถึง OAuth เพื่ออนุญาตให้อุปกรณ์พูดคุยกับ Assistant API
ใช้ข้อมูลต่อไปนี้เมื่ออ่านคู่มือเหล่านี้
- ขอบเขต OAuth: https://www.googleapis.com/auth/assistant-sdk-prototype
ขั้นตอน 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
ถัดไป
ตอนนี้คุณก็พร้อมที่จะส่งคำขอแรกไปยัง Google 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
การแก้ปัญหา
ดูหน้าการแก้ปัญหาหากพบปัญหา