将 JSON 对象转换为 protobuf IStruct

Convert JSON object to protobuf IStruct

我正在使用 Dialogflow API for Nodejs

这个 API 显然是由 Google 通过协议缓冲区实现的,尽管它提供了一个简单的基于 JavaScript/JSON 的接口,我已经成功地用于简单查询。

为了请求 Dialogflow 向我发送特定平台的响应数据,I apparently need 将一个简单的 JSON 对象编码为 protobuf 格式。 linked 源给出了一个使用 "structjson util" 的示例,大概可以用来进行必要的转换:

const structjson = require('./structjson.js');

const request = {
    /* other properties omitted */
    queryParams: {
        payload: structjson.jsonToStructProto({source: 'ACTIONS_ON_GOOGLE'})
    },
};

不幸的是,为 structjson 实用程序提供的 link 已失效,我找不到其他参考资料。

除了按照上面的示例对简单的 JSON 对象进行编码外,我不需要做任何其他事情。是否有一个简单的实用程序(运行时或命令行)可用于执行此操作而无需使用 protobuf 工具链进行大手术?

似乎 Google Dialogflow 示例 updated to use the pb-util package for JSON-to-protobuf conversions. This package provides a method for encoding JSON to protobuf 很容易,因此原始问题中的示例简单地变为:

const {struct} = require('pb-util');

const request = {
    /* other properties omitted */
    queryParams: {
        payload: struct.encode({source: 'ACTIONS_ON_GOOGLE'})
    },
};

还要感谢@karthick 在 Dialogflow 示例存储库中找到 original structjson file