所以我写了一个聊天机器人应用程序,需要输入参数,然后在通过有效载荷发送的后请求中使用这些参数。
我在从swift中的上下文变量中获取上下文值时遇到问题,并且想知道如何抓取上下文变量的值并根据上述上下文的值执行操作。< / p>
这方面的一个例子是以下对话框流程......
我:触发此
Bot:好的,给我一个参数x
我:x
Bot:好的我有x param,现在就发布工作
这是我希望在我的应用程序背景下发生的那种流程,但是我不确定在用户输入后如何获取值x。
答案 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