2016-12-08 1 views
1

ich weiß, wenn ich im Gespräch jede Watson senden möchten verwende ich das:Watson Reagiert mit einem API-Code

var latestResponse = Api.getResponsePayload(); 
var context = latestResponse.context; 
Api.sendRequest("Hi Watson!", context); 

Dieses Ergebnis meiner Code:

enter image description here

Ich möchte wissen, Wie bekomme ich Watson etwas in die Konversation zu senden. Ich habe ein paar Beispiele gesehen und versucht und es hat nicht funktioniert. Kann jemand helfen?

ich nicht jetzt Wenn ich richtig tun, aber mein Beispiel ist:

// var responseText = null; 
    //responseText = {}; 
var latestResponse = Api.setResponsePayload(); // I dont know if this is true 
    var context = latestResponse.context; 
    Api.sendRequest('Hi ' + context); // I try this 
    responseText = 'Hi ' + context; // I try this too 

Das ist, was ich will:

enter image description here

Antwort

2

Haben Sie die Demo überprüfen App unter https://github.com/watson-developer-cloud/conversation-simple?

Sie können dem Kontext Objekte auf JSON-Weise hinzufügen.

context.myproperty = "Hello World"; 

Und das auf den Dienst mit dem Eingang senden

Der andere Weg, um innerhalb des Gesprächsdienst, können Sie eine Variable zuweisen (in diesem Fall Benutzername) auf den Text im vorherigen Schritt (in diesem Fall input.text). Mithilfe von $variablename (in diesem Fall $username) können Sie eine dynamische Antwort generieren. Sie die Reihenfolge, in der vorher Antwort Bildschirm nicht lassen Sie stören, wird Kontext vor der Ausgabe ... verarbeitet

enter image description here

In dem Client (in meinem Fall Java)

MessageRequest.Builder messageRequestBuilder = new MessageRequest.Builder(); 
     messageRequestBuilder.inputText("Joe"); 
     messageRequestBuilder.context(question.context); //this context comes from a previous step 


ServiceCall<MessageResponse> response = conversationService.message(workspaceId, messageRequestBuilder.build()); 
     MessageResponse mAnswer = response.execute(); 

     Object textObject = mAnswer.getOutput().get("text"); 

Dieses Textobjekt enthält: Hallo Joe, schön dich zu treffen. Ich bin hier, um Fragen zu beantworten über ....

(Node.) JS-Code kopiert (und entfernt einige Zeilen) aus der Beispielanwendung

// Create the service wrapper 
var conversation = watson.conversation ({ 
    username: process.env.CONVERSATION_USERNAME || '<username>', 
    password: process.env.CONVERSATION_PASSWORD || '<password>', 
    version_date: '2016-07-11', 
    version: 'v1' 
}); 


// Endpoint to be called from the client side 
app.post ('/api/message', function (req, res) { 

    var payload = { 
    workspace_id: workspace_id, 
    context: {} 
    }; 
    if (req.body) { 
    if (req.body.input) { 
     payload.input = req.body.input; 
    } 
    if (req.body.context) { 
     // The client must maintain context/state 
     payload.context = req.body.context; 
    } 
    } 
    // Send the input to the conversation service 
    conversation.message (payload, function (data) { 
    return res.json (data); 
    }); 
+0

Ok, aber wie kann ich dies im Gespräch senden als wäre es der Bot? In meinem Beispiel sendet es als Benutzer ... Überprüfen Sie meine Bearbeitung –

+0

@SayuriMizuguchi Ich habe meine Antwort bearbeitet, als ob Sie nicht jedes Mal entscheiden wollen, wenn der Konversationsservice oder ein anderer Dienst (zB lokales Javascript) gibt die Antwort – mpjjonker

+0

Hallo @ mpjjonker, in dem Fall benutze ich Javascript e nodejs. Sie können ein Beispiel hinzufügen? –