Cuando la consola registra el objeto de evento usando JSON.stringify(event) , obtengo el siguiente resultado.
{ ... "body": "{\"vox\":{\"id\":10431,\"summary_text\":\"Vox received from 978-1913905101 via Book reviews at 17:17 (UTC) on 26/01/2022\",\"send_time\":\"2022-01-26T17:17:51.812Z\",\"contact_email\":\"\",\"contact_phone\":\"\",\"channel_name\":\"Book reviews\",\"channel_public_name\":\"telbee\",\"duration\":1,\"vox_context\":null,\"channel_id\":2786,\"recording_url\":\"https://api.telbee.io/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBczh6IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--9fdab42822e2a9235f03ca178ae917a83941b6cd/Wed%20Jan%2026%202022%2019-17-51%20GMT+0200%20(Eastern%20European%20Standard%20Time)\",\"direction\":\"vox_in\",\"channel_status\":\"active\",\"transcription_state\":\"not_transcribed\",\"share_link\":\"https://app.telbee.io/vox/Djw3em5mEMse6yjM5aA4S6oM\",\"vox_no\":2,\"sending_user\":null,\"contact_name\":\"978-1913905101\",\"contact_id\":6275,\"actual_transcription\":\"\",\"transcription_language\":\"en-US\",\"conversation_inbox_url\":\"https://app.telbee.io/inbox?token=iP9jHf2KVVrZuZRoe7n9NFLT\",\"sending_user_id\":null}}", "isBase64Encoded": false }Pero cuando trato de obtener el elemento vox del cuerpo, falla
console.log('event body = ' + JSON.parse(event.body.vox.contact_name));El mensaje de error es
{ "errorType": "TypeError", "errorMessage": "Cannot read property 'contact_name' of undefined", "stack": [ "TypeError: Cannot read property 'contact_name' of undefined", " at Runtime.exports.handler (/var/task/index.js:49:69)", " at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)" ] } No estoy seguro de cómo obtener acceso a event.body.vox.contact_name aunque sé que está allí en la carga útil, no puedo acceder a él. Sé que tengo que analizarlo primero, ya que se ha escapado, pero el archivo console.log no me permite acceder al elemento del cuerpo de los objetos del evento. No estoy seguro de cuál podría ser el problema, ya que esta es la carga útil del evento que se pasa a esta función lambda que estoy creando y está adjunta a una puerta de enlace de AWS.
Está tratando de obtener un valor antes de analizarlo. Pruebe esto
var body=JSON.parse(event.body); var contactName=body.vox.contact_name; // 978-1913905101