Hola a todos,
Estoy enfrentando un problema con una rutina que desarrollé para enviar SMS a través de una empresa que proporciona este servicio. El programa envía una solicitud HTTP utilizando JSON, incluyendo los datos requeridos: el usuario, el token, el número de celular y el mensaje.
El inconveniente es que, aunque la solicitud devuelve un código de estado 200 OK, el mensaje no llega al destinatario. Lo curioso es que cuando pruebo la misma solicitud utilizando herramientas como Insomnia o Postman, el SMS se envía correctamente, lo que indica que la configuración y los datos proporcionados son correctos.
En VFP 9 no recibo ningún error, pero tampoco el resultado esperado. Mi sospecha es que podría haber algún problema con la forma en que se está manejando el JSON, la codificación o tal vez con la librería que estoy utilizando para realizar la solicitud HTTP.
Agradecería cualquier orientación o sugerencia sobre qué podría estar causando este problema y cómo solucionarlo.
Gracias de antemano por su ayuda.
Acá dejo la rutina que estoy utilizando
lcPhoneNumber = '573000000000'
lcMessageText = 'Recordatorio Pago pendiente credito HZ 002474 Si ya pago, ignore este mensaje. Gracias por su compromiso.'
lnRespuesta = SendSMSAPI(lcPhoneNumber, lcMessageText)
FUNCTION SendSMSAPI(tcPhoneNumber, tcMessageText)
LOCAL lnResult, response
LOCAL loHTTP AS MSXML2.SERVERXMLHTTP
WaitWindowCentrado("Enviando mesaje SMS al cliente.", 1,)
lcUserZenvia = ALLTRIM(devuelveparametro("185")) &&Usuario SMS masivo Zenvia
lcTokenZenvia = ALLTRIM(devuelveparametro("186")) &&Token SMS masivo Zenvia
WURL ='https://api.zenvia.com/v2/channels/sms/messages' &&URL para el envío
* Inicializa el objeto JSON
PJSON = ""
TEXT TO PJSON NOSHOW
{
"from": <<lcUserZenvia>>,
"to": <<tcPhoneNumber>>,
"contents": [
{
"type": "text",
"text": <<tcMessageText>>
}
]
}
ENDTEXT
* Aquí puedes agregar la lógica para enviar el SMS utilizando la API de un tercero.
TRY
loHTTP = CREATEOBJECT("MSXML2.ServerXMLHTTP")
loHTTP.OPEN("POST", WURL, .F.)
loHTTP.SETREQUESTHEADER("Content-Type", "application/json") && ; charset=utf-8
loHTTP.SETREQUESTHEADER("Accept", "application/json")
loHTTP.SETREQUESTHEADER("X-API-TOKEN", lcTokenZenvia) &&El Token para identidicar al usuario
* Enviamos el JSON con todo lo demas arriba configurado para que se mande el SMS
loHTTP.SEND(PJSON)
response = loHTTP.responseText
DO WHILE loHTTP.READYSTATE != 4
WaitWindowCentrado("loHTTP.READYSTATE", 1,)
DOEVENTS
ENDDO
*
IF loHTTP.STATUS # 200
lnReturn = null
WAIT CLEAR
EXIT
ENDIF
lnReturn = response
CATCH TO oExc
lnReturn = .F.
MESSAGEBOX(oExc.Message)
FINALLY
loHTTP = NULL
ENDTRY
WAIT CLEAR
loHTTP = .NULL.
RELEASE loHTTP
RETURN lnReturn
ENDFUNC