googleapis / googleapis/google-cloud-python

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

Offen
#16,444 2 Kommentare 0 Reaktionen 1 zugewiesene Person Zugewiesen an @balajismaniam Auf GitHub ansehen
api: dialogflow type: feature request
Vorherrschende Sprache
Python
Sterne
5.4k
Forks
1.8k
Ø Merge
3 T. 4 Std.
Gemergte PRs (30 T.)
122

Beschreibung

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)

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.