{"section":"tutorials","requestedLocale":"es","requestedSlug":"creando-contactos-con-webhooks-externos","locale":"es","slug":"creando-contactos-con-webhooks-externos","path":"docs/es/tutorials/weni-by-vtex/estúdio/creando-contactos-con-webhooks-externos.md","branch":"main","content":"En este artículo, te mostraremos de manera simple cómo traer contactos desde tu plataforma externa a la Plataforma Weni.\n\nLa Plataforma Weni tiene docenas de [APIs](https://dash.weni.ai/api/flows/api/v2/explorer) que pueden ser utilizadas para diversas funcionalidades. En este artículo, nos enfocaremos específicamente en la integración de contactos para automatizar tu comunicación.\n\nLos contactos son los registros de cada persona dentro de un determinado canal de comunicación. En ellos, se pueden guardar campos predeterminados, como nombre, correo electrónico, teléfono y WhatsApp, así como diversos campos personalizados que pueden crearse y utilizarse libremente en la comunicación.\n\nNormalmente, los webhooks se disparan a partir de un determinado evento dentro del software asociado, como, por ejemplo:\n\n- Al crear, actualizar o eliminar un registro de cliente.- Al cambiar el estado de un registro de lead en una plataforma CRM.Cuando ocurren estos eventos, deben dispararse solicitudes a la Plataforma Weni para actualizar los registros de contactos, permitiendo que toda la automatización de comunicación se modifique en tiempo real.\n\n## Añadiendo contactos\n\nPuedes añadir un nuevo contacto enviando una solicitud **POST** a esta URL con los siguientes datos:\n\n- **Name**: el nombre completo del contacto (cadena, opcional).\n- **Language**: el idioma preferido del contacto (código ISO de 3 dígitos, opcional).\n- **Urns**: una lista de URNs que deseas asociar a este contacto (array de hasta 100 cadenas, opcional). En los URNs se utiliza un prefijo con el canal en el que se puede iniciar la comunicación con este contacto, algunos ejemplos son:**tel**: Teléfono para el envío de SMS y llamadas.- **whatsapp**: Teléfono de WhatsApp para la comunicación por este canal. En este caso, deben usarse 8 o 9 dígitos para el teléfono, dependiendo de cómo esté registrado en WhatsApp.- **mailto**: El correo electrónico no es un canal de comunicación para recibir, solo para enviar.\n- **Ext**: Identificador externo que se puede utilizar para el canal externo o para facilitar la búsqueda de un contacto mediante cualquier identificador.\n- **Groups**: una lista de UUIDs de grupos a los que pertenece este contacto (array de hasta 100 cadenas, opcional).\n- **Fields**: los campos de contacto que deseas configurar o actualizar para este contacto. Los campos deben estar previamente creados (diccionario de hasta 100 elementos, opcional).Ejemplo:\n\n```\nPOST /api/v2/contacts.json\n​{​\n​\"\"name\"\"​:​ ​\"\"Manu Silva\"\"​,​\n​\"\"language\"\"​:​ ​\"\"por\"\"​,​\n​\"\"urns\"\"​:​ ​[\n\"\"tel:+558299331122\"\"​,​\n\"\"whatsapp:​558299331122\"\"​,\n\"\"mailto:​manu@weni.ai​\"\",\n\"\"ext:123456\"\"\n],​\n​\"\"groups\"\"​:​ ​[​\"\"6685e933-26e1-4363-a468-8f7268ab63a9\"\"​],​\n​\"\"fields\"\"​:​ ​{​\n​\"\"nickname\"\"​:​ ​\"\"Manu\"\"​,​\n​\"\"side_kick\"\"​:​ ​\"\"Emanoela da Silva\"\"​\n​}\n}\n```\n\n## Actualizando contactos\n\nUna solicitud **POST** también puede ser utilizada para actualizar un contacto existente si especificas en la URL tanto su **UUID** como una de sus **URNs**. Solo los campos incluidos en el cuerpo serán actualizados en el contacto, los demás permanecerán intactos.\n\nSi estás utilizando una **URN** en la URL, no la incluyas en el cuerpo de la solicitud. Además, si no existe un contacto con esa **URN**, crearemos uno nuevo y recibirás una respuesta **201** en ese caso.\n\nEjemplo:\n\n```\nPOST ​/​api​/​v2​/​contacts​.​json​?​uuid​=​09d23a05​-​47fe​-​11e4​-​bfe9​-​b8f6b119e9ab\n​{​\n​\"\"name\"\"​:​ ​\"\"Manu Silva\"\"​,​\n​\"\"language\"\"​:​ ​\"\"por\"\"​,​\n​\"\"urns\"\"​:​ ​[​\"\"tel:+558299331122\"\"​,​ ​\"\"whatsapp:5582999990000\"\"​],​\n​\"\"groups\"\"​:​ ​[\n{​\n\"\"name\"\"​:​ ​\"\"Devs\"\"​,​\n​ \"\"uuid\"\"​:​ ​\"\"6685e933-26e1-4363-a468-8f7268ab63a9\"\"​\n}\n],​\n​\"\"fields\"\"​:​ ​{}​\n}​\n\nPOST ​/​api​/​v2​/​contacts​.​json​?​urn​=​tel​%​3A​%​2B90987877​\n{​\n​\"\"fields\"\"​:​ ​{​\"\"nickname\"\"​:​ ​\"\"Manu\"\"​}​\n}\n```\n\n## Eliminando contactos\n\nUna solicitud **DELETE** también puede usarse para eliminar un contacto existente si especificas en la URL tanto su **UUID** como uno de sus **URNs**.\n\nEjemplo:\n\n```\nDELETE /api/v2/contacts.json?uuid=27fb583b-3087-4778-a2b3-8af489bf4a93\n\nDELETE /api/v2/contacts.json?urn=tel%3A%2B250783835665\n```\n\nRecibirás una respuesta **204** si tu contacto fue eliminado correctamente, o una respuesta **404** si no se encontró ningún contacto con los parámetros proporcionados.\n\n## Añadiendo campos personalizados\n\nUna solicitud **POST** puede utilizarse para crear un nuevo campo de contacto. No necesitas especificar una clave, ya que se generará automáticamente.\n\n- **label**: El nombre o etiqueta de visualización (cadena).\n- **value_type**: Uno de los tipos de datos aceptados (cadena).\n- **text**: Campos del tipo texto.\n- **datetime**: Campos con información de fecha y hora (ejemplo de formato: 2020-01-31T09:27:39.071299-03:00).\n- **numeric**: Campos numéricos.\n\nEjemplo:\n\n```\n​POST ​/​api​/​v2​/​fields​.​json\n​{​\n​\"\"label\"\"​:​ ​\"\"Nick name\"\"​,​\n​\"\"value_type\"\"​:​ ​\"\"text\"\"\n}\n```\n\nRecibirás un objeto (con la nueva clave del campo) si la respuesta es exitosa:\n\n```\n​{​\n​\"\"key\"\"​:​ ​\"\"nick_name\"\"​,​\n​\"\"label\"\"​:​ ​\"\"Nick name\"\"​,​\n​\"\"value_type\"\"​:​ ​\"\"text\"\"\n}\n```\n\n## Añadiendo un grupo de contacto\n\nUna solicitud **POST** puede utilizarse para crear un nuevo grupo de contacto. No es necesario especificar un **UUID**, ya que se generará automáticamente.\n\n- **name**: el nombre del grupo (cadena).\n\nEjemplo:\n\n```\nPOST /api/v2/groups.json\n​{​\n​\"\"name\"\"​:​ ​\"\"\"\"​\n}\n```\n\nRecibirás un objeto de grupo si la respuesta es exitosa:\n\n```\n​{​\n​\"\"uuid\"\"​:​ ​\"\"5f05311e-8f81-4a67-a5b5-1501b6d6496a\"\"​,​\n​\"\"name\"\"​:​ ​\"\"Reporters\"\"​,​\n​\"\"count\"\"​:​ ​0​,​\n​\"\"query\"\"​:​ ​null\n}\n```\n\n## Actualizando un grupo\n\nUna solicitud **POST** puede utilizarse para actualizar un grupo de contactos existente si especificas el **UUID** en la URL.\n\nEjemplo:\n\n```\n​POST ​/​api​/​v2​/​groups​.​json​?​uuid​=​5f05311e-8f81​-​4a67​-​a5b5​-​1501b6d6496a​\n{​\n​\"\"name\"\"​:​ ​\"\"Checked\"\"​\n}\n```\n\nRecibirás un objeto de grupo actualizado si la respuesta es exitosa:\n\n```\n{​\n​\"\"uuid\"\"​:​ ​\"\"5f05311e-8f81-4a67-a5b5-1501b6d6496a\"\"​,​\n​\"\"name\"\"​:​ ​\"\"Checked\"\"​,​\n​\"\"count\"\"​:​ ​0​,​\n​\"\"query\"\"​:​ ​null\n}\n```\n\n## Eliminando un grupo\n\nUna solicitud **DELETE** puede utilizarse para eliminar un grupo de contacto si especificas el **UUID** en la URL.\n\n**Notas**: No puedes eliminar grupos que están asociados con campañas, flujos o triggers. Debes primero eliminar los objetos relacionados a través de la interfaz web.\n\nEjemplo:\n\n```\n​DELETE ​/​api​/​v2​/​groups​.​json​?​uuid​=​5f05311e-8f81​-​4a67​-​a5b5​-​1501b6d6496a\n```\n\nRecibirás una respuesta **204** si el grupo fue eliminado correctamente, o una respuesta **404** si no se encontró ningún grupo con los parámetros proporcionados.\n\n## Conclusión\n\nAl final, tu plataforma estará habilitada para sincronizar los datos en tiempo real con nuestra plataforma, lo que permitirá al usuario aprovechar el poder de las automatizaciones y la Inteligencia Artificial para comunicarse de manera más cercana y continua con su audiencia."}