2017-08-24 14 views
2

私のAlexaアプリのIntentsには、いくつかのスロットが必要です。 Alexaのスキルビルダーがこれを簡単にします。私は必要に応じてスロットに印を付けることができ、ユーザーがスロットの情報を提供するためにAlexaが求めるべきものを設定することができます。問題は開発者としてAlexaにあなたのラムダと言って、Alexaがスロット充填を処理して欲しいということです。ドキュメントを読んAmazon Alexa SDKでDialog.Delegateを返す方法は?

が、私はこの部分を取得:ダイアログがIN_PROGRESSである場合

https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/dialog-interface-reference#details

それは無いupdatedIntentでDialog.Delegateを返し、

を述べています。

どうすればよいですか?私のラムダで私は持っています

@Override 
    public SpeechletResponse onIntent(final IntentRequest request, final Session session) 
     throws SpeechletException { 

    Intent intent = request.getIntent(); 
    String intentName = (intent != null) ? intent.getName() : null; 

    if ("AddTwoNumbers".equals(intentName)) { 
     if (!request.getDialogState().equals("COMPLETED")) { 
      return new DelegateDirective(); 
     } else { 
     handleAdditionIntent(); 
     } 
    } else { // handle other intents} 
    } 

そのコードサンプルはあまりにも役に立たないようです。

} else if (intentRequest.dialogState != "COMPLETED"){ 
    // return a Dialog.Delegate directive with no updatedIntent property. 
} else { 

答えて

1

先日この問題が発生し、別のpostに基づいて解決策を得ました。 Alexaスキルキットのバージョン1.5.0で私のために働く少し修正されたバージョンはここにあります。お役に立てれば。 2つ以上のスロットを埋める場合は、IN_PROGRESSの状態を別の方法で処理したい場合があります。このコードはここでは1つのスロットに対してのみ設計されています。

 if (speechletRequestEnvelope.getRequest().getDialogState() != IntentRequest.DialogState.COMPLETED) 
     // 1. Create DialogIntent based on your original intent 
     DialogIntent dialogIntent = new DialogIntent(speechletRequestEnvelope.getRequest().getIntent()); 

     // 2. Create Directive 
     DelegateDirective dd = new DelegateDirective(); 
     dd.setUpdatedIntent(dialogIntent); 

     List<Directive> directiveList = new ArrayList<>(); 
     directiveList.add(dd); 

     SpeechletResponse speechletResp = new SpeechletResponse(); 
     speechletResp.setDirectives(directiveList); 
     // 3. return the response. 
     speechletResp.setNullableShouldEndSession(false); 
     return speechletResp; 
    } 
+0

アレクサの開発に対するアマゾンのサポートはひどいものです。私は助けに感謝します。私が見逃していた大きな問題は、 'speechletResp.setNullableShouldEndSession(false);' Cheers! – EGHDK

+0

私はもっと同意できません...文書は非常に抽象的で、Javaの具体例はありません – DLee

関連する問題