2016-10-09 4 views
7

मैंने एलेक्सा कौशल किट के साथ अपने इंटरैक्शन मॉडल का परीक्षण करते समय कुछ अजीब देखा।मेरा कस्टम स्लॉट प्रकार अनपेक्षित मानों पर ले रहा है

मैं, एक कस्टम स्लॉट प्रकार परिभाषित इसलिए की तरह:

CAR_MAKERS Mercedes | BMW | Volkswagen 

और मेरे इरादे योजना थी कुछ की तरह:

CountCarsIntent Add {Amount} cars to {CarMaker} 

अब:

{ 
    "intents": [ 
    { 
     "intent": "CountCarsIntent", 
     "slots": [ 
     { 
      "name": "CarMaker", 
      "type": "CAR_MAKERS" 
     }, 
    ... 
जैसे नमूना उच्चारणों के साथ

, डेवलपर कंसोल में परीक्षण करते समय, मैंने देखा कि मैं सामान लिख सकता हूं जैसे:

"Add three cars to Ford" 

और यह वास्तव में इसे सही ढंग से पार्स करेगा! हालांकि बातचीत मॉडल में "फोर्ड" का कभी उल्लेख नहीं किया गया था! लैम्ब्डा अनुरोध है:

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

यह वास्तव में, मुझे तो हैरानी क्योंकि custom slot types पर प्रलेखन तथ्य यह है कि स्लॉट केवल मान जो बातचीत मॉडल में सूचीबद्ध हैं ले जा सकते हैं के बारे में बहुत स्पष्ट है।

अब, ऐसा लगता है कि मूल्यों को भी गतिशील रूप से पार्स किया गया है! क्या यह एक नई सुविधा है, या क्या मुझे कुछ याद आ रहा है?

+1

मैंने देखा कि उपयोगकर्ता @ सैमाइल इस प्रश्न के उत्तर में मेरे अवलोकन साझा करता है: http://stackoverflow.com/a/34078869/1375015 –

उत्तर

5

दरअसल यह सामान्य (और अच्छा, आईएमओ) है। एलेक्सा उस शब्द सूची का उपयोग करता है जिसे आप एक गाइड के रूप में प्रदान करते हैं, एक निश्चित सूची नहीं।

यदि इसमें यह लचीलापन नहीं है तो यह जानने का कोई तरीका नहीं होगा कि उपयोगकर्ता उन शब्दों का उपयोग कर रहे थे जिन्हें आप उम्मीद नहीं कर रहे थे। इस तरह आप अपनी सूची और हैंडलिंग सीख और सुधार सकते हैं।

संबंधित मुद्दे