ผสานรวม Assistant เข้ากับโครงการของคุณ (ภาษาอื่นๆ)

ทำตามวิธีการในแต่ละส่วนด้านล่างเพื่อผสานรวมกับ 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 ที่สร้างขึ้นเมื่อ การลงทะเบียนรุ่นอุปกรณ์

ดำเนินการต่อไปนี้เพื่อสร้างข้อมูลเข้าสู่ระบบ

  1. ใช้สภาพแวดล้อมเสมือนของ 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
    
  2. ติดตั้งเครื่องมือการให้สิทธิ์

    python -m pip install --upgrade google-auth-oauthlib[tool]
  3. เรียกใช้เครื่องมือ นำแฟล็ก --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

ใช้คำแนะนำต่อไปนี้เมื่อทำตามคำแนะนำเหล่านี้

ดูแนวทางปฏิบัติแนะนำเกี่ยวกับความเป็นส่วนตัวและความปลอดภัย เพื่อดูคำแนะนำเกี่ยวกับวิธีรักษาความปลอดภัยของอุปกรณ์

ตรวจสอบสิทธิ์การเชื่อมต่อ gRPC ด้วยโทเค็น OAuth

สุดท้าย นำชิ้นส่วนทั้งหมดมารวมกันโดยอ่านวิธีใช้โทเค็น กับ Google ตรวจสอบสิทธิ์การเชื่อมต่อ gRPC กับ Assistant API

ลงทะเบียนอุปกรณ์ของคุณ

ลงทะเบียนรุ่นและอินสแตนซ์ของอุปกรณ์ด้วยตนเอง หรือเครื่องมือการลงทะเบียน (มีให้บริการ ใน Python)

ใช้กล่องโต้ตอบการสนทนาพื้นฐานกับ Assistant

  1. ใช้ไคลเอ็นต์ gRPC สตรีมมิงแบบ 2 ทิศทาง สำหรับ Google Assistant Service API
  2. รอให้ผู้ใช้ส่งคำขอใหม่ (เช่น รอให้การรบกวน GPIO จากการกดปุ่ม)
  3. ส่ง 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)
  4. เริ่มบันทึก

  5. ส่ง AssistRequest ขาออกหลายรายการ ข้อความที่มีข้อมูลเสียงจากข้อความค้นหาที่พูดในช่อง audio_in

  6. จัดการ AssistResponse ขาเข้า ข้อความ

  7. ดึงข้อมูลเมตาของการสนทนาจาก AssistResponse เช่น จาก dialog_state_out ให้ใช้ conversation_state และ volume_percentage (ดู DialogStateOut)

  8. หยุดบันทึกเมื่อได้รับ AssistResponse กับ event_type ของ END_OF_UTTERANCE.

  9. เล่นเสียงจากคำตอบของ Assistant ด้วยข้อมูลเสียงจาก audio_out ด้วย

  10. นำ conversation_state ที่แยกไว้ก่อนหน้ามาคัดลอก ลงใน DialogStateIn ข้อความใน AssistConfig สำหรับ AssistRequest ถัดไป

เพียงเท่านี้ คุณก็พร้อมที่จะส่งคำขอแรกไปยัง Assistant ผ่านทางอุปกรณ์ของคุณ

ขยายกล่องโต้ตอบการสนทนาด้วยการดำเนินการของอุปกรณ์

ขยายกล่องโต้ตอบการสนทนาพื้นฐานด้านบนเพื่อทริกเกอร์ฮาร์ดแวร์เฉพาะ ความสามารถของอุปกรณ์

  1. ในAssistResponseขาเข้า ข้อความ ให้แตกฟิลด์ device_action (โปรดดู DeviceAction)
  2. แยกวิเคราะห์เพย์โหลด 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

การแก้ปัญหา

โปรดดูที่การแก้ปัญหา หน้านี้ถ้าพบปัญหา