googleapis / googleapis/google-cloud-python

response_result.response_messages.payloads is in protobuf; serialize to json?

Open
#16,444 2 comments 0 reactions 1 assignee Assigned to @balajismaniam View on GitHub
api: dialogflow type: feature request
Dominant language
Python
Stars
5.4k
Forks
1.8k
Avg merge
3d 4h
Merged PRs (30d)
122

Description

Thanks for stopping by to let us know something could be better!

per support Case: 29062259 (Serialize a (json) protobuf object)

**your feature request related to a problem**
When session_client.detect_intent(request=request) returns response_result, from which you can get custom "payloads" that you defined in a DialogFlow Page. However, while what your input is in json, what you get in response_result.response_messages.payloads is in protobuf. It is inconvenient to access the parameters you defined in payloads (json) with protobuf.

** solution **
It will be very beneficial to have a seriallizer to convert the protobuf back to the original json format.

I wrote a serialize function that could convert protobuf to json:

```
def parse_protomap(value):

if isinstance(value, RepeatedComposite):
obj = []
for v in value:
o = {}
for k in v:
o[k] = parse_protomap(v[k])
obj.append(o)
elif isinstance(value, MapComposite):
obj = {}
for v in value:
obj[v] = parse_protomap(value[v])
else:
obj = value
return obj
```

to call it:

for r in response_result.response_messages:
if r.payload != None:
payloads = parse_protomap(r.payload)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.