amazon-web-servicesaws-lambdaalexa-skills-kitalexa-slot

Amazon Echo trouble with Integers


I developed an AWS Lambda function for an Alexa Skill, some of the utterances are expecting an integer. Echo is most of the times confusing "two" as "to" and "four" as "for", eight as "ate". So far the only solution I could come up with is to say the word "number" before the actual number and the problem is fixed. However I was wondering if there is some other way to fix this without having to say the word "number" and adding it to my utterances. I could not find a solution online for this.


Solution

  • AMAZON.NUMBER did not work. What worked for me was writing a method that changed words to integers it also handles the 'to', 'for', 'ate', etc... problem. A bit tedious to write but it worked at least. The following is the JavaScript code I used

     var Small=
    
    {
    
     '1' : 1,
     '2' : 2,
     '3' : 3,
     '4' : 4,
     '5' : 5,
     '6' : 6,
     '7' : 7,
     '8' : 8,
     '9' : 9,
     '10' : 10,
     '11' : 11,
     '12' : 12,
     '13' : 13,
     '14' : 14,
     '15' : 15,
     '16' : 16,
     '17' : 17,
     '18' : 18,
     '19' : 19,
     '20' : 20,
     '21' : 21,
     '22' : 22,
     '23' : 23,
     '24' : 24,
     '25' : 25,
     '26' : 26,
     '27' : 27,
     '28' : 28,
     '29' : 29,
     '30' : 30,
     '31' : 31,
     '32' : 32,
     '33' : 33,
     '34' : 34,
     '35' : 35,
     '36' : 36,
     '37' : 37,
     '38' : 38,
     '39' : 39,
     '40' : 40,
     '41' : 41,
     '42' : 42,
     '43' : 43,
     '44' : 44,
     '45' : 45,
     '46' : 46,
     '47' : 47,
     '48' : 48,
     '49' : 49,
     '50' : 50,
     '51' : 51,
     '52' : 52,
     '53' : 53,
     '54' : 54,
     '55' : 55,
     '56' : 56,
     '57' : 57,
     '58' : 58,
     '59' : 59,
     '60' : 60,
     '61' : 61,
     '62' : 62,
     '63' : 63,
     '64' : 64,
     '65' : 65,
     '66' : 66,
     '67' : 67,
     '68' : 68,
     '69' : 69,
     '70' : 70,
     '71' : 71,
     '72' : 72,
     '73' : 73,
     '74' : 74,
     '75' : 75,
     '76' : 76,
     '77' : 77,
     '78' : 78,
     '79' : 79,
     '80' : 80,
     '81' : 81,
     '82' : 82,
     '83' : 83,
     '84' : 84,
     '85' : 85,
     '86' : 86,
     '87' : 87,
     '88' : 88,
     '89' : 89,
     '90' : 90,
     '91' : 91,
     '92' : 92,
     '93' : 93,
     '94' : 94,
     '95' : 95,
     '96' : 96,
     '97' : 97,
     '98' : 98,
     '99' : 99,
     '100' : 100,
     '101' : 101,
     '102' : 102,
     '103' : 103,
     '104' : 104,
     '105' : 105,
     '106' : 106,
     '107' : 107, 
     '108' : 108,
     '109' : 109,
     '110' : 110,
     '111' : 111,
     '112' : 112,
     '113' : 113,
     '114' : 114,
     '115' : 115,
     '116' : 116,
     '117' : 117,
     '118' : 118,
     '119' : 119,
     '120' : 120,
     '121' : 121,
     '122' : 122,
     '123' : 123,
     '124' : 124,
     '125' : 125,
     '126' : 126,
     '127' : 127,
     '128' : 128,
     '129' : 129,
     '130' : 130,
     '131' : 131,
     '132' : 132,
     '133' : 133,
     '134' : 134,
     '135' : 135,
     '136' : 136,
     '137' : 137,
     '138' : 138,
     '139' : 139,
     '140' : 140,
     '141' : 141,
     '142' : 142,
     '143' : 143,
     '144' : 144,
     '145' : 145,
     '146' : 146,
     '147' : 147,
     '148' : 148,
     '149' : 149,
     '150' : 150,
     '151' : 151,
     '152' : 152,
     '153' : 153,
     '154' : 154,
     '155' : 155,
     '156' : 156,
     '157' : 157,
     '158' : 158,
     '159' : 159,
     '160' : 160,
     '161' : 161,
     '162' : 162,
     '163' : 163,
     '164' : 164,
     '165' : 165,
     '166' : 166,
     '167' : 167,
     '168' : 168,
     '169' : 169,
     '170' : 170,
     '171' : 171,
     '172' : 172,
     '173' : 173,
     '174' : 174,
     '175' : 175,
     '176' : 176,
     '177' : 177,
     '178' : 178,
     '179' : 179,
     '180' : 180,
     '181' : 181,
     '182' : 182,
     '183' : 183,
     '184' : 184,
     '185' : 185,
     '186' : 186,
     '187' : 187,
     '188' : 188,
     '189' : 189,
     '190' : 190,
     '191' : 191,
     '192' : 192,
     '193' : 193,
     '194' : 194,
     '195' : 195,
     '196' : 196,
     '197' : 197,
     '198' : 198,
     '199' : 199,
     '200' : 200,
     '201' : 201,
     '202' : 202,
     '203' : 203,
     '204' : 204,
     '205' : 205,
     '206' : 206,
     '207' : 207,
     '208' : 208,
     '209' : 209,
     '210' : 210,
     '211' : 211,
     '212' : 212,
     '213' : 213,
     '214' : 214,
     '215' : 215,
     '216' : 216,
     '217' : 217,
     '218' : 218,
     '219' : 219,
     '220' : 220,
     '221' : 221,
     '222' : 222,
     '223' : 223,
     '224' : 224,
     '225' : 225,
     '226' : 226,
     '227' : 227,
     '228' : 228,
     '229' : 229,
     '230' : 230,
     '231' : 231,
     '232' : 232,
     '233' : 233,
     '234' : 234,
     '235' : 235,
     '236' : 236,
     '237' : 237,
     '238' : 238,
     '239' : 239,
     '240' : 240,
     '241' : 241,
     '242' : 242,
     '243' : 243,
     '244' : 244,
     '245' : 245,
     '246' : 246,
     '247' : 247,
     '248' : 248,
     '249' : 249,
     '250' : 250,
     '251' : 251,
     '252' : 252,
     '253' : 253,
     '254' : 254,
     '255' : 255,
     '256' : 256,
     '257' : 257,
     '258' : 258,
     '259' : 259,
     '260' : 260,
     '261' : 261,
     '262' : 262,
     '263' : 263,
     '264' : 264,
     '265' : 265,
     '266' : 266,
     '267' : 267,
     '268' : 268,
     '269' : 269,
     '270' : 270,
     '271' : 271,
     '272' : 272,
     '273' : 273,
     '274' : 274,
     '275' : 275,
     '276' : 276,
     '277' : 277,
     '278' : 278,
     '279' : 279,
     '280' : 280,
     '281' : 281,
     '282' : 282,
     '283' : 283,
     '284' : 284,
     '285' : 285,
     '286' : 286,
     '287' : 287,
     '288' : 288,
     '289' : 289,
     '290' : 290,
     '291' : 291,
     '292' : 292,
     '293' : 293,
     '294' : 294,
     '295' : 295,
     '296' : 296,
     '297' : 297,
     '298' : 298,
     '299' : 299,
     '300' : 300,
     '301' : 301,
     '302' : 302,
     '303' : 303,
     '304' : 304,
     '305' : 305,
     '306' : 306,
     '307' : 307,
     '308' : 308,
     '309' : 309,
     '310' : 310,
     '311' : 311,
     '312' : 312,
     '313' : 313,
     '314' : 314,
     '315' : 315,
     '316' : 316,
     '317' : 317,
     '318' : 318,
     '319' : 319,
     '320' : 320,
     '321' : 321,
     '322' : 322,
     '323' : 323,
     '324' : 324,
     '325' : 325,
     '326' : 326,
     '327' : 327,
     '328' : 328,
     '329' : 329,
     '330' : 330,
     '331' : 331,
     '332' : 332,
     '333' : 333,
     '334' : 334,
     '335' : 335,
     '336' : 336,
     '337' : 337,
     '338' : 338,
     '339' : 339,
     '340' : 340,
     '341' : 341,
     '342' : 342,
     '343' : 343,
     '344' : 344,
     '345' : 345,
     '346' : 346,
     '347' : 347,
     '348' : 348,
     '349' : 349,
     '350' : 350,
     '351' : 351,
     '352' : 352,
     '353' : 353,
     '354' : 354,
     '355' : 355,
     '356' : 356,
     '357' : 357,
     '358' : 358,
     '359' : 359,
     '360' : 360,
     '361' : 361,
     '362' : 362,
     '363' : 363,
     '364' : 364,
     '365' : 365,
     '366' : 366,
     '367' : 367,
     '368' : 368,
     '369' : 369,
     '370' : 370,
     '371' : 371,
     '372' : 372,
     '373' : 373,
     '374' : 374,
     '375' : 375,
     '376' : 376,
     '377' : 377,
     '378' : 378,
     '379' : 379,
     '380' : 380,
     '381' : 381,
     '382' : 382,
     '383' : 383,
     '384' : 384,
     '385' : 385,
     '386' : 386,
     '387' : 387,
     '388' : 388,
     '389' : 389,
     '390' : 390,
     '391' : 391,
     '392' : 392,
     '393' : 393,
     '394' : 394,
     '395' : 395,
     '396' : 396,
     '397' : 397,
     '398' : 398,
     '399' : 399,
     '400' : 400,
     '401' : 401,
     '402' : 402,
     '403' : 403,
     '404' : 404,
     '405' : 405,
     '406' : 406,
     '407' : 407,
     '408' : 408,
     '409' : 409,
     '410' : 410,
     '411' : 411,
     '412' : 412,
     '413' : 413,
     '414' : 414,
     '415' : 415,
     '416' : 416,
     '417' : 417,
     '418' : 418,
     '419' : 419,
     '420' : 420,
     '421' : 421,
     '422' : 422,
     '423' : 423,
     '424' : 424,
     '425' : 425,
     '426' : 426,
     '427' : 427,
     '428' : 428,
     '429' : 429,
     '430' : 430,
     '431' : 431,
     '432' : 432,
     '433' : 433,
     '434' : 434,
     '435' : 435,
     '436' : 436,
     '437' : 437,
     '438' : 438,
     '439' : 439,
     '440' : 440,
     '441' : 441,
     '442' : 442,
     '443' : 443,
     '444' : 444,
     '445' : 445,
     '446' : 446,
     '447' : 447,
     '448' : 448,
     '449' : 449,
     '450' : 450,
     '451' : 451,
     '452' : 452,
     '453' : 453,
     '454' : 454,
     '455' : 455,
     '456' : 456,
     '457' : 457,
     '458' : 458,
     '459' : 459,
     '460' : 460,
     '461' : 461,
     '462' : 462,
     '463' : 463,
     '464' : 464,
     '465' : 465,
     '466' : 466,
     '467' : 467,
     '468' : 468,
     '469' : 469,
     '470' : 470,
     '471' : 471,
     '472' : 472,
     '473' : 473,
     '474' : 474,
     '475' : 475,
     '476' : 476,
     '477' : 477,
     '478' : 478,
     '479' : 479,
     '480' : 480,
     '481' : 481,
     '482' : 482,
     '483' : 483,
     '484' : 484,
     '485' : 485,
     '486' : 486,
     '487' : 487,
     '488' : 488,
     '489' : 489,
     '490' : 490,
     '491' : 491,
     '492' : 492,
     '493' : 493,
     '494' : 494,
     '495' : 495,
     '496' : 496,
     '497' : 497,
     '498' : 498,
     '499' : 499,
     '500' : 500,
     '501' : 501,
     '502' : 502,
     '503' : 503,
     '504' : 504,
     '505' : 505,
     '506' : 506,
     '507' : 507,
     '508' : 508,
     '509' : 509,
     '510' : 510,
     '511' : 511,
     '512' : 512,
     '513' : 513,
     '514' : 514,
     '515' : 515,
     '516' : 516,
     '517' : 517,
     '518' : 518,
     '519' : 519,
     '520' : 520,
     '521' : 521,
     '522' : 522,
     '523' : 523,
     '524' : 524,
     '525' : 525,
     '526' : 526,
     '527' : 527,
     '528' : 528,
     '529' : 529,
     '530' : 530,
     '531' : 531,
     '532' : 532,
     '533' : 533,
     '534' : 534,
     '535' : 535,
     '536' : 536,
     '537' : 537,
     '538' : 538,
     '539' : 539,
     '540' : 540,
     '541' : 541,
     '542' : 542,
     '543' : 543,
     '544' : 544,
     '545' : 545,
     '546' : 546,
     '547' : 547,
     '548' : 548,
     '549' : 549,
     '550' : 550,
     '551' : 551,
     '552' : 552,
     '553' : 553,
     '554' : 554,
     '555' : 555,
     '556' : 556,
     '557' : 557,
     '558' : 558,
     '559' : 559,
     '560' : 560,
     '561' : 561,
     '562' : 562,
     '563' : 563,
     '564' : 564,
     '565' : 565,
     '566' : 566,
     '567' : 567,
     '568' : 568,
     '569' : 569,
     '570' : 570,
     '571' : 571,
     '572' : 572,
     '573' : 573,
     '574' : 574,
     '575' : 575,
     '576' : 576,
     '577' : 577,
     '578' : 578,
     '579' : 579,
     '580' : 580,
     '581' : 581,
     '582' : 582,
     '583' : 583,
     '584' : 584,
     '585' : 585,
     '586' : 586,
     '587' : 587,
     '588' : 588,
     '589' : 589,
     '590' : 590,
     '591' : 591,
     '592' : 592,
     '593' : 593,
     '594' : 594,
     '595' : 595,
     '596' : 596,
     '597' : 597,
     '598' : 598,
     '599' : 599,
     '600' : 600,
     '601' : 601,
     '602' : 602,
     '603' : 603,
     '604' : 604,
     '605' : 605,
     '606' : 606,
     '607' : 607,
     '608' : 608,
     '609' : 609,
     '610' : 610,
     '611' : 611,
     '612' : 612,
     '613' : 613,
     '614' : 614,
     '615' : 615,
     '616' : 616,
     '617' : 617,
     '618' : 618,
     '619' : 619,
     '620' : 620,
     '621' : 621,
     '622' : 622,
     '623' : 623,
     '624' : 624,
     '625' : 625,
     '626' : 626,
     '627' : 627,
     '628' : 628,
     '629' : 629,
     '630' : 630,
     '631' : 631,
     '632' : 632,
     '633' : 633,
     '634' : 634,
     '635' : 635,
     '636' : 636,
     '637' : 637,
     '638' : 638,
     '639' : 639,
     '640' : 640,
     '641' : 641,
     '642' : 642,
     '643' : 643,
     '644' : 644,
     '645' : 645,
     '646' : 646,
     '647' : 647,
     '648' : 648,
     '649' : 649,
     '650' : 650,
     '651' : 651,
     '652' : 652,
     '653' : 653,
     '654' : 654,
     '655' : 655,
     '656' : 656,
     '657' : 657,
     '658' : 658,
     '659' : 659,
     '660' : 660,
     '661' : 661,
     '662' : 662,
     '663' : 663,
     '664' : 664,
     '665' : 665,
     '666' : 666,
     '667' : 667,
     '668' : 668,
     '669' : 669,
     '670' : 670,
     '671' : 671,
     '672' : 672,
     '673' : 673,
     '674' : 674,
     '675' : 675,
     '676' : 676,
     '677' : 677,
     '678' : 678,
     '679' : 679,
     '680' : 680,
     '681' : 681,
     '682' : 682,
     '683' : 683,
     '684' : 684,
     '685' : 685,
     '686' : 686,
     '687' : 687,
     '688' : 688,
     '689' : 689,
     '690' : 690,
     '691' : 691,
     '692' : 692,
     '693' : 693,
     '694' : 694,
     '695' : 695,
     '696' : 696,
     '697' : 697,
     '698' : 698,
     '699' : 699,
     '700' : 700,
     '701' : 701,
     '702' : 702,
     '703' : 703,
     '704' : 704,
     '705' : 705,
     '706' : 706,
     '707' : 707,
     '708' : 708,
     '709' : 709,
     '710' : 710,
     '711' : 711,
     '712' : 712,
     '713' : 713,
     '714' : 714,
     '715' : 715,
     '716' : 716,
     '717' : 717,
     '718' : 718,
     '719' : 719,
     '720' : 720,
     '721' : 721,
     '722' : 722,
     '723' : 723,
     '724' : 724,
     '725' : 725,
     '726' : 726,
     '727' : 727,
     '728' : 728,
     '729' : 729,
     '730' : 730,
     '731' : 731,
     '732' : 732,
     '733' : 733,
     '734' : 734,
     '735' : 735,
     '736' : 736,
     '737' : 737,
     '738' : 738,
     '739' : 739,
     '740' : 740,
     '741' : 741,
     '742' : 742,
     '743' : 743,
     '744' : 744,
     '745' : 745,
     '746' : 746,
     '747' : 747,
     '748' : 748,
     '749' : 749,
     '750' : 750,
     '751' : 751,
     '752' : 752,
     '753' : 753,
     '754' : 754,
     '755' : 755,
     '756' : 756,
     '757' : 757,
     '758' : 758,
     '759' : 759,
     '760' : 760,
     '761' : 761,
     '762' : 762,
     '763' : 763,
     '764' : 764,
     '765' : 765,
     '766' : 766,
     '767' : 767,
     '768' : 768,
     '769' : 769,
     '770' : 770,
     '771' : 771,
     '772' : 772,
     '773' : 773,
     '774' : 774,
     '775' : 775,
     '776' : 776,
     '777' : 777,
     '778' : 778,
     '779' : 779,
     '780' : 780,
     '781' : 781,
     '782' : 782,
     '783' : 783,
     '784' : 784,
     '785' : 785,
     '786' : 786,
     '787' : 787,
     '788' : 788,
     '789' : 789,
     '790' : 790,
     '791' : 791,
     '792' : 792,
     '793' : 793,
     '794' : 794,
     '795' : 795,
     '796' : 796,
     '797' : 797,
     '798' : 798,
     '799' : 799,
     '800' : 800,
     'zero': 0,
     'oh': 0,
     'o': 0,
        'one': 1,
        'two': 2,
        'to': 2,
        'three': 3,
        'four': 4,
        'for': 4,
        'five': 5,
        'six': 6,
        'sticks': 6,
        'seven': 7,
        'eight': 8,
        'ate': 8,
        'nine': 9,
        'ten': 10,
        'eleven': 11,
        'twelve': 12,
        'thirteen': 13,
        'fourteen': 14,
        'fifteen': 15,
        'sixteen': 16,
        'seventeen': 17,
        'eighteen': 18,
        'nineteen': 19,
        'twenty': 20,
        'thirty': 30,
        'forty': 40,
        'fifty': 50,
        'sixty': 60,
        'seventy': 70,
        'eighty': 80,
        'ninety': 90,
        'hundred': null,
        
    };
    

    I added the numbers just to be on the safe side and since the project I was working on only required 3 digit numbers (Course Numbers) I didn't have to go any further and thought it a good idea to just put those few hundred numbers. Clearly not a good idea for all numbers.

    function text2num(s)
    
     {
      var array = s.toString().split(/[\s-]+/);
          var num=0;
           var a;
           var index=0;
            if(s.includes('hundred')){
            while(index<array.length){
            a=array[index];
            index++;
                if(a.includes('and')===false){
            num= feach(a, num, 0);
                }
            
        }
        return num;
    
        }else if(s.includes('ty') ){
            var d=100;
            while(index<array.length){
                a=array[index];
                
                index++;
                        if(a.includes('and')===false){
                num=feach(a, num, 0)*d;
                d=1;
                        }
            }
            return num;
        }else{
            var n='';
    
            while(index<array.length){
            a=array[index];
                if(a.includes('and')===false){
            n= n + feach(a, num, 0);
                }
            index++;
            }
            return n;
        }
        
        }
    function feach(w, g, n ) {
            var x;
            var x = Small[w];
            if (x !== null) {
                g = g + x;
                    return g;
            }
            else{
                g = g * 100;
                    return g;
            }