Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

bidireccionalgmailcontacts-celerex

Package Overview
Dependencies
Maintainers
1
Versions
72
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bidireccionalgmailcontacts-celerex

## Acerca De

  • 1.7.4
  • latest
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Bidireccional Library (GMAIL CONTACTS)

Acerca De

La libreria fue creada con el proposito de tener un codigo mantenible para un futuro, dentro estan las funciones para:

  1. RefreshAllGmailTokens
  2. RefreshSingleGmailToken
  3. RefreshZohoToken
  4. BidireccionalGmailContacts

La explicacion de este proyecto esta dividida en varias partes para su compresion.

Objetos

  1. auth

Objeto que contiene infomacion importante de cada usuario, todo lo esencial que involucra a un cliente esta aqui

{
  token: String,
  refreshToken: String,
  type: String,
  email: String,
  loginUserUsuario: String,
  pendingConnections: Number,
  clientIdProjectGoogle: String,
  clientSecretGoogleProject: String,
  isActive:Boolean
}
token: Token de gmail que contiene los permisos necesarios para manipular los contactos, vence en 50 Minutos

refreshToken: Token el cual nos permite actualizar el token, este no tiene vencimiento

type: Puede tener 3 valores GMAIL,zoho o "OUTLOOK", para esta libreria solo nos interesa los tipo "GMAIL" y "zoho"

email: correo electronico en el cual los contactos son guardados

loginUserUsuario: loginUserUsuario proveniente de zoho, este es usado para saber a que usuario en el CRM le pertenece el contacto

pendingConnections: Numero de contactos que estan en la cola

clientIdProjectGoogle:Proyecto de Google al cual el contacto pertenece

clientSecretGoogleProject: Secret de google al cual el usuario pertenece.

isActive: Bandera que sirve para ignorar al usuario temporalmente

Como Funciona

  1. RefreshAllGmailTokens (workflowRefreshAccessTokensGmail)

    Esta funcion es la que se debe llamar cada vez que se quiera hacer una actualizacion de los token de los usuarios en la tabla auth con valor "GMAIL" en la key "type".

    Steps:

    1. obtener de la base de datos los usuarios a actualizar el token

    2. Por cada usuario hace una peticion al api de google de refresh token.

    3. si todo salio correcto el nuevo token es replazado por el viejo y se guarda en la base de datos

    4. En caso de Error se enviara a la tabla de logs de la base de datos y se mandara un correo electronico

    Cosideracciones:

    No se puede hacer un numero indefinido de peticiones a la api, por lo cul debe limitarse las peticiones, o mandar peticiones por trozos.

  2. RefreshSingleGmailToken(refreshSingleUserGoogleToken)

    Esta funcion Fue creada a fin de que cuando el refresh token de 1-X usuarios falla, para que en lugar de ejecutar una actualizacion masiva de tokens de usuarios que no lo necesitan se haga unade manera selectiva. Cada destacar que si fallan muchos regresh lo mejor es correr la funcion anterior

    Steps:

    1. Encontrar por Id de la BD el usuario al que se le hara la actualizacion

    2. Hacer la peticion a la Api de Google para refreshToken

    3. Guardar el nuevo token en la base de datos en el registro del usuario

    4. En caso de Error se enviara a la tabla de logs de la base de datos y se mandara un correo electronico

    Cosideracciones:

    No se puede hacer un numero indefinido de peticiones a la api, por lo cul debe limitarse las peticiones, o mandar peticiones por trozos.

  3. RefreshZohoToken(workFlowRefreshZohoToken)

    Esta Funcion tiene la reponsabilidad de actualizar el token se zoho el que brinda todos lo permisos para poder insertar registros por medio de la API

    Steps:

    1. Se saca de la base de datos de la tabla auth el registro que tiene "type" : "zoho"

    2. con el refresh token se hace una peticion a endpoint de zoho para actualizar

    3. guardamos el nuevo token en la base de datos del registro de zoho

  4. BidireccionalGmailContacts(startWorkFlow)

    Esta funcion es la de mayor peso, la encargada de hacer la conexion biidreccional entre GMAIL y ZOHO CREATOR, se compone de varios pasos y sub funciones asi como de varias tecnologias.

    1. Tecnologias

      • GMAIL CONTACTS API
      • PIPEDREAM
      • AWS LAMBDA
      • MONGODB
      • ZOHO CREATOR API
    2. Diagrama

    3. Steps(Simplificado)

      1. sacar de la base de datos de la tabla auth usuarios con "type" : "GMAIL"
      2. hacer una peticion al api de google para obtener contactos en los ultimos X minutos(puede ser cambiado en el codigo)
      3. cuando los contactos son mas de 30, los contactos siguientes se guardaran en una cola dentro de la base de datos(Ver consideraciones).
      4. los 30 contactos son enviados a la lambda llamada (createandupdatecontact)
      5. se llama la lambda de zohoinjection la cual tiene como objectivo sacar todo de la tabla zohotodo y mandarlo a CRM.
      6. eliminar de la tabla zohotodo los contactos ya enviados al CRM
    4. Consideraciones

      1. para evitar que se consuma memoria la cola es limitada a la cantidad de "400"
      2. No es posible consultar el API de contactos de GMAIL mas 100 veces por lo que, es necesario crear mas de un workflow para manejar esta situacion

Como usarlo "Ambos" (hacer estos pasos antes que todo)

  1. Descargar el codigo o clonar el repositorio
  2. Descomprimir el achivo desacargado
  3. Ejecutar dentro de la carpeta que se genero el comando npm intall esto debio descargar los modulos (carpeta node_modules)

Como Usarlo Local (Testing y actualizaciones)

  1. Antes de usar

    1. Crear un archivo dentro del folder constants con el nombre de myEnviromentVars.js

    2. en el archivo creado previamente copiar los siguiente

    const serverMyMongo =
    ".......";
    const dbMyMongo = "....";
    
    const lambdaSendEmailErrorUrl =
    ".....";
    
    const dataEmail = {
    to: "example@correo.com.mx",
    from: example@correo.com.mx",
    subject: ".....",
    message: "....",
    };
    
    const lamU = "...../contacts";
    const lamZO =
    "...../sendTozoho";
    
    const ZOHO_CLIENT_ID = `.....`;
    const ZOHO_CLIENT_SECRET = `.....`;
    const ZOHO_REFRESH_TOKEN = `......`;
    const ZOHO_TOKEN_URI = `https://accounts.zoho.com/oauth/v2/token`;
    
    module.exports = {
    serverMyMongo,
    dbMyMongo,
    lambdaSendEmailErrorUrl,
    dataEmail,
    lamU,
    lamZO,
    ZOHO_CLIENT_ID,
    ZOHO_CLIENT_SECRET,
    ZOHO_REFRESH_TOKEN,
    ZOHO_TOKEN_URI,
    };
    
    

    Cambiar valores de variables por :

    
    dbMyMongo: nombre de la base de datos de mongo
    
    lambdaSendEmailErrorUrl: url de la lambda que envia el correo de error
    
    dataEmail: es un objecto, remplazar el correo en "to" y "from"
    por el que se usara, debe ser el mismo en ambos.
    
    lamU: url de la lambda "createupdateContact"
    
    lamZO: url de la lambda que inyecta a zoho la informacion de los contactos
    
    ZOHO_CLIENT_ID : El client id del usuario de zoho del API ;
    ZOHO_CLIENT_SECRET : El Client secret de zoho del API ;
    ZOHO_REFRESH_TOKEN : Token para poder actualizar el access token;
    ZOHO_TOKEN_URI = usar el valor **https://accounts.zoho.com/oauth/v2/token** ya que esta es el endpoint real;
    
    
  2. Dentro del folder del proyecto ejecute el comando node nombreDelarchivo.js

  3. ejemplo

    node app.js

Como usarlo PROD (Conectarlo para PROD)

  1. RefreshAllGmailTokens

    Dentro del workflow correspndiente compiar el siguiente Codigo, si las variables de entorno ya estan creadas no deberia haber ningun problema al ejecutarlo.

const { workflowRefreshAccessTokensGmail } = require("bidireccionalgmailcontacts-celerex");
const serverMongoDb = process.env.SERVERMONGODBDEV;
const database = process.env.DATABASEDEV;
const lambdaSendEmailErrorUrl = process.env.LAMBDASENDEMAILERRORURL_DEV
const emailForError = process.env.EMAIL_RECIVER_AND_EMITTER_FOT_ERROR_DEV
const dataEmail = {
  to: emailForError,
  from: emailForError,
  subject: "ERROR IN UPDATE GMAIL TOKENS",
  message: "Hubo un error en el workflow de update refresh gmail token ",
};





await workflowRefreshAccessTokensGmail(
  serverMongoDb,
  database,
  dataEmail,
  lambdaSendEmailErrorUrl);

console.log("Finished");

Notas

  • Esta libreria esta en npm siempre que se haga un cambio permanente al codigo para tener la version mas reciente en npm se debe hacer un npm publish

  • guardar en Logs y enviar correos son llamados en casi todas las funciones al momento de un error

  • El limite de contactos que se envian al CRM por ejecucion es de 100.

  • El limite de la cola es 400

-El Limite de peticiones a google que se pueden hacer por usuario es aproximdamente 100, usar menos siempre por ejemplo 80

FAQs

Package last updated on 21 Apr 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc