2017-04-05 14 views
0

私はスキルSkillIntentを持っています。特定のゲームについて質問すると、そのスキルの説明が返ってきます。完璧に動作します - 私が今しようとしているのは、WHOがスキルを持っているという返事です。以下は1つのAlexaスキルで異なる呼び出し

私の作業コードです:

'use strict'; 

var AlexaSkill = require('./AlexaSkill'), 
    descriptions = require('./descriptions'); 

var APP_ID = undefined; 

var ZombicideSkills = function() { 
    AlexaSkill.call(this, APP_ID); 
}; 

// Extend AlexaSkill 
ZombicideSkills.prototype = Object.create(AlexaSkill.prototype); 
ZombicideSkills.prototype.constructor = ZombicideSkills; 

ZombicideSkills.prototype.eventHandlers.onLaunch = function (launchRequest, session, response) { 
    var speechText = "You can ask a question like, what does this skill do? ... Now, what can I help you with."; 

    var repromptText = "For instructions on what you can say, please say help me."; 
    response.ask(speechText, repromptText); 
}; 

ZombicideSkills.prototype.intentHandlers = { 
    "SkillIntent": function (intent, session, response) { 
     var skillSlot = intent.slots.Skill, 
      skillName; 
     if (skillSlot && skillSlot.value){ 
      skillName = skillSlot.value.toLowerCase(); 
     } 

     var cardTitle = "Description for " + skillName, 
      description = descriptions[skillName], 
      speechOutput, 
      repromptOutput; 
     if (description) { 
      speechOutput = { 
       speech: description, 
       type: AlexaSkill.speechOutputType.PLAIN_TEXT 
      }; 
      response.tellWithCard(speechOutput, cardTitle, description); 
     } else { 
      var speech; 
      if (skillName) { 
       speech = "I'm sorry, I don't know if I know " + skillName + ". What else can I help with?"; 
      } else { 
       speech = "I'm sorry, I currently do not know that skill. What else can I help with?"; 
      } 
      speechOutput = { 
       speech: speech, 
       type: AlexaSkill.speechOutputType.PLAIN_TEXT 
      }; 
      repromptOutput = { 
       speech: "What else can I help with?", 
       type: AlexaSkill.speechOutputType.PLAIN_TEXT 
      }; 
      response.ask(speechOutput, repromptOutput); 
     } 
    }, 

    "AMAZON.StopIntent": function (intent, session, response) { 
     var speechOutput = "Goodbye"; 
     response.tell(speechOutput); 
    }, 

    "AMAZON.CancelIntent": function (intent, session, response) { 
     var speechOutput = "Goodbye"; 
     response.tell(speechOutput); 
    }, 

    "AMAZON.HelpIntent": function (intent, session, response) { 
     var speechText = "You can ask questions such as, what does this skill do, or, you can say exit... Now, what can I help you with?"; 
     var repromptText = "You can say things like, what does this skill do, or you can say exit... Now, what can I help you with?"; 
     var speechOutput = { 
      speech: speechText, 
      type: AlexaSkill.speechOutputType.PLAIN_TEXT 
     }; 
     var repromptOutput = { 
      speech: repromptText, 
      type: AlexaSkill.speechOutputType.PLAIN_TEXT 
     }; 
     response.ask(speechOutput, repromptOutput); 
    } 
}; 

exports.handler = function (event, context) { 
    var zombicide = new ZombicideSkills(); 
    zombicide.execute(event, context); 
}; 

これは、MCヘルパーのものと非常によく似たモデル化しています。私はちょうど 'ActorIntent'と呼ばれる追加のintentHandlerを実装し、次にUtterencesで指定します。ActorIntent what {actors} have the {skill} skill?

私はこのアイデアで遊んできましたが、ラムダ関数のトラブルシューティング方法はまだ分かりません。エンドポイントが到達可能かどうかを確認してください。

これに2つの異なるスキルを持たなければならないと迷惑でしょうが、わかりません。それはちょうど私のコードベースの問題ですか、私は行くことができると問題なしでActorIntentを作成することができるはずですか?

答えて

3

異なる意図を定義します(たとえば、SkillOwnerIntent)。また、Alexa Developer Portalの対話モデルで、そのインテントの発話を定義します。あなたは間違いなくこのために別のスキルを作る必要はありません。

+0

はそれを感謝 - 私の二次テントが関数、または何か他のものを壊した場合、私はわかりませんでした。ありがとう。 – DNorthrup

0

優れたユーザーエクスペリエンスを持つソリューションは、次のようになります。

  1. あなたのコードでは、あなたのSkillIntent

    をトリガーゲームスキルに関するユーザーAKS:変数にこのスキルを保存します(例:文字列として)

  2. Alexaはあなたのスキルの説明を教え、さらに質問することがあります。

  3. ユーザーは次の質問をすることができます。このスキルを持つ俳優は誰ですか?これにより、あなたの意図のActorIntentがトリガされます。

    発話:ActorIntentこのスキルを持つ俳優はどれですか?

  4. (変数に格納しているため)ユーザーはどのスキルを話しているのか分かります。今、アレクサは特定の俳優を教えることができます。

テントスキーマ例:

{ 
"intents": [ 
    { 
    "intent": "ActorIntent" 
    }, 
    { 
    "slots": [ 
     { 
     "name": "skill", 
     "type": "SKILL" 
     } 
    ], 
    "intent": "SkillIntent" 
    } 
} 
関連する問題