2017-12-06 6 views
-1

Also schreibe ich eine Chatbot-Anwendung, die die Aufnahme von Parametern erfordert und verwendet diese Parameter dann in Nachfragen, die über eine Nutzlast gesendet werden.Wie kann ich die Kontextvariable mid conversation nutzen und sie in meinem schnellen Programm verwenden?

Ich habe Probleme mit dem Kontextwert aus einer Kontextvariablen innerhalb von swift und habe mich gefragt, wie ich den Wert der Kontextvariablen erfassen und eine Aktion basierend auf dem Wert des besagten Kontexts ausführen würde.

Ein Beispiel hierfür wäre der folgenden Dialogfluss ...

Me: Lösen Sie diese

Bot: Ok, gib mir param x

Me: x

Bietet: Ok, ich habe x param, werde jetzt job

Dies ist die Art von Flow Ich möchte im Hintergrund meiner Anwendung unter der Haube passieren, aber ich bin mir nicht sicher, wie zu greifen Wert x, nachdem mein Benutzer es eingegeben hat.

+0

Willkommen beim Stapelüberlauf. Bitte [nehmen Sie die Tour] (https://stackoverflow.com/tour). – Xcoder

Antwort

0

Angenommen, Sie verwenden die iOS SDK von Watson Developer Cloud.

in Ihrem Gespräch, in Ihrem Knoten hinzufügen:

{ 
    "context": { 
    "myVariable": "<? input.text ?>" 
    }, 
    "output": { 
    "text": { 
     "values": [ 
     "My context variable value is $myVariable." 
     ], 
     "selection_policy": "sequential" 
    }, { "etc": "etc" } 

Obs .: Die input.text alle, dass Benutzertypen erfassen wird, müssen Sie genau für Extrakt Regex verwenden, was Sie wollen, versuchen, meine zu sehen Beispiele in this answer.

Und in dem iOS SDK Sie dieses Beispiel folgen sehen:

func testMessage() { 
    let description1 = "Start a conversation." 
    let expectation1 = self.expectation(description: description1) 

    let response1 = ["Hi. It looks like a nice drive today. What would you like me to do?"] 
    let nodes1 = ["node_1_1467221909631"] 

    var context: Context? 
    conversation.message(workspaceID: workspaceID, failure: failWithError) { 
     response in 

     // verify input 
     XCTAssertNil(response.input?.text) 

     // verify context 
     XCTAssertNotNil(response.context.conversationID) 
     XCTAssertNotEqual(response.context.conversationID, "") 
     XCTAssertNotNil(response.context.system) 
     XCTAssertNotNil(response.context.system.additionalProperties) 
     XCTAssertFalse(response.context.system.additionalProperties.isEmpty) 

     // verify entities 
     XCTAssertTrue(response.entities.isEmpty) 

     // verify intents 
     XCTAssertTrue(response.intents.isEmpty) 

     // verify output 
     XCTAssertTrue(response.output.logMessages.isEmpty) 
     XCTAssertEqual(response.output.text, response1) 
     XCTAssertEqual(response.output.nodesVisited!, nodes1) 

     context = response.context 
     expectation1.fulfill() 
    } 
So können Sie Ihre Kontextvariable zuzugreifen:

context.myVariable 
response.context.myVariable 
  • Sehen Sie mehr über methods in Watson Gespräch Hier.
  • iOS SDK von Watson Developer Cloud.
Verwandte Themen