diff --git a/speechAssets/CustomSlot.txt b/speechAssets/CustomSlot.txt deleted file mode 100644 index d3cb291..0000000 --- a/speechAssets/CustomSlot.txt +++ /dev/null @@ -1,4 +0,0 @@ -melee -ranged -carry -support diff --git a/speechAssets/IntentSchema.json b/speechAssets/IntentSchema.json index 89f4b3e..01df2c2 100644 --- a/speechAssets/IntentSchema.json +++ b/speechAssets/IntentSchema.json @@ -2,23 +2,40 @@ "intents": [ { "intent": "RequestIntent", - "slot": [ + "slots": [ { - "name": "Category", - "type": "CustomSlot" + "name": "Role", + "type": "ROLE_TYPES" } ] }, { "intent": "RequestTwoIntent", - "slot": [ + "slots": [ { - "name": "Category1", - "type": "CustomSlot" + "name": "RoleOne", + "type": "ROLE_TYPES" }, { - "name": "Category2", - "type": "CustomSlot" + "name": "RoleTwo", + "type": "ROLE_TYPES" + } + ] + }, + { + "intent": "RequestThreeIntent", + "slots": [ + { + "name": "RoleOne", + "type": "ROLE_TYPES" + }, + { + "name": "RoleTwo", + "type": "ROLE_TYPES" + }, + { + "name": "RoleThree", + "type": "ROLE_TYPES" } ] }, diff --git a/speechAssets/ROLE_TYPES.txt b/speechAssets/ROLE_TYPES.txt new file mode 100644 index 0000000..d209ce4 --- /dev/null +++ b/speechAssets/ROLE_TYPES.txt @@ -0,0 +1,10 @@ +melee +ranged +carry +support +strength +intelligence +agility +nuker +initiator +escape diff --git a/speechAssets/Utterances.txt b/speechAssets/Utterances.txt index 54b6861..9313351 100644 --- a/speechAssets/Utterances.txt +++ b/speechAssets/Utterances.txt @@ -1,15 +1,21 @@ -RequestIntent random {Category} -RequestIntent random {Category} hero -RequestIntent random any {Category} -RequestIntent random any {Category} hero -RequestIntent random another {Category} -RequestIntent random another {Category} hero -RequestTwoIntent random {Category1} {Category2} -RequestIntent random {Category1} {Category2} hero -RequestIntent random any {Category1} {Category2} -RequestIntent random any {Category1} {Category2} hero -RequestIntent random another {Category1} {Category2} -RequestIntent random another {Category1} {Category2} hero +RequestIntent random {Role} +RequestIntent random {Role} hero +RequestIntent random any {Role} +RequestIntent random any {Role} hero +RequestIntent random another {Role} +RequestIntent random another {Role} hero +RequestTwoIntent random {RoleOne} {RoleTwo} +RequestTwoIntent random {RoleOne} {RoleTwo} hero +RequestTwoIntent random any {RoleOne} {RoleTwo} +RequestTwoIntent random any {RoleOne} {RoleTwo} hero +RequestTwoIntent random another {RoleOne} {RoleTwo} +RequestTwoIntent random another {RoleOne} {RoleTwo} hero +RequestThreeIntent random {RoleOne} {RoleTwo} {RoleThree} +RequestThreeIntent random {RoleOne} {RoleTwo} {RoleThree} hero +RequestThreeIntent random any {RoleOne} {RoleTwo} {RoleThree} +RequestThreeIntent random any {RoleOne} {RoleTwo} {RoleThree} hero +RequestThreeIntent random another {RoleOne} {RoleTwo} {RoleThree} +RequestThreeIntent random another {RoleOne} {RoleTwo} {RoleThree} hero AnyRequest random any hero AnyRequest random any other hero Stop stop diff --git a/src/index.js b/src/index.js index 1c33ce0..ee3f06d 100644 --- a/src/index.js +++ b/src/index.js @@ -13,7 +13,7 @@ var handlers = { 'RequestIntent': function () { var given = [] - var category = this.event.request.intent.slots.Category + var category = this.event.request.intent.slots.Role given.push(category) randomHero(given, (name) => { @@ -23,8 +23,8 @@ var handlers = { 'RequestTwoIntent': function () { var given = [] - var category1 = this.event.request.intent.slots.Category1 - var category2 = this.event.request.intent.slots.Category2 + var category1 = this.event.request.intent.slots.RoleOne + var category2 = this.event.request.intent.slots.RoleTwo given.push(category1) given.push(category2) @@ -33,6 +33,20 @@ var handlers = { }) }, + 'RequestThreeIntent': function () { + var given = [] + var category1 = this.event.request.intent.slots.RoleOne + var category2 = this.event.request.intent.slots.RoleTwo + var category3 = this.event.request.intent.slots.RoleThree + given.push(category1) + given.push(category2) + given.push(category3) + + randomHero(given, (name) => { + this.emit(':tell', name) + }) + }, + 'AnyRequest': function () { var given = [] randomHero(given, (name) => { @@ -56,6 +70,19 @@ function randomHero (categories, callback) { var location httpsGet((heroes) => { + var possible = false + + for (var i = 0; i < heroes.length; i++) { + if (checkCategory(categories, heroes[i])) { + possible = true + } + } + + if (!possible) { + callback('Random failed') + return + } + do { location = random(heroes.length) } while (!checkCategory(categories, heroes[location])) @@ -92,24 +119,16 @@ function random (size) { } function checkCategory (categories, hero) { - var i = 0 - var hits = false - while (i < categories.length) { - if (categories[i] === hero.primary_attr || categories[i] === hero.attack_type) { - hits = true - } else { - for (var j = 0; j < hero.roles.length; j++) { - if (categories[i] === hero.roles[j]) { - hits = true - break - } + for (var i = 0; i < categories.length; i++) { + for (var j = 0; j < hero.roles.length; j++) { + if (categories[i].localeCompare(hero.roles[j]) === 0) { + hits = true } } if (hits) { - i++ hits = false } else { return false