2016-10-09 17 views
7

Tôi nhận thấy điều gì đó lạ khi thử nghiệm mô hình tương tác của tôi với bộ kỹ năng Alexa.Loại vị trí tùy chỉnh của tôi đang lấy các giá trị không mong muốn

tôi xác định một loại khe cắm tùy chỉnh, như vậy:

CAR_MAKERS Mercedes | BMW | Volkswagen 

Và chương trình ý định của tôi là một cái gì đó như:

{ 
    "intents": [ 
    { 
     "intent": "CountCarsIntent", 
     "slots": [ 
     { 
      "name": "CarMaker", 
      "type": "CAR_MAKERS" 
     }, 
    ... 

với lời phát biểu mẫu như:

CountCarsIntent Add {Amount} cars to {CarMaker} 

Bây giờ , khi thử nghiệm trong bảng điều khiển dành cho nhà phát triển, tôi nhận thấy rằng tôi có thể viết các nội dung như:

"Add three cars to Ford" 

Và nó sẽ thực sự phân tích cú pháp chính xác! Mặc dù "Ford" chưa bao giờ được đề cập trong mô hình tương tác! Yêu cầu lambda là:

"request": { 
    "type": "IntentRequest", 
    ... 
    "intent": { 
     "name": "CountCarsIntent", 
     "slots": { 
     "CarMaker": { 
      "name": "ExpenseCategory", 
      "value": "whatever" 
     }, 
... 

Điều này thực sự làm tôi ngạc nhiên, bởi vì các tài liệu về custom slot types là khá rõ ràng về thực tế là các khe cắm chỉ có thể đưa các giá trị được liệt kê trong mô hình tương tác.

Bây giờ, có vẻ như các giá trị cũng được phân tích cú pháp động! Đây có phải là một tính năng mới hay tôi đang thiếu thứ gì đó?

+1

Tôi nhận thấy rằng người dùng @samiles chia sẻ quan sát của tôi trong câu trả lời cho câu hỏi này: http://stackoverflow.com/a/34078869/1375015 –

Trả lời

5

Thực ra đó là bình thường (và tốt, IMO). Alexa sử dụng danh sách từ mà bạn cung cấp làm hướng dẫn chứ không phải danh sách cuối cùng.

Nếu không có sự linh hoạt này thì sẽ không có cách nào để biết liệu người dùng có sử dụng các từ mà bạn không mong đợi hay không. Bằng cách này bạn có thể tìm hiểu và cải thiện danh sách của bạn và xử lý.

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