2

MessageResponse donne un NullPointerException.MessageResponse renvoie un pointeur NULL dans Watson Conversation

ConversationService service = new ConversationService(ConversationService.VERSION_DATE_2016_09_20); 
// Credentials of Workspace of Conversation 
service.setApiKey("API_KEY"); 
service.setUsernameAndPassword("USERNAME", "PASSWORD"); 
MessageRequest newMessage = new MessageRequest.Builder() 
    .inputText(request.getQuery()) 
    .build(); 

// Workspace ID of Conversation current workspace 
String workspaceId = "WORKSPACEID"; 
service.setSkipAuthentication(true); 
MessageResponse response = service.message(workspaceId, newMessage) 
    .execute(); 

Répondre

2

Le service de conversation n'utilise pas api_key mais username et password

Il y a deux erros dans l'extrait de code: 1. setApiKey() n'est pas requise lors de l'utilisation de conversation. 1. service.setSkipAuthentication(true); demandera au SDK d'ignorer les informations d'identification du service, par conséquent, elles ne sont pas envoyées au serveur à chaque requête.

Il vous suffit de supprimer la ligne service.setSkipAuthentication(true);.

ConversationService service = new ConversationService(ConversationService.VERSION_DATE_2016_09_20); 
// Credentials of Workspace of Conversation 
// BTW: This are not your Bluemix credentials! 
service.setUsernameAndPassword("USERNAME", "PASSWORD"); 

MessageRequest newMessage = new MessageRequest.Builder() 
    .inputText("Hi! this is my first message to Watson") 
    .build(); 

MessageResponse response = service.message("WORKSPACEID", newMessage) 
    .execute(); 
System.out.println(response); 
+0

Votre réponse explique exactement ce que l'utilisateur a besoin de savoir. Upvote. @Parker, pensez à marquer cette réponse comme correcte. –

+1

J'ai mis à jour le vôtre car il est lié à du matériel important que nous voulons que les utilisateurs voient –

3

Selon le développeur IBM (@German). « Les services Watson utilisent actuellement Basic Auth donc au lieu d'un api_key vous utiliserez le nom d'utilisateur et mot de passe Pour obtenir les informations d'identification, vous devez lier le service vous voulez utiliser (par exemple Question and Answer) pour une application Bluemix. "

Vérifiez les exemples suivants.

Essayez d'utiliser le code suivant de Java SDK:

ConversationService service = new ConversationService(ConversationService.VERSION_DATE_2017_05_26); 
service.setUsernameAndPassword("<username>", "<password>"); //Please make sure if this username and password is the Service Credentials from the Service that you have created to use Conversation 

InputData input = new InputData.Builder("Hi").build(); 
MessageOptions options = new MessageOptions.Builder(workspaceId).input(input).build(); 

// sync 
MessageResponse response = service.message(options).execute(); 
System.out.println(response); 

Autre exemple:

MessageRequest newMessage = new MessageRequest.Builder().inputText(input).context(context).build(); 

MessageResponse response = service.message(WORKSPACE_ID,newMessage).execute(); 

context = response.getContext();  
System.out.println(response); 
  • Vous pouvez voir le officielexample en utilisant Conversation Watson. Pour plus d'informations, reportez-vous au Guide de démarrage de l'utilisation de Watson Services (Étape 5)
  • .
+0

Merci beaucoup. Ça a vraiment marché! – Parker

+0

Veuillez cocher la réponse si cela vous aide et suivez la 'Comment répondre' sur [Stackoverflow] (https://stackoverflow.com/help/how-to-answer). Mais envisagez de vérifier la réponse par @Allah Attanasio, il vous explique pourquoi votre code ne fonctionne pas et il travaille chez IBM axé sur Watson Developer Cloud (Le SDK que nous utilisons pour coder avec Watson) –