Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert JSON object to protobuf IStruct

I am using the Dialogflow API for Nodejs.

This API is apparently implemented by Google via protocol buffers, though it presents a simple JavaScript/JSON based interface that I have used successfully for simple queries.

In order to request Dialogflow send me response data for a particular platform, I apparently need to encode a simple JSON object into protobuf format. The linked source gives an example that makes use of a "structjson util" that can presumably be used to do the necessary conversion:

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

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

Unfortunately, the link given for the structjson util is dead, and I can find no other reference to it.

I don't need to do anything other than encode a simple JSON object, as per the example above. Is there a simple utility (either runtime or command line) that can be used to do that without having to do major surgery with the protobuf toolchain?

like image 976
Myk Willis Avatar asked Feb 23 '26 20:02

Myk Willis


1 Answers

It seems the Google Dialogflow samples were updated to use the pb-util package for JSON-to-protobuf conversions. This package provides a method for encoding JSON to protobuf easily, so the example from the original question simply becomes:

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

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

Thanks also to @karthick for locating the original structjson file in the Dialogflow samples repo.

like image 53
Myk Willis Avatar answered Feb 26 '26 09:02

Myk Willis



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!