1. ภาพรวม
แพลตฟอร์มสำหรับนักพัฒนาแอปของ Google Assistant ช่วยให้คุณสร้างซอฟต์แวร์เพื่อขยายฟังก์ชันการทำงานของ Google Assistant ซึ่งเป็นผู้ช่วยส่วนตัวเสมือนจริงในอุปกรณ์กว่า 1,000 ล้านเครื่อง รวมถึงลำโพงอัจฉริยะ โทรศัพท์ รถยนต์ ทีวี หูฟัง และอื่นๆ ผู้ใช้จะสนทนากับ Assistant เพื่อทำสิ่งต่างๆ เช่น ซื้อของชำหรือจองรถ ในฐานะนักพัฒนาแอป คุณสามารถใช้แพลตฟอร์มนักพัฒนาแอปของ Assistant เพื่อสร้างและจัดการประสบการณ์การสนทนาที่น่าพึงพอใจและมีประสิทธิภาพระหว่างผู้ใช้กับบริการจัดการคำสั่งซื้อของบุคคลที่สามของคุณเองได้อย่างง่ายดาย
Codelab นี้ครอบคลุมแนวคิดระดับเริ่มต้นสำหรับการพัฒนาด้วย Actions SDK สำหรับ Google Assistant โดยคุณไม่จำเป็นต้องมีประสบการณ์เกี่ยวกับแพลตฟอร์มมาก่อนก็ทำตาม Codelab นี้ได้ ใน Codelab นี้ คุณจะได้สร้าง Action ง่ายๆ สำหรับ Google Assistant ที่จะบอกโชคชะตาของผู้ใช้เมื่อเริ่มการผจญภัยในดินแดนแห่งตำนานของกริฟฟินเบิร์ก ใน Codelab ระดับ 2 ของ Actions SDK คุณจะสร้าง Action นี้เพิ่มเติมเพื่อปรับแต่งคำทำนายของผู้ใช้ตามข้อมูลที่ป้อน
สิ่งที่คุณจะสร้าง
ในโค้ดแล็บนี้ คุณจะได้สร้าง Action อย่างง่ายที่มีฟังก์ชันต่อไปนี้
- ตอบกลับผู้ใช้ด้วยข้อความทักทาย
- ถามคำถามผู้ใช้และตอบกลับตามที่ผู้ใช้เลือก
- แสดงชิปคำแนะนำที่ผู้ใช้คลิกเพื่อป้อนข้อมูลได้
- แก้ไขข้อความทักทายที่แสดงต่อผู้ใช้โดยพิจารณาว่าผู้ใช้เป็นผู้ใช้ที่กลับมาหรือไม่
เมื่อทำ Codelab นี้เสร็จแล้ว แอ็กชันที่เสร็จสมบูรณ์จะมีลำดับการสนทนาต่อไปนี้ (ข้อความข้างไมโครโฟนแสดงถึงอินพุตของผู้ใช้ ส่วนข้อความข้างลำโพงแสดงถึงการตอบกลับของแอ็กชัน)


สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างโปรเจ็กต์ในคอนโซล Actions
- วิธีใช้เครื่องมือ gactions เพื่อพุชและดึงโปรเจ็กต์ Action ระหว่างคอนโซล Actions กับระบบไฟล์ในเครื่อง
- วิธีส่งพรอมต์ให้ผู้ใช้หลังจากที่ผู้ใช้เรียกใช้ Action ของคุณ
- วิธีประมวลผลอินพุตของผู้ใช้และแสดงคำตอบ
- วิธีทดสอบ Action ในเครื่องมือจำลองการดำเนินการ
- วิธีติดตั้งใช้งานการดำเนินการตามคำสั่งโดยใช้โปรแกรมแก้ไข Cloud Functions
สิ่งที่คุณต้องมี
เครื่องมือต่อไปนี้ต้องอยู่ในสภาพแวดล้อมของคุณ
- IDE หรือโปรแกรมแก้ไขข้อความที่คุณเลือก
- เทอร์มินัลเพื่อเรียกใช้คำสั่งเชลล์สำหรับ Node.js และ npm
- เว็บเบราว์เซอร์ เช่น Google Chrome
2. ตั้งค่า
ส่วนต่อไปนี้จะอธิบายวิธีตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์และสร้างโปรเจ็กต์ Actions
ตรวจสอบการตั้งค่าสิทธิ์ของ Google
หากต้องการทดสอบ Action ที่คุณสร้างในโค้ดแล็บนี้ คุณต้องเปิดใช้สิทธิ์ที่จำเป็นเพื่อให้เครื่องจำลองเข้าถึง Action ได้
หากต้องการเปิดใช้สิทธิ์ ให้ทำตามขั้นตอนต่อไปนี้
- ไปที่ส่วนควบคุมกิจกรรม
- หากยังไม่ได้ลงชื่อเข้าใช้บัญชี Google โปรดลงชื่อเข้าใช้ก่อน
- เปิดใช้สิทธิ์ต่อไปนี้
- กิจกรรมบนเว็บและแอป
- ในส่วนกิจกรรมบนเว็บและแอป ให้เลือกช่องทำเครื่องหมายรวมประวัติการเข้าชมใน Chrome และกิจกรรมจากเว็บไซต์ แอป และอุปกรณ์ที่ใช้บริการต่างๆ ของ Google**
สร้างโปรเจ็กต์ Actions
โปรเจ็กต์ Actions คือคอนเทนเนอร์สำหรับ Action ของคุณ
หากต้องการสร้างโปรเจ็กต์ Actions สำหรับ Codelab นี้ ให้ทำตามขั้นตอนต่อไปนี้
- เปิดคอนโซล Actions
- คลิกโครงการใหม่
- ป้อนชื่อโปรเจ็กต์ เช่น
actions-codelab(ชื่อนี้มีไว้เพื่อใช้อ้างอิงภายใน คุณจะตั้งชื่อภายนอกสำหรับโปรเจ็กต์ได้ในภายหลัง)

- คลิกสร้างโปรเจ็กต์
- ในหน้าจอคุณต้องการสร้างการกระทําประเภทใด ให้เลือกการ์ดกําหนดเอง
- คลิกถัดไป
- ในหน้าจอคุณต้องการสร้างอย่างไร ให้เลือกการ์ดโปรเจ็กต์เปล่า
- คลิกเริ่มสร้าง
บันทึกรหัสโปรเจ็กต์สำหรับ Action
รหัสโปรเจ็กต์คือตัวระบุที่ไม่ซ้ำกันสำหรับ Action คุณต้องใช้รหัสโปรเจ็กต์สำหรับหลายขั้นตอนในโค้ดแล็บนี้
หากต้องการเรียกข้อมูลรหัสโปรเจ็กต์ ให้ทำตามขั้นตอนต่อไปนี้
- ในคอนโซล Actions ให้คลิกจุดแนวตั้ง 3 จุด (ใส่ไอคอนที่นี่)
- คลิกการตั้งค่าโปรเจ็กต์

- คัดลอกรหัสโปรเจ็กต์**
เชื่อมโยงบัญชีสำหรับการเรียกเก็บเงิน
หากยังไม่มีบัญชีสำหรับการเรียกเก็บเงิน คุณจะต้องสร้างบัญชีสำหรับการเรียกเก็บเงินและเชื่อมโยงกับโปรเจ็กต์ใน Google Cloud เพื่อติดตั้งใช้งานการดำเนินการตามคำสั่งในภายหลังด้วย Cloud Functions
หากต้องการเชื่อมโยงบัญชีสำหรับการเรียกเก็บเงินกับโปรเจ็กต์ ให้ทำตามขั้นตอนต่อไปนี้
- ไปที่หน้าการเรียกเก็บเงินของ Google Cloud Platform
- คลิกเพิ่มบัญชีสำหรับการเรียกเก็บเงินหรือสร้างบัญชี
- ป้อนข้อมูลการชำระเงิน
- คลิกเริ่มช่วงทดลองใช้ฟรีหรือส่งและเปิดใช้การเรียกเก็บเงิน
- ไปที่หน้าการเรียกเก็บเงินของ Google Cloud Platform
- คลิกแท็บโปรเจ็กต์ของฉัน
- คลิกจุด 3 จุดในส่วนการดำเนินการข้างโปรเจ็กต์ Actions สำหรับ Codelab
- คลิกเปลี่ยนการเรียกเก็บเงิน
- เลือกบัญชีสำหรับการเรียกเก็บเงินที่คุณกำหนดค่าไว้ในเมนูแบบเลื่อนลง
- คลิกตั้งค่าบัญชี
หากไม่ต้องการให้มีการเรียกเก็บเงิน ให้ทำตามขั้นตอนในส่วนล้างข้อมูลโปรเจ็กต์ที่ท้าย Codelab นี้
ติดตั้งอินเทอร์เฟซบรรทัดคำสั่ง gactions
ใน Codelab นี้ คุณจะได้ใช้เครื่องมืออินเทอร์เฟซบรรทัดคำสั่ง (CLI) ของ gactions เพื่อซิงค์โปรเจ็กต์ Actions ระหว่างคอนโซล Actions กับระบบไฟล์ในเครื่อง
หากต้องการติดตั้ง gactions CLI ให้ทำตามวิธีการในติดตั้งเครื่องมือบรรทัดคำสั่ง gactions
ดาวน์โหลดโปรเจ็กต์ Actions
เริ่มพัฒนา Action โดยดาวน์โหลดโปรเจ็กต์ Actions จากคอนโซล Actions
หากต้องการดาวน์โหลดโปรเจ็กต์ Actions ให้ทำตามขั้นตอนต่อไปนี้
- หากต้องการสร้างไดเรกทอรีใหม่และเปลี่ยนเป็นไดเรกทอรีนั้น ให้เรียกใช้คำสั่งต่อไปนี้
mkdir myproject cd myproject
- หากต้องการคัดลอกการกำหนดค่าของโปรเจ็กต์ Actions ไปยังระบบไฟล์ในเครื่อง ให้เรียกใช้คำสั่งต่อไปนี้
gactions pull --project-id <projectID>
ทำความเข้าใจโครงสร้างไฟล์
โปรเจ็กต์ Actions ที่คุณดาวน์โหลดจากคอนโซล Actions จะแสดงในโครงสร้างไฟล์ YAML รูปภาพต่อไปนี้แสดงโครงสร้างไฟล์ในระดับสูง

โครงสร้างไฟล์ประกอบด้วยข้อมูลต่อไปนี้
actions/: แสดงโปรเจ็กต์ Actions ของคุณ ระบบจะเรียกใช้actions.yamlเมื่อมีการเรียกใช้ Action ซึ่งจะเรียกใช้ไฟล์custom/global/actions.intent.MAIN.yamlcustom/: ไดเรกทอรีที่คุณจะใช้ในการแก้ไข Actionglobal/: ไดเรกทอรีนี้มี System Intents ที่แพลตฟอร์มจะเพิ่มลงในโปรเจ็กต์โดยอัตโนมัติ คุณจะได้ดูข้อมูลเพิ่มเติมเกี่ยวกับ Intent ของระบบใน Codelab นี้ในภายหลังmanifest.yaml: ไฟล์ที่มีข้อมูลที่สามารถเคลื่อนย้ายได้ หรือไม่ได้เจาะจงสำหรับโปรเจ็กต์ใดโปรเจ็กต์หนึ่งและสามารถย้ายระหว่างโปรเจ็กต์ได้settings/: แสดงการตั้งค่าของโปรเจ็กต์ Actions เช่น ชื่อที่แสดง ภาษาเริ่มต้น และหมวดหมู่
3. เริ่มการสนทนา
ผู้ใช้เริ่มการสนทนากับ Action ของคุณผ่านการเรียกใช้ เช่น หากคุณมีแอ็กชันชื่อ MovieTime ผู้ใช้จะเรียกใช้แอ็กชันของคุณได้โดยพูดวลีอย่าง "Ok Google คุยกับ MovieTime" โดย MovieTime คือชื่อที่แสดง การดำเนินการต้องมีชื่อที่แสดงหากคุณต้องการนำไปใช้ในการผลิต แต่หากต้องการทดสอบการดำเนินการ คุณไม่จำเป็นต้องกำหนดชื่อที่แสดง แต่คุณสามารถใช้วลี "คุยกับแอปทดสอบของฉัน" ในโปรแกรมจำลองเพื่อเรียกใช้ Action ได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับเครื่องจำลองได้ในส่วนนี้
คุณต้องแก้ไขการเรียกใช้หลักเพื่อกําหนดสิ่งที่เกิดขึ้นหลังจากที่ผู้ใช้เรียกใช้ Action
โดยค่าเริ่มต้น Action จะแสดงพรอมต์ทั่วไปเมื่อมีการเรียกใช้ ("เริ่มสร้าง Action โดยกำหนดการเรียกใช้หลัก")
ในส่วนถัดไป คุณจะปรับแต่งพรอมต์สำหรับการเรียกใช้หลักในไฟล์ custom/global/actions.intent.MAIN.yaml
ตั้งค่าการเรียกใช้หลัก
คุณแก้ไขพรอมต์การเรียกใช้หลักได้ในไฟล์ actions.intent.MAIN.yaml
หากต้องการแก้ไขพรอมต์ที่ Action ส่งกลับให้ผู้ใช้เมื่อเรียกใช้ Action ให้ทำตามขั้นตอนต่อไปนี้
- เปิด
custom/global/actions.intent.MAIN.yamlในโปรแกรมแก้ไขข้อความ - แทนที่ข้อความในฟิลด์
speech(Start building your action...) ด้วยข้อความต้อนรับต่อไปนี้A wondrous greeting, adventurer! Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you're on your way to an epic journey.
actions.intent.MAIN.yaml
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: A wondrous greeting, adventurer! Welcome to the mythical land of
Gryffinberg! Based on your clothes, you are not from around these lands.
It looks like you're on your way to an epic journey.
transitionToScene: actions.scene.END_CONVERSATION
- บันทึกไฟล์
ทดสอบการเรียกใช้หลักในเครื่องจำลอง
คอนโซล Actions มีเครื่องมือบนเว็บสำหรับทดสอบ Action ซึ่งเรียกว่าเครื่องจำลอง อินเทอร์เฟซจะจำลองอุปกรณ์ฮาร์ดแวร์และการตั้งค่าของอุปกรณ์ เพื่อให้คุณสนทนากับ Action ได้ราวกับว่า Action นั้นทำงานบนจออัจฉริยะ โทรศัพท์ ลำโพง หรือ KaiOS
เมื่อเรียกใช้ Action ตอนนี้ Action ควรตอบกลับด้วยพรอมต์ที่กำหนดเองซึ่งคุณเพิ่มไว้ ("สวัสดีอย่างน่าอัศจรรย์ นักผจญภัย...")
คุณใช้คำสั่ง gactions deploy preview เพื่อทดสอบ Action ในคอนโซลได้โดยไม่ต้องอัปเดตเวอร์ชันของโปรเจ็กต์ Actions เมื่อเรียกใช้คำสั่งนี้ ระบบจะไม่เผยแพร่การเปลี่ยนแปลงที่คุณทำในระบบไฟล์ในเครื่องไปยังโปรเจ็กต์ Actions เวอร์ชันที่ใช้งานจริง แต่คุณสามารถทดสอบการเปลี่ยนแปลงในเวอร์ชันตัวอย่างได้
หากต้องการทดสอบการเรียกใช้หลักของ Action ในเครื่องจำลอง ให้ทำตามขั้นตอนต่อไปนี้
- หากต้องการติดตั้งใช้งานโปรเจ็กต์ในคอนโซล Actions เพื่อทดสอบ ให้เรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล
gactions deploy preview
คุณควรได้รับเอาต์พุตที่มีลักษณะดังนี้
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- คัดลอก URL ที่ระบุแล้ววางลงในเบราว์เซอร์
- หากต้องการเรียกใช้ Action ในเครื่องจำลอง ให้พิมพ์
Talk to my test appในช่องอินพุต แล้วกดEnter

เมื่อคุณเรียกใช้การเรียกใช้หลักของ Action ผู้ช่วยจะตอบกลับด้วยข้อความต้อนรับที่คุณปรับแต่ง ในขั้นตอนนี้ บทสนทนาจะสิ้นสุดลงหลังจากที่ Assistant ตอบกลับด้วยคำทักทาย ในส่วนถัดไป คุณจะแก้ไข Action เพื่อให้การสนทนาดำเนินต่อไปได้
ดูบันทึกเหตุการณ์
เมื่อคุณอยู่ในแท็บทดสอบในคอนโซล Actions แผงจะแสดงบันทึกเหตุการณ์ ซึ่งแสดงประวัติการสนทนาเป็นบันทึกเหตุการณ์ บันทึกเหตุการณ์แต่ละรายการจะแสดงเหตุการณ์ที่เกิดขึ้นในระหว่างการสนทนาในรอบนั้น
ปัจจุบันการดำเนินการของคุณมีบันทึกเหตุการณ์ 1 รายการ ซึ่งแสดงทั้งอินพุตของผู้ใช้ ("คุยกับแอปทดสอบของฉัน") และการตอบกลับของการดำเนินการ ภาพหน้าจอด้านล่างแสดงบันทึกเหตุการณ์ของการดำเนินการ

หากคลิกลูกศรลงข้าง Talk to my test app ในบันทึกเหตุการณ์ คุณจะเห็นเหตุการณ์ที่เกิดขึ้นในรอบการสนทนานั้นเรียงตามลำดับเวลา
userInput: สอดคล้องกับอินพุตของผู้ใช้ ("คุยกับแอปทดสอบของฉัน")interactionMatch: สอดคล้องกับการตอบกลับการเรียกใช้หลักของ Action ซึ่งทริกเกอร์โดยอินพุตของผู้ใช้ หากขยายแถวนี้โดยคลิกลูกศร คุณจะเห็นพรอมต์ที่เพิ่มสำหรับการเรียกใช้หลัก (A wondrous greeting, adventurer!...)endConversation: สอดคล้องกับการเปลี่ยนผ่านที่เลือกในเจตนาMain invocationซึ่งปัจจุบันจะสิ้นสุดการสนทนา คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับการเปลี่ยนฉากในส่วนถัดไปของ Codelab นี้
บันทึกเหตุการณ์ช่วยให้คุณเห็นภาพรวมว่า Action ทำงานอย่างไร และเป็นเครื่องมือที่มีประโยชน์ในการแก้ไขข้อบกพร่องของ Action หากพบปัญหา หากต้องการดูรายละเอียดของเหตุการณ์ ให้คลิกลูกศรข้างชื่อเหตุการณ์ ดังที่แสดงในภาพหน้าจอต่อไปนี้

4. สร้างการสนทนาของแอ็กชัน
ตอนนี้คุณได้กำหนดสิ่งที่เกิดขึ้นหลังจากที่ผู้ใช้เรียกใช้การดำเนินการแล้ว คุณก็สามารถสร้างการสนทนาที่เหลือของการดำเนินการได้ ก่อนที่จะดำเนินการต่อใน Codelab นี้ โปรดทำความคุ้นเคยกับคำศัพท์ต่อไปนี้เพื่อทำความเข้าใจวิธีการทำงานของการสนทนาของ Action
Action ของคุณมีฉากได้ตั้งแต่ 1 ฉากขึ้นไป และคุณต้องเปิดใช้งานแต่ละฉากก่อนจึงจะเรียกใช้ได้ Action ที่คุณสร้างใน Codelab นี้มีเพียงฉากเดียวชื่อ Start วิธีที่พบบ่อยที่สุดในการเปิดใช้งานฉากคือการกำหนดค่า Action เพื่อให้เมื่ออินพุตของผู้ใช้ตรงกับ Intent ภายในฉาก Intent นั้นจะทริกเกอร์การเปลี่ยนไปยังฉากอื่นและเปิดใช้งานฉากนั้น
ตัวอย่างเช่น ลองนึกถึง Action สมมติที่ให้ข้อมูลข้อเท็จจริงเกี่ยวกับสัตว์แก่ผู้ใช้ เมื่อผู้ใช้เรียกใช้การดำเนินการนี้ ระบบจะจับคู่เจตนา Main invocation และทริกเกอร์การเปลี่ยนไปที่ฉากชื่อ Facts. การเปลี่ยนนี้จะเปิดใช้งานฉาก Facts ซึ่งจะส่งพรอมต์ต่อไปนี้ไปยังผู้ใช้ Would you like to hear a fact about cats or dogs? ภายในฉาก Facts มีเจตนาที่กำหนดเองชื่อ Cat ซึ่งมีวลีการฝึกที่ผู้ใช้อาจพูดเพื่อฟังข้อเท็จจริงเกี่ยวกับแมว เช่น "ฉันอยากฟังข้อเท็จจริงเกี่ยวกับแมว" หรือ "แมว" เมื่อผู้ใช้ขอฟังเรื่องน่ารู้เกี่ยวกับแมว ระบบจะจับคู่เจตนา Cat และทริกเกอร์การเปลี่ยนฉากไปยังฉากที่ชื่อ Cat fact. ฉาก Cat fact จะเปิดใช้งานและส่งข้อความแจ้งไปยังผู้ใช้ซึ่งมีเรื่องน่ารู้เกี่ยวกับแมว

รูปที่ 1 ลำดับการสนทนาทั่วไปใน Action ที่สร้างด้วย Actions SDK
ฉาก Intent และการเปลี่ยนฉากรวมกันเป็นตรรกะของการสนทนาและกำหนดเส้นทางต่างๆ ที่ผู้ใช้สามารถใช้ในการสนทนาของ Action ในส่วนถัดไป คุณจะสร้างฉากและกำหนดวิธีเปิดใช้งานฉากนั้นหลังจากที่ผู้ใช้เรียกใช้ Action
เปลี่ยนจากการเรียกใช้หลักไปยังฉาก
ในส่วนนี้ คุณจะสร้างฉากใหม่ชื่อ Start ซึ่งจะส่งข้อความแจ้งไปยังผู้ใช้เพื่อถามว่าต้องการให้ทำนายโชคชะตาหรือไม่ นอกจากนี้ คุณยังเพิ่มทรานซิชันจากการเรียกใช้หลักไปยังฉาก Start ใหม่ได้ด้วย
หากต้องการสร้างฉากนี้และเพิ่มการเปลี่ยนผ่าน ให้ทำตามขั้นตอนต่อไปนี้
- เปิด
custom/global/actions.intent.MAIN.yamlในโปรแกรมแก้ไขข้อความ - แทนที่ข้อความในฟิลด์
transitionToScene(actions.scene.END_CONVERSATION) ด้วยข้อความต่อไปนี้transitionToScene: Start
actions.intent.MAIN.yaml
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Welcome to the mythical land of Gryffinberg! Based on your clothes,
you are not from around these lands. It looks like you're on your way
to an epic journey.
transitionToScene: Start
ซึ่งจะบอกให้ Action เปลี่ยนจากคำสั่งเรียกใช้หลักไปยังStart
- บันทึกไฟล์
- ในเทอร์มินัล ให้สร้างไดเรกทอรี
scenesใหม่ในไดเรกทอรีcustomดังนี้
mkdir custom/scenes
- สร้างไฟล์ใหม่ชื่อ
Start.yamlในไดเรกทอรีscenesซึ่งแสดงถึงฉากstartใน Action ของคุณ
touch custom/scenes/Start.yaml
- เปิด
Start.yamlในโปรแกรมแก้ไขข้อความ - วางโค้ดต่อไปนี้ลงในไฟล์
Start.yaml
Start.yaml
onEnter:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Before you continue on your quest, would you like your fortune
told?
ในโค้ดไฟล์ Start.yaml จะมีฟิลด์ชื่อ onEnter ซึ่งเป็นขั้นตอนแรกที่ทำงานในวงจรของฉาก
ในกรณีนี้ ระบบจะเพิ่มพรอมต์ (Before you continue on your quest...) ลงในคิวพรอมต์เมื่อผู้ใช้เข้าสู่ฉาก Start เป็นครั้งแรก
เพิ่มชิปคำแนะนำ
ชิปคำแนะนำจะแสดงคำแนะนำที่คลิกได้สำหรับผู้ใช้ ซึ่ง Action จะประมวลผลเป็นข้อมูลจากผู้ใช้ ในส่วนนี้ คุณจะเพิ่มชิปคำแนะนำ Yes และ No ที่ปรากฏใต้พรอมต์ที่คุณเพิ่งกำหนดค่า (Before you continue on your quest, would you like your fortune told?) เพื่อรองรับผู้ใช้ในอุปกรณ์ที่มีหน้าจอ
หากต้องการเพิ่มชิปคำแนะนำลงในพรอมต์ของStartฉาก ให้ทำตามขั้นตอนต่อไปนี้
- อัปเดตโค้ดใน
Start.yamlให้ตรงกับข้อมูลโค้ดต่อไปนี้ ซึ่งมีโค้ดสำหรับการกำหนดค่าชิปคำแนะนำ
Start.yaml
onEnter:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Before you continue on your quest, would you like your fortune
told?
suggestions:
- title: "Yes"
- title: "No"
- บันทึกไฟล์
ทดสอบการดำเนินการในเครื่องมือจำลอง
ในขั้นตอนนี้ แอ็กชันควรเปลี่ยนจากการเรียกใช้หลักไปเป็นStartฉาก และถามผู้ใช้ว่าต้องการให้ทำนายโชคชะตาหรือไม่ ชิปคำแนะนำควรปรากฏในจอแสดงผลจำลองด้วย
หากต้องการทดสอบ Action ในเครื่องจำลอง ให้ทำตามขั้นตอนต่อไปนี้
- จากนั้นเรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล
gactions deploy preview
คุณควรได้รับเอาต์พุตที่มีลักษณะดังนี้
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- คัดลอก URL ที่ระบุแล้ววางลงในเบราว์เซอร์
- คลิกทดสอบเพื่อไปยังเครื่องจำลอง
- พิมพ์
Talk to my test appในช่องอินพุต แล้วกดEnterAction ของคุณควรตอบกลับด้วยMain invocationพรอมต์และStartพรอมต์ฉากที่เพิ่มเข้ามา "ก่อนที่จะทำภารกิจต่อ คุณต้องการให้ทำนายโชคชะตาไหม" พร้อมชิปคำแนะนำที่แสดง
ภาพหน้าจอต่อไปนี้แสดงการโต้ตอบนี้

- คลิกชิปคำแนะนำใช่หรือไม่เพื่อตอบกลับพรอมต์ (คุณจะพูดว่า "ใช่" หรือ "ไม่" หรือป้อน
YesหรือNoในช่องป้อนข้อมูลก็ได้)
เมื่อคุณตอบกลับพรอมต์ การดำเนินการจะตอบกลับด้วยข้อความที่ระบุว่าไม่เข้าใจอินพุตของคุณ: "ขออภัย ฉันไม่เข้าใจที่คุณพูด ลองอีกครั้งได้ไหม" เนื่องจากคุณยังไม่ได้กำหนดค่า Action ให้เข้าใจและตอบกลับอินพุต "ใช่" หรือ "ไม่" Action จึงจับคู่อินพุตของคุณกับเจตนา NO_MATCH
โดยค่าเริ่มต้น NO_MATCH ความตั้งใจของระบบจะให้คำตอบทั่วไป แต่คุณสามารถปรับแต่งคำตอบเหล่านี้เพื่อระบุให้ผู้ใช้ทราบว่าคุณไม่เข้าใจสิ่งที่ผู้ใช้ป้อน Assistant จะจบการสนทนาของผู้ใช้กับการดำเนินการของคุณหลังจากที่จับคู่ข้อมูลจากผู้ใช้ไม่ได้ 3 ครั้ง
เพิ่มความตั้งใจ yes และ no
ตอนนี้ผู้ใช้สามารถตอบคำถามที่ Action ของคุณถามได้แล้ว คุณจึงกำหนดค่า Action ให้เข้าใจคำตอบของผู้ใช้ ("ใช่" หรือ "ไม่") ได้ ในส่วนต่อไปนี้ คุณจะสร้าง Intent ที่กำหนดเองซึ่งจะตรงกันเมื่อผู้ใช้พูดว่า "ใช่" หรือ "ไม่" และเพิ่ม Intent เหล่านี้ลงในStartฉาก
สร้างเจตนา yes
หากต้องการสร้างyesเจตนา ให้ทำตามขั้นตอนต่อไปนี้
- ในเทอร์มินัล ให้สร้างไดเรกทอรีใหม่ชื่อ
intentsในไดเรกทอรีcustomดังนี้
mkdir custom/intents
- สร้างไฟล์ใหม่ชื่อ
yes.yamlในไดเรกทอรีintents
touch custom/intents/yes.yaml
- เปิด
yes.yamlในโปรแกรมแก้ไขข้อความ - วางข้อมูลโค้ดต่อไปนี้ซึ่งมีวลีการฝึกลงใน
yes.yaml
yes.yaml
trainingPhrases:
- of course
- let's do it
- ok
- sure
- "y"
- "yes"
- บันทึกไฟล์
เพิ่มความตั้งใจ yes ไปยังStart ฉาก
ตอนนี้ Action สามารถเข้าใจได้เมื่อผู้ใช้แสดงความตั้งใจที่จะตอบว่า "ใช่" คุณเพิ่มyesเจตนาที่กำหนดเองลงในStartฉากได้ เนื่องจากผู้ใช้ตอบกลับพรอมต์Start ("ก่อนที่จะทำภารกิจต่อ คุณต้องการให้ทำนายโชคชะตาไหม")
หากต้องการเพิ่มความตั้งใจที่กำหนดเองนี้ลงในStartฉาก ให้ทำตามขั้นตอนต่อไปนี้
- เปิด
custom/scenes/Start.yamlในโปรแกรมแก้ไขข้อความ - เพิ่มตัวแฮนเดิล
intentEventsและyesที่ส่วนท้ายของไฟล์Start.yaml
Start.yaml
intentEvents:
- handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Your future depends on the item you choose to use for your quest. Choose wisely! Farewell, stranger.
intent: "yes"
transitionToScene: actions.scene.END_CONVERSATION
เมื่อyesเจตนาตรงกัน ระบบจะเพิ่มพรอมต์ "อนาคตของคุณขึ้นอยู่กับไอเทมที่คุณเลือกใช้ในภารกิจ..." ลงในคิวพรอมต์ จากนั้นStart ฉากจะเปลี่ยนไปเป็นactions.scene.END_CONVERSATIONฉากระบบ ซึ่งจะส่งพรอมต์ในคิวพรอมต์และสิ้นสุดการสนทนา
ทดสอบ yes Intent ในเครื่องจำลอง
ตอนนี้ Action ของคุณจะเข้าใจเมื่อผู้ใช้ต้องการฟังคำทำนายและจะแสดงคำตอบที่เหมาะสม
หากต้องการทดสอบ Intent นี้ในเครื่องจำลอง ให้ทำตามขั้นตอนต่อไปนี้
- จากนั้นเรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล
gactions deploy preview
คุณควรได้รับเอาต์พุตที่มีลักษณะดังนี้
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- คัดลอก URL ที่ระบุแล้ววางลงในเบราว์เซอร์
- คลิกทดสอบเพื่อไปยังเครื่องจำลอง
- หากต้องการทดสอบ Action ในเครื่องจำลอง ให้พิมพ์
Talk to my test appในช่องอินพุต แล้วกดEnter - พิมพ์
Yesในช่องอินพุต แล้วกดEnterหรือคลิกชิปคำแนะนำใช่

Action จะตอบกลับผู้ใช้และบอกว่าโชคชะตาขึ้นอยู่กับความช่วยเหลือที่เลือก จากนั้น Action จะสิ้นสุดเซสชันเนื่องจากคุณได้กำหนดค่าการเปลี่ยน End conversation สำหรับ Intent yes
สร้างเจตนา no
ตอนนี้คุณสามารถสร้าง noIntent เพื่อให้ Action เข้าใจและตอบกลับผู้ใช้เมื่อผู้ใช้ไม่ต้องการฟังคำทำนายได้แล้ว
หากต้องการสร้างความตั้งใจนี้ ให้ทำตามขั้นตอนต่อไปนี้
- สร้างไฟล์ใหม่ชื่อ
no.yamlในไดเรกทอรีintentsในเทอร์มินัล
touch custom/intents/no.yaml
- เปิด
no.yamlในโปรแกรมแก้ไขข้อความ - วางวลีการฝึกต่อไปนี้ลงในไฟล์
no.yaml
no.yaml
trainingPhrases:
- nope
- I don't want
- "n"
- "no"
- nah
- no thanks
- บันทึกไฟล์
เพิ่มความตั้งใจ no ไปยังStart ฉาก
ตอนนี้ Action สามารถเข้าใจได้เมื่อผู้ใช้พูดว่า "ไม่" หรือพูดอะไรที่คล้ายกับ "ไม่" เช่น "ไม่" คุณต้องเพิ่มnoความตั้งใจที่กำหนดเองลงในStartฉากเนื่องจากผู้ใช้ตอบกลับพรอมต์Start ("ก่อนที่จะทำภารกิจต่อ คุณต้องการให้ทำนายโชคชะตาไหม")
หากต้องการเพิ่มเจตนานี้สำหรับStartฉาก ให้ทำตามขั้นตอนต่อไปนี้
- เปิด
custom/scenes/Start.yamlในโปรแกรมแก้ไขข้อความ - เพิ่มแฮนเดิล
noต่อไปนี้ใต้แฮนเดิลyesในStart.yaml
Start.yaml
- handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: I understand, stranger. Best of luck on your quest! Farewell.
intent: "no"
transitionToScene: actions.scene.END_CONVERSATION
- บันทึกไฟล์
ทดสอบ no Intent ในเครื่องจำลอง
ตอนนี้ Action ของคุณจะเข้าใจเมื่อผู้ใช้ไม่ต้องการฟังคำทำนายและจะแสดงคำตอบที่เหมาะสม
หากต้องการทดสอบ Intent นี้ในเครื่องจำลอง ให้ทำตามขั้นตอนต่อไปนี้
- จากนั้นเรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล
gactions deploy preview
คุณควรได้รับเอาต์พุตที่มีลักษณะดังนี้
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- คัดลอก URL ที่ระบุแล้ววางลงในเบราว์เซอร์
- คลิกทดสอบเพื่อไปยังเครื่องจำลอง
- พิมพ์
Talk to my test appในช่องอินพุต แล้วกดEnter - พิมพ์
Noในช่องอินพุต แล้วกดEnterหรือคลิกชิปNoคำแนะนำ

Action จะอวยพรให้ผู้ใช้โชคดีในการเดินทางแทนที่จะทำนายโชคชะตา จากนั้น Action จะสิ้นสุดเซสชันเนื่องจากคุณได้กำหนดค่าการเปลี่ยน End conversation สำหรับ Intent no
5. ติดตั้งใช้งานการดำเนินการตามคำสั่งซื้อ
ปัจจุบันการตอบกลับของการดำเนินการของคุณเป็นแบบคงที่ เมื่อเปิดใช้งานฉากที่มีพรอมต์ การดำเนินการจะส่งพรอมต์เดียวกันทุกครั้ง ในส่วนนี้ คุณจะใช้ Fulfillment ที่มีตรรกะในการสร้างคำตอบแบบสนทนาแบบไดนามิก
การดำเนินการตามคำสั่งจะระบุว่าผู้ใช้เป็นผู้ใช้ที่กลับมาหรือผู้ใช้ใหม่ และแก้ไขข้อความทักทายของ Action สำหรับผู้ใช้ที่กลับมา ระบบจะย่อข้อความทักทายสำหรับผู้ใช้ที่กลับมาและรับทราบการกลับมาของผู้ใช้ โดยจะแสดงข้อความว่า "สวัสดีนักผจญภัย! ยินดีต้อนรับกลับสู่ดินแดนในตำนานแห่งกริฟฟินเบิร์ก"
สำหรับ Codelab นี้ คุณจะใช้โปรแกรมแก้ไข Cloud Functions เพื่อแก้ไขและทำให้โค้ดการจัดการคำสั่งซื้อใช้งานได้
Action ของคุณสามารถทริกเกอร์ Webhook ที่แจ้งให้คุณทราบถึงการดำเนินการตามคำสั่งของเหตุการณ์ที่เกิดขึ้นระหว่างการเรียกใช้หรือส่วนที่เฉพาะเจาะจงของการดำเนินการในฉาก เมื่อทริกเกอร์เว็บฮุก การดำเนินการจะส่งคำขอที่มีเพย์โหลด JSON ไปยังการดำเนินการตามคำสั่งพร้อมกับชื่อของตัวแฮนเดิลที่จะใช้ประมวลผลเหตุการณ์ แฮนเดิลเลอร์นี้จะดำเนินการตามตรรกะบางอย่างและแสดงผลการตอบกลับ JSON ที่เกี่ยวข้อง
สร้างการจัดการคำสั่งซื้อ
ในส่วนนี้ คุณจะแก้ไขการตอบกลับเพื่อสร้างพรอมต์ที่แตกต่างกันสำหรับผู้ใช้ที่กลับมาและผู้ใช้ใหม่เมื่อเรียกใช้ Action
หากต้องการเพิ่มตรรกะนี้ลงในการดำเนินการตามคำสั่ง ให้ทำตามขั้นตอนต่อไปนี้
- ในเทอร์มินัล ให้ตรวจสอบว่าคุณอยู่ในไดเรกทอรีรากของโปรเจ็กต์และสร้างไดเรกทอรี
webhooksใหม่
mkdir webhooks
- สร้างไฟล์ใหม่ชื่อ
ActionsOnGoogleFulfillment.yamlในไดเรกทอรีwebhooks
touch webhooks/ActionsOnGoogleFulfillment.yaml
- เปิด
ActionsOnGoogleFulfillment.yamlในโปรแกรมแก้ไขข้อความ - เพิ่มตัวแฮนเดิล
greetingและเนื้อหาinlineCloudFunctionลงในไฟล์ActionsOnGoogleFulfillment.yamlดังนี้
ActionsOnGoogleFulfillment.yaml
handlers:
- name: greeting
inlineCloudFunction:
executeFunction: ActionsOnGoogleFulfillment
ไฟล์ ActionsOnGoogleFulfillment.yaml จะกำหนดตัวแฮนเดิล Webhook (เช่น ตัวแฮนเดิล greeting) และบอกให้ Action ใช้ Cloud Functions เป็นปลายทาง Webhook
- สร้างไดเรกทอรี
ActionsOnGoogleFulfillmentใหม่ในไดเรกทอรีwebhooksโดยทำดังนี้
mkdir webhooks/ActionsOnGoogleFulfillment
- สร้างไฟล์ใหม่ชื่อ
index.jsในไดเรกทอรีActionsOnGoogleFulfillment
touch webhooks/ActionsOnGoogleFulfillment/index.js
- เปิด
index.jsในโปรแกรมแก้ไขข้อความ - เพิ่มโค้ดต่อไปนี้ลงใน
index.js
index.js
const { conversation } = require('@assistant/conversation');
const functions = require('firebase-functions');
const app = conversation({debug: true});
app.handle('greeting', conv => {
let message = 'A wondrous greeting, adventurer! Welcome back to the mythical land of Gryffinberg!';
if (!conv.user.lastSeenTime) {
message = 'Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you\'re on your way to an epic journey.';
}
conv.add(message);
});
exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);
โค้ดนี้กำหนดตัวแฮนเดิล greeting ซึ่งจะส่งคำทักทายที่เหมาะสมไปยัง
ผู้ใช้
- บันทึกไฟล์
- สร้างไฟล์ใหม่ชื่อ
package.jsonในไดเรกทอรีActionsOnGoogleFulfillment
touch webhooks/ActionsOnGoogleFulfillment/package.json
package.json ไฟล์จะระบุการอ้างอิงและข้อมูลเมตาอื่นๆ สำหรับ Webhook
- เปิด
package.jsonในโปรแกรมแก้ไขข้อความ - คัดลอกโค้ดจากที่เก็บ GitHub นี้ แล้ววางลงในไฟล์
package.json - บันทึกไฟล์
ทำความเข้าใจโค้ด
การดำเนินการตามคำขอของคุณซึ่งใช้ไลบรารีการดำเนินการตามคำขอของ Actions on Google สำหรับ Node.js จะตอบกลับคำขอ HTTP จาก Google Assistant
ในข้อมูลโค้ดก่อนหน้านี้ คุณกําหนดตัวแฮนเดิล greeting ซึ่งจะตรวจสอบว่าผู้ใช้เคยเข้าชมการกระทําที่มีพร็อพเพอร์ตี้ lastSeenTime หรือไม่ หากไม่ได้กำหนดพร็อพเพอร์ตี้ lastSeenTime ผู้ใช้จะเป็นผู้ใช้ใหม่และจะได้รับการทักทายที่ตั้งใจไว้สำหรับผู้ใช้ใหม่ มิฉะนั้น ข้อความจะรับทราบการกลับมาของผู้ใช้และสร้างคำทักทายที่แก้ไขแล้ว
อัปเดตการเรียกใช้หลักเพื่อทริกเกอร์เว็บฮุค
เมื่อกำหนดฟังก์ชัน greeting แล้ว คุณจะกำหนดค่าตัวแฮนเดิลเหตุการณ์ greeting ใน Intent การเรียกใช้หลักได้ เพื่อให้ Action รู้ว่าต้องเรียกใช้ฟังก์ชันนี้เมื่อผู้ใช้เรียกใช้ Action ของคุณ
หากต้องการกำหนดค่า Action ให้เรียกใช้แฮนเดิล greeting ใหม่ ให้ทำตามขั้นตอนต่อไปนี้
- เปิด
custom/global/actions.intent.MAIN.yamlในโปรแกรมแก้ไขข้อความ - แทนที่โค้ดใน
actions.intent.MAIN.yamlด้วยโค้ดต่อไปนี้
actions.intent.MAIN.yaml
handler:
webhookHandler: greeting
transitionToScene: Start
- บันทึกไฟล์
ตอนนี้เมื่อเจตนาการเรียกใช้หลักตรงกัน ระบบจะเรียกใช้แฮนเดิลเลอร์ greeting webhook
ทดสอบการเรียกใช้หลักที่อัปเดตแล้วในเครื่องจำลอง
หากต้องการทดสอบ Action ในเครื่องจำลอง ให้ทำตามขั้นตอนต่อไปนี้
- จากนั้นเรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล
gactions deploy preview
คุณควรได้รับเอาต์พุตที่มีลักษณะดังนี้
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- คัดลอก URL ที่ระบุแล้ววางลงในเบราว์เซอร์
- หากต้องการทดสอบ Action ในเครื่องจำลอง ให้พิมพ์
Talk to my test appในช่องอินพุต แล้วกดEnter
เนื่องจากคุณได้ทดสอบ Action ใน Codelab นี้ไปก่อนหน้านี้แล้ว คุณจึงไม่ใช่ผู้ใช้ใหม่ ดังนั้นคุณจะได้รับคำทักทายแบบย่อต่อไปนี้ "คำทักทายที่แสนวิเศษ นักผจญภัย ยินดีต้อนรับกลับสู่ดินแดนในตำนานแห่งกริฟฟินเบิร์ก..."
6. สร้างภาพการดำเนินการด้วย Actions Builder
Actions SDK สามารถทำงานร่วมกับ IDE บนเว็บที่เรียกว่า Actions Builder ซึ่งผสานรวมเข้ากับคอนโซล Actions คุณสามารถพุชระบบไฟล์ในเครื่องไปยังฉบับร่างของ Action ในคอนโซลได้ด้วยคำสั่ง gactions push gactions push จะย้ายเนื้อหาทั้งหมดจากไฟล์ในเครื่องไปยัง Actions Builder ซึ่งแตกต่างจาก gactions deploy preview ที่อนุญาตให้คุณทดสอบ Action ในเครื่องจำลองเท่านั้น
คอนโซล Actions จะแสดงภาพการกำหนดค่าของ Action การเห็นการแมปการกระทําในรูปแบบภาพอาจมีประโยชน์ในระหว่างการพัฒนา และไม่ส่งผลต่อเวอร์ชันของ Action ที่แสดงเพื่อการทดสอบ
หากต้องการพุชโปรเจ็กต์ Actions และดูในคอนโซล Actions ให้ทำตามขั้นตอนต่อไปนี้
- ในเทอร์มินัล ให้เรียกใช้คำสั่งต่อไปนี้เพื่อพุชโปรเจ็กต์ไปยังคอนโซล Actions
gactions push
คุณควรได้รับเอาต์พุตที่มีลักษณะดังนี้
✔ Done. Files were pushed to Actions Console, and you can now view your project with this URL: https://console.actions.google.com/project/{project-id}/overview. If you want to test your changes, run "gactions deploy preview", or navigate to the Test section in the Console.
- คัดลอก URL ที่ระบุแล้ววางลงในเบราว์เซอร์
- ในคอนโซล Actions ให้คลิกพัฒนาในแถบนำทางด้านบน
- คลิกลูกศรเมนูแบบเลื่อนลงข้างฉาก แล้วคลิกเริ่ม คุณควรเห็นภาพแทนฉาก
Startของการดำเนินการ ดังที่แสดงในภาพหน้าจอต่อไปนี้

ล้างข้อมูลโปรเจ็กต์ [แนะนำ]
ขอแนะนำให้นำโปรเจ็กต์ที่คุณไม่ได้ตั้งใจจะใช้ออกเพื่อหลีกเลี่ยงค่าใช้จ่ายที่อาจเกิดขึ้น หากต้องการลบโปรเจ็กต์ที่คุณสร้างใน Codelab นี้ ให้ทำตามขั้นตอนต่อไปนี้
- หากต้องการลบโปรเจ็กต์และทรัพยากร Cloud ให้ทำตามขั้นตอนที่ระบุไว้ในส่วนการปิด (ลบ) โปรเจ็กต์
- ไม่บังคับ: หากต้องการนำโปรเจ็กต์ออกจาก Actions Console ทันที ให้ทำตามขั้นตอนที่ระบุไว้ในส่วนลบโปรเจ็กต์ หากไม่ทำขั้นตอนนี้ให้เสร็จสมบูรณ์ ระบบจะนำโปรเจ็กต์ของคุณออกโดยอัตโนมัติหลังจากผ่านไปประมาณ 30 วัน
7. ยินดีด้วย
คุณทราบข้อมูลพื้นฐานเกี่ยวกับการสร้าง Actions สำหรับ Google Assistant ด้วย Actions SDK
สิ่งที่คุณครอบคลุม
- วิธีตั้งค่าโปรเจ็กต์ Actions ในคอนโซล Actions
- วิธีใช้ Actions SDK เพื่อสร้างโปรเจ็กต์การดำเนินการในระบบไฟล์ในเครื่อง
- วิธีเพิ่มพรอมต์ในการเรียกใช้หลักเพื่อให้ผู้ใช้เริ่มการสนทนากับ Action ของคุณได้
- วิธีสร้างอินเทอร์เฟซการสนทนาด้วยฉาก ความตั้งใจ ทรานซิชัน ชิปคำแนะนำ และการดำเนินการตามคำสั่ง
- วิธีทดสอบแอ็กชันด้วยเครื่องจำลอง Actions
ดูข้อมูลเพิ่มเติม
ดูแหล่งข้อมูลต่อไปนี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้าง Actions สำหรับ Google Assistant
- เว็บไซต์เอกสารประกอบอย่างเป็นทางการสำหรับการพัฒนา Actions สำหรับ Google Assistant
- หน้า GitHub ของ Actions on Google สำหรับโค้ดตัวอย่างและไลบรารี
- ชุมชน Reddit อย่างเป็นทางการสำหรับนักพัฒนาแอปที่ทำงานร่วมกับ Assistant
ติดตาม @ActionsOnGoogle บน Twitter เพื่อดูประกาศล่าสุด และทวีตพร้อม #AoGDevs เพื่อแชร์สิ่งที่คุณสร้าง
แบบสำรวจความคิดเห็น
ก่อนออกจากหน้านี้ โปรดทำแบบสำรวจสั้นๆ เกี่ยวกับประสบการณ์ของคุณ