如何在对话中获取上下文变量并在我的swift程序中使用它?

时间:2017-12-06 01:19:48

标签: swift watson-conversation watson

所以我写了一个聊天机器人应用程序,需要输入参数,然后在通过有效载荷发送的后请求中使用这些参数。

我在从swift中的上下文变量中获取上下文值时遇到问题,并且想知道如何抓取上下文变量的值并根据上述上下文的值执行操作。< / p>

这方面的一个例子是以下对话框流程......

我:触发此

Bot:好的,给我一个参数x

我:x

Bot:好的我有x param,现在就发布工作

这是我希望在我的应用程序背景下发生的那种流程,但是我不确定在用户输入后如何获取值x。

1 个答案:

答案 0 :(得分:0)

因此,假设您使用的是来自 Watson Developer Cloud iOS SDK

在对话中,添加您的节点:

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

Obs。: input.text将捕获所有用户类型,您需要使用正则表达式提取您想要的内容,尝试在this answer中查看我的示例。

而且,在iOS SDK中,您可以看到以下示例:

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()
    }

因此,您可以使用以下方式访问上下文变量:

context.myVariable
response.context.myVariable
  • 在此处查看有关Watson Conversation中methods的更多信息。
  • 来自Watson Developer Cloud的
  • iOS SDK