2017-12-04 4 views
0

zu erstellen Ich möchte einen Bot mit einer einfachen Absicht programmgesteuert erstellen, leider habe ich eine Fehlermeldung, dass die Ressource (die Absicht) nicht gefunden wurde, obwohl ich die erstellte Absicht sehen kann in der Konsole.Versuchen, Bot mit AWS Java SDK mit Intents

Das ist meinen einfachen Code:

package building; 

import java.util.ArrayList; 

import com.amazonaws.regions.Regions; 
import com.amazonaws.services.lexmodelbuilding.AmazonLexModelBuilding; 
import com.amazonaws.services.lexmodelbuilding.AmazonLexModelBuildingClientBuilder; 
import com.amazonaws.services.lexmodelbuilding.model.ContentType; 
import com.amazonaws.services.lexmodelbuilding.model.FulfillmentActivity; 
import com.amazonaws.services.lexmodelbuilding.model.FulfillmentActivityType; 
import com.amazonaws.services.lexmodelbuilding.model.Intent; 
import com.amazonaws.services.lexmodelbuilding.model.Message; 
import com.amazonaws.services.lexmodelbuilding.model.Prompt; 
import com.amazonaws.services.lexmodelbuilding.model.PutBotRequest; 
import com.amazonaws.services.lexmodelbuilding.model.PutBotResult; 
import com.amazonaws.services.lexmodelbuilding.model.PutIntentRequest; 
import com.amazonaws.services.lexmodelbuilding.model.PutIntentResult; 

public class ChatBotBuilder { 

    public static void main(String [] args) { 

     AmazonLexModelBuilding botBuilder = AmazonLexModelBuildingClientBuilder.standard().withRegion(Regions.EU_WEST_1).build(); 
     ArrayList<Intent> intents = new ArrayList<Intent>(); 
     Intent test = new Intent().withIntentName("Testintent").withIntentVersion("1"); 


     intents.add(test); 

     PutIntentRequest putIntentRequest = new PutIntentRequest() 
       .withDescription("das ist ein intenttest") 
       .withFulfillmentActivity(new FulfillmentActivity().withType(FulfillmentActivityType.ReturnIntent)) 
       .withName("Testintent") 
       .withSampleUtterances(new String[] {"Ich möchte den Test starten","Gib mir was"}); 


     PutIntentResult intentResult = botBuilder.putIntent(putIntentRequest); 

     System.out.println(intentResult.getName()); 

     PutBotRequest putBotRequest = new PutBotRequest().withChildDirected(false) 
       .withClarificationPrompt(new Prompt() 
              .withMaxAttempts(5) 
              .withMessages(new Message[] {new Message().withContent("Was genau willst du?").withContentType(ContentType.PlainText), new Message().withContent("Was genau du wollen?").withContentType(ContentType.PlainText)})) 
       .withDescription("Programmbot") 
       .withIntents(intents) 
       .withName("TestBot") 
       .withLocale("en-US"); 


     PutBotResult result = botBuilder.putBot(putBotRequest); 
     System.out.println(result.getName()); 
     System.out.println(result.getFailureReason()); 

    } 
} 

ich der Code erwarten, eine Absicht zu erstellen und dann einen Bot mit dem erstellten Intent.

Was ich tatsächlich bekommen ist:

Exception in thread "main" com.amazonaws.services.lexmodelbuilding.model.BadRequestException: The resource 'Testintent' referenced in resource 'TestBot' was not found. Choose another resource. (Service: AmazonLexModelBuilding; Status Code: 400; Error Code: BadRequestException; Request ID: b42d37ee-d8d7-11e7-ac95-f9876d663323) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1639) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1304) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1056) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649) 
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513) 
    at com.amazonaws.services.lexmodelbuilding.AmazonLexModelBuildingClient.doInvoke(AmazonLexModelBuildingClient.java:2626) 
    at com.amazonaws.services.lexmodelbuilding.AmazonLexModelBuildingClient.invoke(AmazonLexModelBuildingClient.java:2602) 
    at com.amazonaws.services.lexmodelbuilding.AmazonLexModelBuildingClient.executePutBot(AmazonLexModelBuildingClient.java:2302) 
    at com.amazonaws.services.lexmodelbuilding.AmazonLexModelBuildingClient.putBot(AmazonLexModelBuildingClient.java:2278) 
    at building.ChatBotBuilder.main(ChatBotBuilder.java:51) 
+0

die IntentVersion wie $ AKTUELLE statt 1 geben – sid8491

Antwort

0

I spezifiziert die Version des Intent falsch.

Intent test = new Intent().withIntentName("Testintent").withIntentVersion("1"); 

Diese Absicht kann nicht gefunden werden, weil die Version des erstellten Intent ist „$ AKTUELLE“ nicht „1“.

Das ist richtig:

Intent test = new Intent().withIntentName("Testintent").withIntentVersion("$LATEST");