Dos funciones permiten enviar mensajes de texto desde una aplicación de Zoho Creator mediante GoTo Connect: una mantiene actualizado un token de acceso OAuth y la otra envía el mensaje. Si vinculas la segunda función a un botón, tus usuarios podrán enviar un mensaje de texto a un contacto sin salir de la aplicación.
Actualizado para el cambio de marca de GoTo. LogMeIn se convirtió en GoTo y Jive en GoTo Connect, por lo que el host de mensajería cambió: el original se publicó en api.jive.com/messaging/v1/messages , y el endpoint documentado ahora es api.goto.com/messaging/v1/messages . El antiguo host todavía responde, pero es una infraestructura heredada no documentada sin fecha de cierre publicada; no cree en ella. El host de autenticación no ha cambiado y sigue siendo correcto en authentication.logmeininc.com , lo cual es contraintuitivo pero se confirma con la documentación actual de GoTo. La forma del cuerpo de la solicitud no cambió. Ambas funciones también se han movido de la antigua postUrl() a invokeurl .
messaging.v1.send y un token de actualización inicial. Empiece en el Centro para desarrolladores de GoTo .GOTO_Token de un solo registro con Access_Token y Refresh_Token (ambos de varias líneas). Introduzca Refresh_Token manualmente la primera vez.Care_Coordinators con Work_Email y Work_Phone . cadena GOTO.getAccessToken()
{
ID_CLIENTE = "SU_ID_CLIENTE_IGUAL";
SECRETO_DEL_CLIENTE = "TU_SECRETO_DE_CLIENTE_DE_VENTA";
almacenado = GOTO_Token[ID != null] ordenar por Added_Time descendente rango de 0 a 1;
headerMap = Mapa();
headerMap.put("Authorization","Basic " + zoho.encryption.base64Encode(CLIENT_ID + ":" + CLIENT_SECRET));
headerMap.put("Content-Type","application/x-www-form-urlencoded");
bodyMap = Mapa();
bodyMap.put("grant_type","refresh_token");
bodyMap.put("refresh_token",stored.Refresh_Token);
respuesta = invokeurl
[
URL: "https://authentication.logmeininc.com/oauth/token"
tipo: POST
parámetros: bodyMap
encabezados: mapa de encabezados
];
accessToken = response.getJSON("access_token");
refreshToken = response.getJSON("refresh_token");
if(accessToken == null || accessToken == "")
{
info "Error al autenticar GoTo: " + response.toString();
devolver "";
}
almacenado.Access_Token = accessToken;
// GoTo rota el token de actualización. Manténgalo o la integración fallará al cabo de 30 días.
if(refreshToken != null && refreshToken != "")
{
almacenado.Refresh_Token = refreshToken;
}
devolver token de acceso;
} void GOTO.sendSMS(string msg, string toPhone)
{
// El número del remitente proviene del registro del usuario que ha iniciado sesión.
getUser = Care_Coordinators[Work_Email == zoho.loginuserid];
if(getUser.count() == 0 || getUser.Work_Phone == null || getUser.Work_Phone == "")
{
info "No se ha configurado ningún número de envío para " + zoho.loginuserid;
devolver;
}
fromPhone = "+1" + getUser.Work_Phone.replaceAll("[^0-9]","");
accessToken = thisapp.GOTO.getAccessToken();
si(accessToken == "")
{
devolver;
}
headerMap = Mapa();
headerMap.put("Authorization","Bearer " + accessToken);
headerMap.put("Content-Type","application/json");
contactos = Lista();
contactos.agregar(alTeléfono);
carga útil = Mapa();
payload.put("ownerPhoneNumber",fromPhone);
payload.put("contactPhoneNumbers",contacts);
payload.put("body",msg);
respuesta = invokeurl
[
URL: "https://api.goto.com/messaging/v1/messages"
tipo: POST
parámetros: payload.toString()
encabezados: mapa de encabezados
];
info "Respuesta de GoTo SMS: " + response.toString();
} La trampa de los 30 días. Los tokens de actualización de GoTo caducan a los 30 días y se renuevan : se recibe uno nuevo en la respuesta y el anterior deja de funcionar. Si no se actualiza el valor, todo funciona perfectamente durante un mes y luego falla silenciosamente. Esta actualización se realiza mediante la línea ` stored.Refresh_Token = refreshToken , y es la línea más importante de la primera función.
Abra un formulario sin estado desde un botón de informe para que el usuario pueda redactar el mensaje:
void Open.txtMessage(int recordId)
{
openUrl("#Form:TXT_MSG?LID=" + recordId,"ventana emergente");
} El formulario sin estado recopila el cuerpo del mensaje y llama a thisapp.GOTO.sendSMS(input.Message, input.To_Phone); al enviarlo.
+1XXXXXXXXXX . El replaceAll("[^0-9]","") elimina cualquier formato que hayan escrito los usuarios.Este script forma parte de la biblioteca gratuita Creator Scripts Deluge.
Los 39 scripts de Deluge, el curso completo de Zoho Creator y todos los recursos descargables ahora son gratuitos. Obtén acceso gratuito →