如何从Swift

时间:2016-09-04 15:38:28

标签: swift ibm-cloud watson-conversation

我已经定义了一个Conversation对话框,我在其中设置了一个节点中的变量repeat:

{
  "output": {
    "text": "You said: <?input_text?>. Let's fix the @product. "
  },
  "context": {
    "repeat": "<?input.text?>"
  }
}

并在后续节点中显示变量$ repeat:

{
  "output": {
    "text": "repeat: $repeat"
  }
}

如何在Swift中访问此变量$ repeat? 我可以访问response.input.text,其中包含相同的文本,但我想访问$ repeat,以便更灵活。

输入:

radio broken

输出:

You said: radio broken. Let's fix the radio.
repeat: radio broken

Swift代码: var context: Context? // initial definition ...

func next_dialog(input_text: String) {
    conversation = Conversation(username: username, password: password, version: version)
    let failure = { (error: NSError) in print(error) }
    conversation.message(workspaceID, text: input_text, context: self.context, failure: failure) { response in 
         self.context = response.context  // update with response.context

func next_dialog(input_text: String) { conversation = Conversation(username: username, password: password, version: version) let failure = { (error: NSError) in print(error) } conversation.message(workspaceID, text: input_text, context: self.context, failure: failure) { response in self.context = response.context // update with response.context

上下文:

enter image description here

2 个答案:

答案 0 :(得分:2)

不幸的是,Watson Developer Cloud iOS SDK目前不支持从Conversation服务访问用户定义的上下文变量。不过,这是我们正在努力的一项功能,并希望尽快发布。

跟踪进度的最佳位置是this GitHub issue

这不是解决方案,但我希望有所帮助!

答案 1 :(得分:0)

好的,根据你所展示的内容,我相信你正在做的是在Conversation中设置一个上下文变量。

但是,需要在应用程序层维护状态。因此,您需要使用对话输入发送上下文变量,否则将不会将其发回。

如果不是这种情况,那么您需要再次使用示例输入+输出更新您的问题。