如何解析对话框流v2的detectIntent响应中的结构对象?

Kaz*_*uki 6 dialogflow-es

我想了解最佳方法来解析dialogflow v2的detectIntent的响应。

dialogflow v2的响应包括在协议缓冲区中定义的struct对象。例如,queryResult中的参数。

我知道这是可能通过使用分析它structToJson包含在dialogflow V2 SDK用于Node.js的示例代码。因此,我当前的代码如下所示。

const dialogflow = require("dialogflow");
const structjson = require("./dialogflow/structjson");

identify_intent(sentence, options){
    const session_path = this._sessions_client.sessionPath(this._project_id, options.session_id);

    // The text query request.
    const request = {
        session: session_path,
        queryInput: {
            text: {
                text: sentence,
                languageCode: this._language
            }
        }
    };

    // Send request and log result
    return this._sessions_client.detectIntent(request).then(responses => {
        let result = responses[0].queryResult;

        if (result.parameters){
            result.parameters = structjson.structProtoToJson(result.parameters);
        }

        return result;
    });
}
Run Code Online (Sandbox Code Playgroud)

我正在使用示例代码后的 structProtoToJson()手动解析响应,但这是不切实际的,因为我不仅必须对参数进行响应,而且还必须对实现和其他以struct格式化的对象进行响应。

我想知道什么是解析Node.js应用程序中detectIntent响应的最佳实践。

Dan*_*ake 0

您不需要执行任何操作即可将queryResult.parameters对象转换为可用的形式。它是一个具有以下结构的 JavaScript 对象:

{
  fields: {
    paramName1: { stringValue: 'value1', kind: 'stringValue' },
    paramName2: { stringValue: 'value2', kind: 'stringValue' }
  }
}
Run Code Online (Sandbox Code Playgroud)

意图的参数列表中的每个参数都会有一个键/值对。