0

デモンストレーションの目的で、私は対話ベースでアレクサスキルを磨くべきです。 すべてのalexaレスポンスはハードコードされています。Alexaスキル - 対話のためにインテントを生き続ける

パート1: ユーザー:アレクサ、MySkill {Question1}を尋ねる

スキルのテンプレートは次のようです。 Alexa:ハードコードされた答え。

パート2: ユーザー:Alexa、MySkillに質問してください。Question2.1 Alexa:質問2.1のハードコードされた回答。 ユーザー:Alexa、MySkill {Qeustion2.2}を聞く Alexa:ハードコードされた回答。

パート1を作成できましたが、パート2ではいくつか問題があります。 質問2.1と2.2については別個のインテントが必要ですか?または、スキルを生かしておく可能性はありますか?

答えて

0

1回転のやりとりを使用しているようです(つまり、セッションを開いたままにしていない場合は、shouldEndSessionhttps://www.npmjs.com/package/alexa-appをチェックしてください)。それにかかわらず、現在の状態をセッションオブジェクトに保存するか、別の場所に保存する必要があります(一意のrequest.userIdに関連付けられています)。

異なるインテントを使用することは別の解決策かもしれませんが、お互いに誤って誤ってマッピングされている可能性のある類似の発話があると、失敗する傾向があります。

0

まず、開発中にalexa-sdkを使用していると仮定します。あなたはそれがあることを知っていない場合は、このリンクをチェックアウトしてください:

https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs

を、あなたの意思スキーマであなたのスキルに質問を破ることができ、複数の方法があります。 「QuestionOneIntent」や「QuestionTwoIntent」などの個別の意図、または個々の質問に対応するスロットインテントの「QuestionIntent」のいずれかです。元のポストは情報をあまり与えていないので、どの構造が最適な設定であるかはわかりません。

alexa-sdkには2つの一般的な応答があります。 ":tell"はAlexaに応答を言い、すぐにアイドル状態に戻ります(あなたの話を聞いていない)。 ":ask"はレスポンスを出し、8秒待ってから別のコマンドを出すのを待っている間に再確認メッセージをフォローアップします。会話の中で生きているセッションを維持するためとして

、単にあなたのセッションが開いたままにし、ユーザーがより多くの質問をし続けることができるためにこれができるようになります

var speechOutput = "This is the answer to Question" 
var speechOutputReprompt = "Do you have any more questions?" 
this.emit(":ask", speechOutput, speechOutputReprompt) 

を使用して応答を発することができました。再呼び出しに「いいえ」と答えた場合、セッションを閉じる別のインテントを作成しなければなりません。したがって、shouldEndSession変数がtrueになります。コードを構成する方法の例を次に示します。

"QuestionIntent": function(){ 
var responseName = "" 
var slots = this.event.request.intent.slots 
for (var slot in slots){ 
    if(slots[slot].value != undefined){ 
     responseName = slots[slot].name; 
     switch(responseName){ 
      case "QuestionOneIntent": 
       var QuestionOneAnswer = "Answer to question one"; 
       this.emit(":tell", QuestionOneAnswer); 
       break; 
      case "QuestionTwoIntent": 
       var QuestionTwoAnswer = "Answer to question two"; 
       this.emit(":ask", QuestionTwoAnswer, QuestionTwoAnswerReprompt); 
       break; 
      default: 
       console.log("error"); 
       break; 
     } 
    } 
} 
} 
関連する問題