Params are getting picked in shuffled structure from function | Community
Skip to main content
Level 2
October 26, 2021
Question

Params are getting picked in shuffled structure from function

  • October 26, 2021
  • 2 replies
  • 1967 views

Hi,

Here am trying to use actions has webhook listener and events are triggered from 3rd party where request will be in JSON structure.

When JSON params are picked from function its getting shuffled.

 

ex;

Expected:

"message_delivery_report": {
    "message_id""01FJJY1FJDSKWN22RGMF23ZH5R",
    "conversation_id""01F64Z48R4CD1216GD0CRC0DDK",
    "status""QUEUED_ON_CHANNEL",
    "channel_identity": {
      "channel""Test",
      "identity""XXXXXXX",
      "app_id"""
    },
    "contact_id""01F64Z48P3SPTX11B5B8G410N2",
    "metadata"""
  }
 

Actual: 

"message_delivery_report": {
"channel_identity": {
"app_id": "",
"channel": "Test",
"identity": "XXXXXXX"
},
"contact_id": "01F64Z48P3SPTX11B5B8G410N2",
"conversation_id": "01F64Z48R4CD1216GD0CRC0DDK",
"message_id": "01FJJY1FJDSKWN22RGMF23ZH5R",
"metadata": "",
"status": "QUEUED_ON_CHANNEL"
}

 

 

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

2 replies

Level 2
November 8, 2021

@duynguyen_adobe Could you please help? I see __ow_body is not present at all, is there any thing am missing on configuration?

Adobe Employee
November 8, 2021

@naveen_srinivas - regarding the different output order of JSON params, that's expected because it's a JSON object, not an array. So the order doesn't really matter here, because you get an item by `params['keyName'].

For your second question, your action gets a request body in JSON, so it automatically parses it to a JSON object. The "__ow_body" param is only available and useful for non-JSON request body. See https://github.com/apache/openwhisk/blob/master/docs/webactions.md#http-context for more info.

Level 2
November 9, 2021

Thanks for the reply, order matters to me since to authenticate the call we need to encrypt the raw body to match with signature which we will be received from header. Is there any alternate or work around approach to achieve my scenario(I want raw body without shuffled)?

Adobe Employee
November 11, 2021

As discussed in direct conversation: it's expected that the order of key-value pairs in a JSON object is not quaranteed. If the library consuming it requires a specific order in the (stringified) JSON object, you could manually construct a raw string with the desired order, taking values from the original request body.