将 Watson Assistant 的答案传递给变量 Python

Lou*_*ing 1 python watson-conversation ibm-cloud

我正在尝试将 Watson Assistant 的输出放入一个变量中。因此,据我搜索,我需要获取 json 的“输出”和“文本”部分(起初它是一个 dict,但后来我们将其解析为 json)。但我似乎无法理解:

我已经在这两个问题中搜索过:这是一个给 watson 这个一个用于解析 json

代码非常简单:访问我的机器人,并输入“行程”。我已经取出了 api 和工作区,但我有它们(显然)。

if __name__ == '__main__':
    assistant = watson_developer_cloud.AssistantV1(

        iam_apikey='{YOUR API HERE}',
        version='2018-09-20',
        url='https://gateway-syd.watsonplatform.net/assistant/api'
    )

    response = assistant.message(
        workspace_id='{YOUR WORKSPACE HERE}',
        input={
            'text': 'trips'
        }
    ).get_result()
    fullResponse=json.dumps(response, indent=2)
    print(fullResponse)
    print("testing to print the output: ")
    respuesta=json.dumps(response, indent=2)
    #print(respuesta['output'][0]['text'])
    print(respuesta['output']['text'])
Run Code Online (Sandbox Code Playgroud)

和输出:

Traceback (most recent call last):
  "intents": [
  File "C:/Users/.PyCharmCE2018.3/config/scratches/pruebaMain.py", line 105, in <module>
    {
    print(respuesta['output']['text'])
      "intent": "trips",
TypeError: string indices must be integers
      "confidence": 1
    }
  ],
  "entities": [],
  "input": {
    "text": "trips"
  },
  "output": {
    "generic": [
      {
        "response_type": "text",
        "text": "We got trips to different countries! Type continents to know more!"
      }
    ],
    "text": [
      "We got trips to different countries! Type continents to know more!"
    ],
    "nodes_visited": [
      "node_2_1544696932582"
    ],
    "log_messages": []
  },
  "context": {
    "conversation_id": "{took it out for privacy}",
    "system": {
      "initialized": true,
      "dialog_stack": [
        {
          "dialog_node": "root"
        }
      ],
      "dialog_turn_counter": 1,
      "dialog_request_counter": 1,
      "_node_output_map": {
        "node_2_1544696932582": {
          "0": [
            0
          ]
        }
      },
      "branch_exited": true,
      "branch_exited_reason": "completed"
    }
  }
}
testing to print the output: 

Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)

所以我想得到“我们去不同的国家旅行!输入大洲以了解更多信息!”的答案。我已经阅读了 python API 的文档和一些更多信息(https://github.com/IBM-Cloud/watson-conversation-variables),但似乎找不到任何东西。我也尝试访问 json 变量,$但没有用。

Vid*_*lli 5

json.dumps此处不必使用,可以直接使用服务返回的响应JSON,如下面的代码片段所示

import watson_developer_cloud

if __name__ == '__main__':
    assistant = watson_developer_cloud.AssistantV1(

        iam_apikey='APIKEY',
        version='2018-09-20',
        url='https://gateway.watsonplatform.net/assistant/api'
    )

    response = assistant.message(
        workspace_id='WORKSPACE_ID',
        input={
            'text': 'trips'
        }
    ).get_result()

    print(response)
    print(response['output']['text'][0])
Run Code Online (Sandbox Code Playgroud)