我正在使用Nodejs 的 Dialogflow API https://cloud.google.com/nodejs/docs/reference/dialogflow/0.8.x/google.cloud.dialogflow.v2.
这个 API 显然是由 Google 通过协议缓冲区实现的,尽管它提供了一个简单的基于 JavaScript/JSON 的接口,我已成功地将其用于简单的查询。
为了请求 Dialogflow 向我发送特定平台的响应数据,我显然需要 https://github.com/googleapis/nodejs-dialogflow/issues/132#issuecomment-406210509将简单的 JSON 对象编码为 protobuf 格式。链接的源代码给出了一个使用“structjson util”的示例,该示例可能可用于进行必要的转换:
const structjson = require('./structjson.js');
const request = {
/* other properties omitted */
queryParams: {
payload: structjson.jsonToStructProto({source: 'ACTIONS_ON_GOOGLE'})
},
};
不幸的是,为 structjson util 提供的链接已失效,我找不到任何其他参考。
除了对简单的 JSON 对象进行编码之外,我不需要做任何事情,如上面的示例所示。是否有一个简单的实用程序(运行时或命令行)可以用来执行此操作,而无需使用 protobuf 工具链进行大手术?
看来 Google Dialogflow 示例是updated https://github.com/googleapis/nodejs-dialogflow/pull/311/files使用pb-util https://www.npmjs.com/package/pb-util用于 JSON 到 protobuf 转换的包。这个包提供了一个方法将 JSON 编码为 protobuf https://github.com/callmehiphop/pb-util#structencodejson很容易,所以原来问题的例子就变成了:
const {struct} = require('pb-util');
const request = {
/* other properties omitted */
queryParams: {
payload: struct.encode({source: 'ACTIONS_ON_GOOGLE'})
},
};
还要感谢@karthick 找到了原始 structjson 文件 https://github.com/googleapis/nodejs-dialogflow/blob/d907f3af57438c3e88c274b100eab520b5b51062/samples/structjson.js在 Dialogflow 示例存储库中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)