当前位置: 首页 > 知识库问答 >
问题:

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

殷烨
2023-03-14

我试图把沃森助手的输出变成一个变量。因此,就我所搜索的而言,我需要获取json的输出和文本部分(起初它是一个判决,但后来我们将其解析为json)。但是我似乎不明白:

我已经搜索了这两个问题:这是watson的问题,这是解析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

所以我想得到的答案是“我们去了不同的国家!输入大陆来了解更多!”。我已经阅读了python API的文档和更多信息(https://github.com/IBM-Cloud/watson-conversation-variables)当然,但似乎什么也找不到。我还尝试使用$访问json变量,但没有成功。

共有1个答案

黄信厚
2023-03-14

您不必使用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])
 类似资料:
  • 问题内容: 我有Google地图提供的JavaScript值,需要将其保存在MySQL数据库中。 其实我有变量 我需要将该变量传递给PHP变量lugar 问题答案: 如果要在页面转换时进行操作,则可以通过表单或在URL中传递它,然后仅使用或接收变量。 如果您需要无缝完成它,那么您可能需要考虑使用AJAX。

  • 问题内容: 我有一个PHP会话变量,在整个会话过程中仍然有效。在开头部分,我包含了我的JavaScript文件。 如果需要以下内容,如何将会话变量传递到JavaScript文件中。 由于无法在JavaScript文件中识别出,因此上面的代码不起作用。因此,我必须放入PHP文件本身,但是如何将其保留在JavaScript文件中? 问题答案: 在您的PHP文件中,您可以将用户设置为全局变量: 在包含外

  • 问题内容: 如果我有一个指令,我可以这样调用它 我该如何访问?我在函数中使用时会得到实际的字符串。当我检查html时,实际上说。 问题答案: 尝试 然后 演示:柱塞

  • 问题内容: 我对此完全迷失了;我正在使用NodeJS来获取JSON,我需要将变量传递给我的页面并让JavaScript使用数据。 那就是我的Express代码(出于测试目的非常简单);现在使用EJS,我想收集这些我知道要呈现在页面上的数据, 但是我需要能够在JavaScript中收集这些数据(如果可能在.js文件中),但现在只是在我尝试过的“警告”框中显示变量 在翡翠中就像或。我可以在EJS中做类

  • 问题内容: 我有类似下面的代码: 但是,该变量未在ActionListener类的范围内定义。如何传递变量? 问题答案: 除了Hovercraft的答案外,您还应注意,您不会被迫对侦听器使用匿名类。气垫船的答案代码类似于以下代码:

  • myrole/tasks/main.yml myrole/defaults/main.yml 但是,当我将变量传递给我的角色时,它无法使用defaults/main.yml文件,并且得到以下错误: 似乎可以使用数组,但如果我使用哈希并希望访问带有item.xxx的变量,则返回此错误: 失败了!=>{“failed”:true,“msg”:“字段'args'具有无效值,该值似乎包含未定义的变量。错误