如何遍历结构响应:dialogflow

时间:2018-08-28 14:47:23

标签: python dialogflow

从Dialogflow的detect_intent API调用中收到以下响应。如何遍历响应结构并提取string_value条目?

我正在使用python。寻找一种适用于各种数据结构的解决方案。如果找不到string_value,则返回null /错误。

响应请求:

response = session_client.detect_intent(session=session, query_input=query_input)

响应示例:

fields {
  key: "google"
  value {
    struct_value {
      fields {
        key: "expectUserResponse"
        value {
          bool_value: false
        }
      }
      fields {
        key: "richResponse"
        value {
          struct_value {
            fields {
              key: "items"
              value {
                list_value {
                  values {
                    struct_value {
                      fields {
                        key: "simpleResponse"
                        value {
                          struct_value {
                            fields {
                              key: "textToSpeech"
                              value {
                                string_value: "<speak>Welcome to Your App. To get started, login with your ID on your Google Home app.</speak>"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
      fields {
        key: "userStorage"
        value {
          string_value: "{\"data\":{\"id\":\"YzA3MmNiNWEtMWI1Ny00NTMzLTlhN2EtYmJlZmQ1NDQ0MzMw\"}}"
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

可以使用Google的协议缓冲区来解析响应:

示例:

response.query_result.webhook_payload.get_or_create_struct('google').get_or_create_struct('richResponse').get_or_create_list('items')[0].get_or_create_struct('simpleResponse').fields['textToSpeech'].string_value