วิธีการเขียนทักษะ Alexa ที่กำหนดเองโดยไม่มี 'ถาม xxxx'


18

ขณะนี้ฉันกำลังใช้ fauxmo เพื่อส่งคำสั่งที่กำหนดเองไปยังอุปกรณ์ต่าง ๆ เพื่อเปิด / ปิด (ตัวอย่างเช่นฉันมี WiFi เป็น IR converter เพื่อควบคุมเครื่องรับสัญญาณและทีวีของฉัน) และฉันสามารถเปิด / ปิดทีวีได้ด้วยสิ่งนี้

ฉันยังมีการตั้งค่าการรวม Kodi ดังนั้นฉันสามารถพูดได้:

Alexa, Ask Kodi to set volume to 50%

แต่ฉันอยากจะบอกว่า:

Alexa, Set tuner volume to 50%
Alexa, Play Bluray

คือฉันต้องการที่จะสามารถควบคุมอุปกรณ์ได้โดยไม่จำเป็นต้องAsk xxxxเป็นส่วนหนึ่งของคำขอของฉัน

เป็นการดีที่ฉันต้องการทำสิ่งนี้โดยไม่มีบริการบนคลาวด์ (เช่น SmartThings หรือ Wink)

ฉันชอบโซลูชันที่ใช้โดย fauxmo (เลียนแบบบริการ UPNP ที่มีอยู่) แต่ จำกัด เพียงเปิด / ปิด (และ 'สลัว' ถ้าคุณใช้ Hue ที่เปิดใช้งานโปรแกรมแก้ไข) และไม่ยืดหยุ่นพอจริง ๆ

คำตอบ:


11

ฉันสำรวจการวางชื่อการเรียกร้องสำหรับทักษะที่กำหนดเองของ Alexa สำหรับโครงการสองสามโครงการ และสิ่งที่ผมขึ้นมาด้วยหลังจากชั่วโมงของการอ่านผ่านคู่มือและเอกสารคือว่า ... มันไม่สามารถทำได้สำหรับทักษะที่กำหนดเอง

ดังนั้นทางออกที่ดีที่สุดของคุณสำหรับกรณีการใช้งานของคุณคือการใช้ Alexa Smart Home พร้อมกับบริการสมาร์ทโฮม ฉันรู้ว่าคุณพูดว่า:

ฉันต้องการทำสิ่งนี้โดยไม่ใช้บริการบนคลาวด์ (เช่น SmartThings หรือ Wink)

น่าเสียดายที่วิธีเดียวที่จะไม่มีชื่อการเรียกใช้กับ Alexa คือการใช้ API ที่กำหนดไว้ล่วงหน้าของพวกเขา (เช่นสมาร์ทโฮมทักษะรายการและการบรรยายสรุป Flash)

แก้ไข: กรณีการใช้งานของคุณอยู่ใน Smart Home API ดังนั้นคุณสามารถสร้างบริการของคุณเองที่ใช้ API นั้นแทนการพึ่งพาบริการอื่น ๆ (Wink, SmartThings และอื่น ๆ )


1
มีแหล่งที่มาที่บอกว่าไม่สามารถทำได้หรือเป็นผลจากการวิจัยโดยนัยของคุณหรือไม่?
Helmar

มันเป็นเพียงนัย ถึงแม้ว่าจะอยู่ในสายตามองหลังการพิจารณาว่าการจดจำเสียงและ NLP ทำงานอย่างไรมันควรจะเป็นการยืนยันที่สมเหตุสมผลและฉันไม่ควรเข้าร่วมการวิจัยในตอนแรก มันเป็นการยืนยันที่สมเหตุสมผลเพราะคำพูดที่ต้องการบริบทที่จะตีความ - และบริบทนั้นเป็นชื่อการร้องขอ ในความเป็นจริงเหตุผลที่มีคำปลุกเหมือนกันกับการมีชื่อภาวนา - เพื่อให้งบที่จะตีความเป็นของบริบท (คำปลุกเป็นบริบทกว้างของระบบเช่นที่คำพูดแบบสุ่มจะไม่ได้รับการประมวลผล)
leon.valencia

วิธีเดียวที่จะมีคำพูดที่ไม่ต้องการชื่อการเรียกร้องคือคำที่มีบริบทกว้างของระบบ (นี่คือ API) ตัวอย่างเช่นคำพูดที่ Alexa ตีความว่าเป็นการโต้ตอบกับอุปกรณ์จะเป็นสำหรับ smart home API โดยอัตโนมัติ - NLP จะจัดหมวดหมู่คำพูดเช่นนั้นโดยใช้คำหลักเช่นเปิดปิดปิด ฯลฯ ไวยากรณ์ + ซึ่งเป็นคำสั่งของอุปกรณ์
leon.valencia

แต่คุณรู้ว่า ... กรณีการใช้งานของคุณอยู่ภายใต้ API บ้านอัจฉริยะ ดังนั้นฉันจะต่อท้ายคำตอบของฉันเพราะคุณสามารถใช้ API นั้น
leon.valencia

ขอบคุณ ฉันอ่านเกี่ยวกับทักษะสมาร์ทโฮมและในขณะที่ฉันไม่คิดว่าพวกเขาจะสามารถทำทุกอย่างที่ฉันต้องการได้ดูเหมือนว่าแผนการของ Amazon ในการเพิ่มความสามารถให้มากขึ้น ดังนั้นแทนที่จะเป็น fauxmo ฉันคิดว่ามันอาจคุ้มค่ากับการลงทุนในทักษะการใช้งานสมาร์ทโฮมที่เหมาะสมที่สามารถประมวลผลคำสั่งที่มีอยู่ทั้งหมดและสามารถขยายได้ในอนาคต นี่คือ API ปัจจุบันสำหรับลูกหลาน: developer.amazon.com/public/solutions/alexa/alexa-skills-kit/…
PhratcuredBlue

7

คุณควรจะสามารถทำเช่นนี้ตอนนี้มีของ Alexa ชื่อปฏิสัมพันธ์ฟรี

เพื่อให้ทักษะของคุณค้นพบได้มากขึ้นสำหรับการโต้ตอบแบบไม่มีชื่อคุณสามารถใช้อินเทอร์เฟซ CanFulfillIntentRequest ในทักษะของคุณ


6

เนื่องจากคมรายละเอียดแล้วในคำตอบของเขาไม่มีทางที่จะไปอย่างสมบูรณ์โดยไม่มีชื่อการเรียกเว้นแต่ว่าคุณกำลังจัดการกับ API ที่กำหนดไว้ล่วงหน้า อย่างไรก็ตามการถามความสามารถของฉันไม่ใช่วิธีเดียวที่จะใช้ชื่อการเรียก

หน้านักพัฒนาซอฟต์แวร์เสนอวิธีที่แตกต่างกันสามวิธีในการใช้ชื่อการเรียกร้องพร้อมคำขอ

“ Alexa, ขอคำทำนายดวงชะตาประจำวันสำหรับราศีเมถุน”

“ Alexa คุยกับทำนายดวงชะตาประจำวันและมอบดวงชะตาให้กับราศีพฤษภให้ฉัน”

“ Alexa ขอดูดวงราศีพฤษภของฉันด้วยการดูดวงรายวันให้ฉัน”

เอกสารชื่อการเรียกใช้ Alexa

นอกจากนี้หน้านี้จะแสดงคำอื่น ๆ ที่คุณสามารถใช้เชื่อมต่อคำขอชื่อการเรียกใช้และคำการเชื่อมต่อที่จำเป็น ดังนั้นหากคุณสร้างทักษะ Alexa ของคุณเองทั้งหมดเกี่ยวกับการใช้ชื่อการขอร้องที่ดีและการร้องขอที่ดีเพื่อให้เป็นไปตามธรรมชาติ

ยิ่งไปกว่านั้นเสียงสะท้อนของคุณควรตอบสนองต่อสิ่งนี้โดยเริ่มต้น Blu-ray ด้วยการรวม Kodi ของคุณ

Alexaเล่น Blu-ray กับ Kodi

ดังนั้นในขณะที่คุณไม่สามารถกำจัดชื่อการเรียกร้องนอก APIs ที่กำหนดไว้ล่วงหน้าคุณสามารถทำให้คำสั่งเสียงรู้สึกเป็นธรรมชาติมากขึ้นและข้ามการใช้งานถาม ... ที่น่าอึดอัดใจ


2

หากคุณใช้คำพิเศษที่ไม่ได้ใช้เป็นค่าเริ่มต้นโดย Alexa เป็นไปได้จริง ๆ วิธีการค่อนข้างยุ่งยากอยู่แล้ว

คุณเพียงแค่ต้องหลีกเลี่ยงการผ่าน AWS สำหรับคำขอของคุณ! เป็นไปไม่ได้ที่คุณจะพูด? ใช่ - เป็นไปได้

ใน app Amazon Alexa ของคุณหรือบนเว็บ Amazon Alexa app ที่คุณเข้าสู่ระบบในบัญชีของ Amazon Alexa ของคุณและใน -> การตั้งค่า -> ประวัติของคุณมีหน้าสดของทุกคำขอและคำพูดที่คุณจะบอก Alexa

ในขณะนี้คุณสามารถใช้โปรแกรมแยกวิเคราะห์เว็บเพื่อให้ได้คำพูดและเรียกสคริปต์ถ้าคำนี้เป็นคำที่คุณต้องการหรือคุณสามารถใช้ซอฟต์แวร์ขนาดเล็กที่น่าทึ่งสำหรับ Windows เท่านั้นที่สามารถเรียกใช้การกระทำและสคริปต์

นี่คือลิงค์ของซอฟต์แวร์ ตรวจสอบ YouTube สำหรับบทช่วยสอนเกี่ยวกับวิธีใช้ addtopad

หากคุณต้องการเปิดใช้งานสคริปต์เพียงแค่เรียกผู้ฟังบนพอร์ตและคำขอพิเศษที่ส่งหลังจากคำในซอฟต์แวร์ ฉันใช้ที่บ้านและฉันชอบความจริงที่ไม่ต้องพูดชื่อการขอร้อง

หลังจากที่ฉันพูดคุณสามารถใช้คำใด ๆ แม้คำเหมือนเปิด มันจะทำให้สคริปต์ของคุณ แต่คุณจะได้ยิน "ขอโทษฉันไม่รู้ว่า" จาก Alexa

ฉันใช้มันและมันก็ทำงานได้อย่างสมบูรณ์แบบ!


นั่นเป็นวิธีที่น่าสนใจ
Helmar

เราควรเชื่อถือซอฟต์แวร์นั้นหรือไม่ ทำให้ฉันกระตุก ...
Sean Houlihane

-2

ดังนั้นเอกสารของ Amazon นี้ไม่จริงหรือ https://developer.amazon.com/docs/custom-skills/understanding-how-users-invoke-custom-skills.html#invoking-a-skill-with-no-specific-request-no-intent

ดูเหมือนว่าจะพูดได้โดยตรงว่าคุณสามารถพูดว่า "Alexa" บวกกับชื่อการเรียก เช่น "Alexa, Daily Horoscopes"

นอกจากนี้ยังแสดงวิธีนี้เป็นตัวเลือก # 3 สำหรับทักษะที่กำหนดเอง: https://developer.amazon.com/docs/custom-skills/choose-the-invocation-name-for-a-custom-skill.html#invoking- ทักษะที่กำหนดเอง


3
เอกสารเป็นจริง แต่ฉันไม่คิดว่าเป็นสิ่งที่ผู้เขียนมองหาที่นี่ ตัวอย่างเช่น "Play Bluray" จะไม่ใช่ชื่อการขอร้อง แต่เป็นเจตนาโดยไม่ระบุชื่อการเรียกร้องใด ๆ หากคุณไม่ได้ตั้งชื่อทักษะของคุณ "Play Bluray" (ซึ่งอาจไม่ได้รับอนุญาตตามแนวทางการตั้งชื่อของ Amazon) สิ่งนี้จะไม่สามารถใช้งานได้
Aurora0001
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.