2016-11-14 13 views
7

Tôi đang phát triển một kỹ năng đơn giản, tùy chỉnh cho Alexa. Tôi có nó và chạy, và lưu trữ xử lý trên AWS Lambda. Nó hoạt động tốt ngoại trừ ...Bộ kỹ năng Alexa (ASK) và Utterances

Trong giao diện người dùng thử, nếu tôi nhập lời phát biểu hợp lệ, ví dụ: trợ giúp, hủy, bơi, chạy (hai phát biểu tùy chỉnh), mọi thứ hoạt động tốt; tuy nhiên, nếu tôi nhập một lời nói vô nghĩa, ví dụ: dsfhfdsjhf, dịch vụ Alexa luôn ánh xạ những điều vô nghĩa đến mục đích hợp lệ đầu tiên trong lược đồ ý định.

Trong mã lambda của tôi, tôi có trình xử lý để xử lý các ý định không xác định; tuy nhiên, ý định không bao giờ được biết. Đây có phải là một tạo phẩm của giao diện thử nghiệm không? Có chuyện gì khác xảy ra?

Cảm ơn, John

+2

Tôi không thể trả lời câu hỏi, nhưng tôi đã gặp sự khác biệt tương tự khi sử dụng giao diện người dùng thử nghiệm so với thiết bị thực tế. +1 để đặt câu hỏi. Tôi sẽ chỉ đạo bạn hướng tới diễn đàn Alexa Skills Kit Dev, nhưng có vẻ như bạn đã đăng câu hỏi ở đó. :-) – TimHayes

+0

Tôi đang nghĩ đây là một tạo phẩm của giao diện thử nghiệm. Bạn đã thử kiểm tra điều này trên thiết bị của mình chưa? –

+0

@ John bạn đã tìm ra giải pháp cho điều này chưa? – Dhawal

Trả lời

0

Thay vì gõ dsfhfdsjhf (mà không phải là phát âm được trong bất kỳ ngôn ngữ Alexa biết), những gì sẽ xảy ra nếu lời nói của bạn là boogie hoặc lắc?

Trong trường hợp thực tế, tôi không nghĩ Alexa sẽ vượt qua dsfhfdsjhf, do đó rất khó lập kế hoạch chính xác hành vi sẽ là gì.

+0

Làm thế nào điều này không hữu ích? – AppleBaggins

2

Dựa trên việc bao gồm ý định không được giải quyết trong cách tiếp cận của bạn, có vẻ như bạn đang sử dụng Alexa Skills Kit SDK for Node.js. Vấn đề của bạn không phải là một tạo phẩm của giao diện thử nghiệm. Có, một cái gì đó khác đang xảy ra.

Trong khi chưa được công nhận bởi amazon, đây là một vấn đề được công nhận trong SDK bởi một số người. Xem this open issue. Phát biểu từ kinh nghiệm cá nhân về đề xuất ở trên, không quan trọng nếu bạn sử dụng từ ngữ hay ngữ pháp thực sự, ý định không được giải quyết sẽ không bao giờ được gọi. Cho đến khi điều này là cố định, đề nghị của tôi sẽ là xây dựng một trình xử lý đó là một dấu nhắc mức cao cho kỹ năng của bạn, và nhắc lại cho người dùng các tùy chọn hợp lệ mà họ có. Vị trí của nó để trở thành tất cả. Hy vọng rằng chúng tôi sẽ thấy việc duy trì tốt hơn SDK này trong tương lai.

0

Vì vậy, bạn muốn kết nối tất cả các đầu vào rác với một mục đích duy nhất. Bạn may mắn. Dưới đây là một số điều bạn nên biết trước khi tiếp tục.

Trong Node.js, trình xử lý không được xử lý được kích hoạt trong một MODE nếu ý định trả về bởi dịch vụ thoại Alexa không có sẵn trong số MODE.
Ví dụ MODE sẽ là chế độ xác nhận. Trong số nhiều ý định có sẵn có và không có những ý định duy nhất được chấp nhận.

var ConfirmationHandlers = Alexa.CreateStateHandler(states.CONFIRMATIONMODE, { 
    'YesIntent': function() { 
     this.handler.state = states.CLOSINGCOSTSMODE; 
     message = ` So you will be buying this house. Great! `; 
     reprompt = `Please carry on with the other intents found in the house buyer skill. `; 
     this.emit(':ask', message, reprompt); 
    }, 
    'NoIntent': function() { 
     this.handler.state = states.GENERALSEARCHMODE; 
     message = ` So you won't be buying this house. That's Ok, Continue searching for your dream house in the House buyer skill. !`; 
     reprompt = `Continue searching for your dream house in the House buyer skill.`; 
     this.emit(':ask', message, reprompt); 
    }, 
    'Unhandled': function() { 
     console.log("UNHANDLED"); 
     var reprompt = ` All other intents are disabled at this moment. Would you like to buy this house Yes or No? `; 
     this.emit(':ask', reprompt, reprompt); 
    } 
}); 

Tuy nhiên, trước khi đến hàm lambda Dịch vụ thoại Alexa phải diễn giải lời nói của bạn và ánh xạ nó đến một trong các ý định có sẵn. Nếu lời nói của bạn là rác và không lập bản đồ cho bất kỳ mục đích cụ thể nào thì hiện tại nó đang được ánh xạ tới mục đích đầu tiên.

Giải pháp: Nếu bạn muốn thêm mục đích rác, đây là thứ cần được xử lý bởi lược đồ ý định chứ không phải do mục đích không được giải quyết. Để thêm mục đích dọn rác, bạn có thể làm theo hướng dẫn trong bài viết amazon này.

https://developer.amazon.com/blogs/post/Tx3IHSFQSUF3RQP/Why-a-Custom-Slot-is-the-Literal-Solution

Kịch bản 3: Tôi chỉ muốn tất cả mọi thứ. Sử dụng các loại vị trí tùy chỉnh cho ngữ pháp như được mô tả ở trên thường đáp ứng được mong muốn này và cho phép bạn cải thiện độ chính xác thông qua đào tạo NLP.Nếu bạn vẫn chỉ muốn mọi thứ, bạn có thể tạo một khe tùy chỉnh được gọi là một cái gì đó như "CatchAll" và mục đích và lời nói tương ứng: CatchAllIntent {CatchAll}. Nếu bạn sử dụng cùng một dữ liệu đào tạo mà bạn đã sử dụng cho LITERAL, bạn sẽ nhận được kết quả tương tự. Mọi người thường thấy rằng thêm dữ liệu huấn luyện cụ thể về kịch bản ít hơn cải thiện độ chính xác .

Nếu bạn vẫn chưa nhận được kết quả, cố gắng thiết lập các catchall giá trị khoảng hai mươi 2-8 từ cụm từ ngẫu nhiên (từ một từ ngẫu nhiên máy phát điện - được thực sự ngẫu nhiên). Khi người dùng nói điều gì đó mà khớp với những lời nói khác của bạn, những ý định đó vẫn sẽ được gửi đi. Khi nó không khớp với bất kỳ thứ gì, nó sẽ rơi vào khe CatchAll. Nếu bạn đi tuyến đường này, bạn sẽ mất độ chính xác bởi vì bạn không phải là tận dụng tối đa NLP của Alexa, do đó bạn sẽ cần thử nghiệm nhiều.

Bất kỳ đầu vào không được ánh xạ tới một trong những ý đồ cụ thể hơn của bạn, giống như YES hoặc NO, bản đồ sẽ rất có khả năng CatchAll mục đích này.

Các vấn đề liên quan