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

Passing the answer of Watson Assistant to a variable Python

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

我已经搜索过这两个问题: This one for parsing the json

代码非常简单:访问我的机器人,然后输入 "trips"。我已经取出 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'])

并且输出:

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

所以我想得到"We got trips to different countries! Type continents to know more!"的答案。我已阅读 python API 的文档和更多信息 (https://github.com/IBM-Cloud/watson-conversation-variables) 但似乎找不到任何内容。我还尝试使用 $ 访问 json 变量,但没有成功。

您不必在这里使用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])