Estoy tratando de hacer una solicitud GET a twilio para obtener los datos de un canal específico, después de eso necesito hacer algunos cambios y luego publicarlos nuevamente.
Soy completamente nuevo trabajando con js. Apreciaré cualquier consejo. No estoy usando Twilio SDK.
Hasta ahora hago esto ... pero no hace la solicitud de publicación
function modifyChannel(sid, json) { console.log(json); return new Promise((resolve, reject) => { let newJson = JSON.parse(json.attributes); newJson.task_sid = null; json.attributes = JSON.stringify(newJson); resolve(json); }) } function postChannel(sid, json) { axios({ method: 'post', url:`https://chat.twilio.com/v2/Services/${DEV_CREDENTIAL.programmableChatSid}/Channels/${sid}`, auth: { username: DEV_CREDENTIAL.account, password: DEV_CREDENTIAL.token }, data: { json } }); } axios({ method: 'get', url:`https://chat.twilio.com/v2/Services/${DEV_CREDENTIAL.programmableChatSid}/Channels/${channel_sid}`, auth: { username: DEV_CREDENTIAL.account, password: DEV_CREDENTIAL.token } }) .then(response => { return modifyChannel(channel_sid, response.data); }).then(jsonModified => { postChannel(channel_sid, jsonModified); }) .catch(err => console.log(err));Desarrollador evangelista de Twilio aquí.
Creo que el problema es que está pasando data: { json } cuando realiza la solicitud de publicación. Eso se expandirá a: data: { json: { THE_ACTUAL_DATA }} donde solo desea data: { THE_ACTUAL_DATA } . Entonces, elimine la clave json de allí.
También puede simplificar las cosas con su manipulación de datos. No está haciendo nada asíncrono en su función modifyChannel , por lo que no es necesario devolver una Promesa.
Pruebe lo siguiente en su lugar:
function modifyChannel(sid, json) { let newJson = JSON.parse(json.attributes); newJson.task_sid = null; json.attributes = JSON.stringify(newJson); return json; } function postChannel(sid, json) { axios({ method: "post", url: `https://chat.twilio.com/v2/Services/${DEV_CREDENTIAL.programmableChatSid}/Channels/${sid}`, auth: { username: DEV_CREDENTIAL.account, password: DEV_CREDENTIAL.token, }, data: json, }); } axios({ method: "get", url: `https://chat.twilio.com/v2/Services/${DEV_CREDENTIAL.programmableChatSid}/Channels/${channel_sid}`, auth: { username: DEV_CREDENTIAL.account, password: DEV_CREDENTIAL.token, }, }) .then((response) => { const jsonModified = modifyChannel(channel_sid, response.data); postChannel(channel_sid, jsonModified); }) .catch((err) => console.log(err));