Para el envío de mensajes y archivos por Whatsapp se requieren de 4 APIs de Wntook.
- La API de perfil (Profile) para obtener la información de la cuenta del usuario de Wintook
- La API de búsqueda de contactos (Search Contact) para obtener los datos del usuario
- La API de conversasiones del contacto (Contact Conversations) para obtener las conversasiones del contacto
- La API de creación de mensajes (Create New Message)
Profile (https://app.wintook.com/api/v1/profile) utiliza el método GET
Obtener perfil de usuario
Obtener los detalles del perfil de usuario
AUTORIZACIONES:
userApiKey
Clave API : userApiKey
Este token se puede obtener visitando la página de Wintook en la parte inferior de los ajustes del perfil o a través de la consola de Rails. Proporciona acceso a puntos finales en función de los niveles de permisos de los usuarios. Este token puede ser guardado por un sistema externo cuando el usuario se crea a través de la API, para realizar actividades en nombre del usuario.
Nombre del parámetro de encabezado : api_access_token
Código de ejemplo en NodeJs-Axios
const axios = require('axios');
let config = {
method: 'get',
maxBodyLength: Infinity,
url: 'https://app.wintook.com/api/v1/profile',
headers: {
'api_access_token': 'AquiVaElUserApiKey'
}
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Respuestas
200 Success
Esquema de respuestas: application/json; charset=utf-8
id | number |
---|---|
uid | string |
name | string |
available_name | string |
display_name | string |
string | |
account_id | number |
role | string Enum: “agent” “administrator” |
confirmed | boolean |
custom_attributes | object Disponible para usuarios creados a través de las API de la plataforma y con atributos personalizados asociados. |
accounts | Array of objects (account) |
Ejemplo de respuesta 200:
{
"access_token": "UserApiKey",
"account_id": 1480,
"available_name": "Leobardo Molina",
"avatar_url": "https://app.wintook.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBdDZ6IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b7fe4568e111a7fd35bbf7359920a8d6f5cc755e/eyJfcmFpbHMiOnsibm9MWm05eWJXRjBTU0lJYW5CbkJqb0dSVlE2QzNKbGMybDZaVWtpRERJMU1IZ3lOVEFHT3daVSIsImV4cCI6bnVsbCwicHVyIjoidmFyaWF0aW9uIn19--0a14b5bfc5fd6411c45b9680bf3856213217b1ac/Logo%20CRMZeus%20_v2(CMYK)_1-2.jpg",
"confirmed": true,
"display_name": "",
"message_signature": null,
"email": "[email protected]",
"id": 1750,
"inviter_id": null,
"name": "Leobardo Molina",
"provider": "email",
"pubsub_token": "EZqVLhFWtBdxcuLQHp",
"role": "administrator",
"ui_settings": {
"notification_tone": "ding",
"editor_message_key": "cmd_enter",
"enable_audio_alerts": "all",
"is_conv_actions_open": true,
"is_ct_prev_conv_open": true,
"is_ct_custom_attr_open": true,
"show_secondary_sidebar": true,
"is_contact_sidebar_open": true,
"last_active_locale_code": "en",
"last_active_portal_slug": "horarios-de-atencion",
"conversation_display_type": "condensed",
"is_conv_participants_open": true,
"is_contact_attributes_open": true,
"contact_sidebar_items_order": [
{
"name": "contact_attributes"
},
{
"name": "contact_labels"
},
{
"name": "previous_conversation"
}
],
"previously_used_sidebar_view": true,
"show_help_center_secondary_sidebar": true,
"previously_used_conversation_display_type": "condensed",
"alert_if_unread_assigned_conversation_exist": false
},
"uid": "[email protected]",
"type": "",
"accounts": [
{
"id": 1480,
"name": "CRMZeus",
"status": "active",
"active_at": "2023-08-04T00:10:56.082Z",
"role": "administrator",
"availability": "online",
"availability_status": "online",
"auto_offline": true
}
]
}
401 Unauthorized
Search Contact (https://app.wintook.com/api/v1/accounts/{account_id}/contacts/search) utiliza el método GET
Buscar contactos
Busque los contactos resueltos usando una clave de búsqueda, actualmente admite la búsqueda de correo electrónico (tamaño de página = 15). Los contactos resueltos son aquellos que tienen un valor de identificador, correo electrónico o número de teléfono.
AUTORIZACIONES:
UserApiKey
Clave API : UserApiKey
Este token se puede obtener visitando la página de Wintook en la parte inferior de los ajustes del perfil o a través de la consola de Rails. Proporciona acceso a puntos finales en función de los niveles de permisos de los usuarios. Este token puede ser guardado por un sistema externo cuando el usuario se crea a través de la API, para realizar actividades en nombre del usuario.
Nombre del parámetro de encabezado : api_access_token
PARÁMETROS DE RUTA
account_id requerido |
integer El ID numérico de la cuenta. |
PARÁMETROS DE CONSULTA
q | string Buscar usando name , identifier , email , phone_number |
sort | string Enumeración : “name” “email” “phone_number” “last_activity_at” “-name” “-email” “-phone_number” “-last_activity_at” El atributo por el cual se debe ordenar la lista |
page | integer Predeterminado: 1 El parámetro de la página |
Código de ejemplo
const axios = require('axios');
let config = {
method: 'get',
maxBodyLength: Infinity,
url: 'https://app.wintook.com/api/v1/accounts/{account_id}/contacts/search?include_contact_inboxes=true&q={phone_number}',
headers: {
'api_access_token': 'AquiVaElUserApiKey'
}
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Respuestas
Ejemplo de respuesta 200
{
"meta": {
"count": 1,
"current_page": 1
},
"payload": [
{
"additional_attributes": {
"company_name": "Organizacion de Prueba"
},
"availability_status": "offline",
"email": "[email protected]",
"id": 690,
"name": "Liverio 299 2444412344444",
"phone_number": "+5213123456299",
"identifier": null,
"thumbnail": "",
"custom_attributes": {
"dataSync": {
"idOrg": 15032,
"idContact": 78529
}
},
"conversations_count": 1,
"last_activity_at": 1691088855,
"created_at": 1690491556,
"contact_inboxes": [
{
"source_id": "whatsapp:+5213123456299",
"inbox": {
"id": 286,
"avatar_url": "",
"channel_id": 26,
"name": "Whatsapp",
"channel_type": "Channel::TwilioSms",
"greeting_enabled": true,
"greeting_message": "este es el mensaje saludo a nueva conversacion",
"working_hours_enabled": false,
"enable_email_collect": true,
"csat_survey_enabled": true,
"enable_auto_assignment": true,
"auto_assignment_config": {},
"out_of_office_message": null,
"working_hours": [
{
"day_of_week": 0,
"closed_all_day": true,
"open_hour": null,
"open_minutes": null,
"close_hour": null,
"close_minutes": null,
"open_all_day": false
},
{
"day_of_week": 1,
"closed_all_day": false,
"open_hour": 9,
"open_minutes": 0,
"close_hour": 17,
"close_minutes": 0,
"open_all_day": false
},
{
"day_of_week": 2,
"closed_all_day": false,
"open_hour": 9,
"open_minutes": 0,
"close_hour": 17,
"close_minutes": 0,
"open_all_day": false
},
{
"day_of_week": 3,
"closed_all_day": false,
"open_hour": 9,
"open_minutes": 0,
"close_hour": 17,
"close_minutes": 0,
"open_all_day": false
},
{
"day_of_week": 4,
"closed_all_day": false,
"open_hour": 9,
"open_minutes": 0,
"close_hour": 17,
"close_minutes": 0,
"open_all_day": false
},
{
"day_of_week": 5,
"closed_all_day": false,
"open_hour": 9,
"open_minutes": 0,
"close_hour": 17,
"close_minutes": 0,
"open_all_day": false
},
{
"day_of_week": 6,
"closed_all_day": true,
"open_hour": null,
"open_minutes": null,
"close_hour": null,
"close_minutes": null,
"open_all_day": false
}
],
"timezone": "UTC",
"callback_webhook_url": "https://app.wintook.com/twilio/callback",
"allow_messages_after_resolved": true,
"lock_to_single_conversation": true,
"widget_color": null,
"website_url": null,
"hmac_mandatory": null,
"welcome_title": null,
"welcome_tagline": null,
"web_widget_script": null,
"website_token": null,
"selected_feature_flags": null,
"reply_time": null,
"messaging_service_sid": null,
"phone_number": "whatsapp:+14155345586",
"medium": "whatsapp",
"provider": null
}
}
]
}
]
}
Contact Conversations (https://app.wintook.com/api/v1/accounts/{account_id}/contacts/{id}/conversations) usa el método GET
Obtener conversaciones asociadas a ese contacto
AUTORIZACIONES:
userApiKey
Clave API : userApiKey
Este token se puede obtener visitando la página de Wintook en la parte inferior de los ajustes del perfil o a través de la consola de Rails. Proporciona acceso a puntos finales en función de los niveles de permisos de los usuarios. Este token puede ser guardado por un sistema externo cuando el usuario se crea a través de la API, para realizar actividades en nombre del usuario.
Nombre del parámetro de encabezado : api_access_token
PARÁMETROS DE RUTA
ID de la cuenta requerido |
integer El ID numérico de la cuenta. |
id requerido |
number id del contacto |
Código de ejemplo
const axios = require('axios');
let config = {
method: 'get',
maxBodyLength: Infinity,
url: 'https://app.wintook.com/api/v1/accounts/18/contacts/6043/conversations',
headers: {
'api_access_token': 'Goa2BznzJryTcThvPv8dN'
}
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Respuestas
200 Succes
ESQUEMA DE RESPUESTA: aplicación/json; conjunto de caracteres = utf-8
Array [
id | number ID de la conversación |
messages | Array de objetos ( mensaje ) |
account_id | number ID de la cuenta |
inbox_id | number ID de la bandeja de entrada |
status | string Enumeración : “abierto” “resuelto” “pendiente” El estatus de la conversación. |
timestamp | string La hora a la que se creó la conversación. |
contact_last_seen_at | string |
agent_last_seen_at | string |
unread_count | number El número de mensajes no leídos |
additional_attributes | object El objeto que contiene atributos adicionales relacionados con la conversación. |
custom_attributes | object El objeto para guardar atributos personalizados para conversación, acepta clave y valor de atributos personalizados |
meta | object |
display_id | number |
]
Codigo de ejemplo de la respuesta
{
"payload": [
{
"meta": {
"sender": {
"additional_attributes": {
"company_name": "Organizacion de Prueba"
},
"availability_status": "offline",
"email": "[email protected]",
"id": 69043,
"name": "Liverio 299 2444423454444",
"phone_number": "+5213121234599",
"identifier": null,
"thumbnail": "",
"custom_attributes": {
"dataSync": {
"idOrg": 15032,
"idContact": 78529
}
},
"last_activity_at": 1691088855,
"created_at": 1690491556
},
"channel": "Channel::TwilioSms",
"assignee": {
"id": 175,
"account_id": 148,
"availability_status": "online",
"auto_offline": true,
"confirmed": true,
"email": "[email protected]",
"available_name": "Leobardo Molina",
"name": "Leobardo Molina",
"role": "administrator",
"thumbnail": "https://app.wintook.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBdDZ6IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b7fe4568e111a7fd35bbf7359920a8d6f5cc755e/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdCem9MWm05eWJXRjBTU0lJYW5CbkJqb0dSVlE2QzNKbGMybDZaVWtpRERJMU1IZ3lOVEFHT3daVSIsImV4cCI6bnVsbCwicHVyIjoidmFyaWF0aW9uIn19--0a14b5bfc5fd6411c45b9680bf3856213217b1ac/Logo%20CRMZeus%20_v2(CMYK)_1-2.jpg"
},
"hmac_verified": false
},
"id": 430,
"messages": [
{
"id": 61137,
"content": null,
"account_id": 148,
"inbox_id": 286,
"conversation_id": 430,
"message_type": 1,
"created_at": 1691089628,
"updated_at": "2023-08-03T19:07:15.443Z",
"private": false,
"status": "sent",
"source_id": "MMa52c78593c9c463fe1741e6dcc7305e2",
"content_type": "text",
"content_attributes": {},
"sender_type": "User",
"sender_id": 175,
"external_source_ids": {},
"additional_attributes": {},
"label_list": null,
"conversation": {
"assignee_id": 175,
"unread_count": 0
},
"attachments": [
{
"id": 2986,
"message_id": 61137,
"file_type": "file",
"account_id": 148,
"extension": null,
"data_url": "https://app.wintook.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBblczIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--de2601baa38048db3047bd20f88576936b0ad523/A00012.pdf",
"thumb_url": "",
"file_size": 8845
}
],
"sender": {
"id": 175,
"name": "Leobardo Molina",
"available_name": "Leobardo Molina",
"avatar_url": "https://app.wintook.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBdDZ6IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b7fe4568e111a7fd35bbf7359920a8d6f5cc755e/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdCem9MWm05eWJXRjBTU0lJYW5CbkJqb0dSVlE2QzNKbGMybDZaVWtpRERJMU1IZ3lOVEFHT3daVSIsImV4cCI6bnVsbCwicHVyIjoidmFyaWF0aW9uIn19--0a14b5bfc5fd6411c45b9680bf3856213217b1ac/Logo%20CRMZeus%20_v2(CMYK)_1-2.jpg",
"type": "user",
"availability_status": "online",
"thumbnail": "https://app.wintook.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBdDZ6IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b7fe4568e111a7fd35bbf7359920a8d6f5cc755e/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdCem9MWm05eWJXRjBTU0lJYW5CbkJqb0dSVlE2QzNKbGMybDZaVWtpRERJMU1IZ3lOVEFHT3daVSIsImV4cCI6bnVsbCwicHVyIjoidmFyaWF0aW9uIn19--0a14b5bfc5fd6411c45b9680bf3856213217b1ac/Logo%20CRMZeus%20_v2(CMYK)_1-2.jpg"
}
}
],
"account_id": 148,
"additional_attributes": {},
"agent_last_seen_at": 1691106451,
"assignee_last_seen_at": 1691106451,
"can_reply": true,
"contact_last_seen_at": 0,
"custom_attributes": {},
"inbox_id": 286,
"labels": [],
"muted": false,
"snoozed_until": null,
"status": "open",
"created_at": 1690491557,
"timestamp": 1691089628,
"first_reply_created_at": 1690491558,
"unread_count": 0,
"last_non_activity_message": {
"id": 61137,
"content": null,
"account_id": 148,
"inbox_id": 286,
"conversation_id": 430,
"message_type": 1,
"created_at": 1691089628,
"updated_at": "2023-08-03T19:07:15.443Z",
"private": false,
"status": "sent",
"source_id": "MMa52c78593c9c463fe1741e6dcc7305e2",
"content_type": "text",
"content_attributes": {},
"sender_type": "User",
"sender_id": 175,
"external_source_ids": {},
"additional_attributes": {},
"label_list": null,
"conversation": {
"assignee_id": 175,
"unread_count": 0
},
"attachments": [
{
"id": 2986,
"message_id": 61137,
"file_type": "file",
"account_id": 148,
"extension": null,
"data_url": "https://app.wintook.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBblczIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--de2601baa38048db3047bd20f88576936b0ad523/A00012.pdf",
"thumb_url": "",
"file_size": 8845
}
],
"sender": {
"id": 175,
"name": "Leobardo Molina",
"available_name": "Leobardo Molina",
"avatar_url": "https://app.wintook.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBdDZ6IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b7fe4568e111a7fd35bbf7359920a8d6f5cc755e/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdCem9MWm05eWJXRjBTU0lJYW5CbkJqb0dSVlE2QzNKbGMybDZaVWtpRERJMU1IZ3lOVEFHT3daVSIsImV4cCI6bnVsbCwicHVyIjoidmFyaWF0aW9uIn19--0a14b5bfc5fd6411c45b9680bf3856213217b1ac/Logo%20CRMZeus%20_v2(CMYK)_1-2.jpg",
"type": "user",
"availability_status": "online",
"thumbnail": "https://app.wintook.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBdDZ6IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b7fe4568e111a7fd35bbf7359920a8d6f5cc755e/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdCem9MWm05eWJXRjBTU0lJYW5CbkJqb0dSVlE2QzNKbGMybDZaVWtpRERJMU1IZ3lOVEFHT3daVSIsImV4cCI6bnVsbCwicHVyIjoidmFyaWF0aW9uIn19--0a14b5bfc5fd6411c45b9680bf3856213217b1ac/Logo%20CRMZeus%20_v2(CMYK)_1-2.jpg"
}
}
}
]
}
403
Acceso denegado
404
Contacto no encontrado
Create New Message (https://app.wintook.com/api/v1/accounts/{account_id}/conversations/{conversation_id}/messages) utiliza el método POST
Crear un nuevo mensaje en la conversación.
AUTORIZACIONES:
userApiKey
agentBotApiKey
Clave API : userApiKey
Este token se puede obtener visitando la página de Wintook en la parte inferior de los ajustes del perfil o a través de la consola de Rails. Proporciona acceso a puntos finales en función de los niveles de permisos de los usuarios. Este token puede ser guardado por un sistema externo cuando el usuario se crea a través de la API, para realizar actividades en nombre del usuario.
Nombre del parámetro de encabezado : api_access_token
Clave API : agentBotApiKey
Este token debe ser proporcionado por el administrador del sistema u obtenido a través de la consola Rails. Este token se puede usar para crear integraciones de bots y solo puede acceder a API limitadas.
Nombre del parámetro de encabezado : api_access_token
PARÁMETROS DE RUTA
account_id requerido |
integer El ID numérico de la cuenta |
conversation_id requerido |
integer El ID numérico de la conversacion |
ESQUEMA DE RESPUESTA: application/json; charset=utf-8
content requerido |
string El contenido del mensaje |
message_type | string Enumeración: “outgoing” “incoming” |
private | boolean Bandera para identificar si es una nota privada |
content_type | string Enumeración: “input_email” “cards” “input_select” “form” “article” Si quieres crear tipos de mensaje personalizados |
content_attributes | object Atributos basados en el content_type |
Código de ejemplo
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
let data = new FormData();
data.append('attachments[]', fs.createReadStream('Fesy3CkO2/Solicitud de Cambio en Software folio 00078.pdf'));
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://app.wintook.com/api/v1/accounts/120/conversations/340/messages',
headers: {
'api_access_token': 'AquiVaElAccesToken',
'file_type': 'application/pdf',
'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundary',
...data.getHeaders()
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Respuestas
200
Success
ESQUEMA DE LA RESPUESTA: application/json; charset=utf-8
id | number |
---|---|
content | string El texto que contiene el mensaje |
content_type | string Enumeración: “text” “input_select” “cards” “form” El tipo de plantilla de mensaje |
content_attributes | object Los atributos del contenido por cada content_type |
message_type | string Enumeración: “incoming” “outgoing” “activity” “template” El tipo de mensaje |
created_at | integer La fecha y hora en que fue creado el mensaje |
private | boolean Las banderas que muestran si el mensaje es privado o no |
attachment | object El objeto de archivo adjunto a la imagen |
sender | object User/Agent/AgentBot object |
conversation_id | number ID de la conversación |
Codigo de ejemplo de la respuesta
{
"id": 6115,
"content": null,
"inbox_id": 26,
"conversation_id": 40,
"message_type": 1,
"content_type": "text",
"status": "sent",
"content_attributes": {},
"created_at": 1691110662,
"private": false,
"source_id": null,
"sender": {
"id": 175,
"name": "Leobardo Molina",
"available_name": "Leobardo Molina",
"avatar_url": "https://app.wintook.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBdDZ6IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b7fe4568e111a7fd35bbf7359920a8d6f5cc755e/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdCem9MWm05eWJXRjBTU0lJYW5CbkJqb0dSVlE2QzNKbGMybDZaVWtpRERJMU1IZ3lOVEFHT3daVSIsImV4cCI6bnVsbCwicHVyIjoidmFyaWF0aW9uIn19--0a14b5bfc5fd6411c45b9680bf3856213217b1ac/Logo%20CRMZeus%20_v2(CK)_1-2.jpg",
"type": "user",
"availability_status": "online",
"thumbnail": "https://app.wintook.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBdDZ6IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b7fe4568e111a7fd35bbf7359920a8d6f5cc755e/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdCem9MWm05eWJXRjBTU0lJYW5CbkJqb0dSVlE2QzNKbGMybDZaVWtpRERJMU1IZ3lOVEFHT3daVSIsImV4cCI6bnVsbCwicHVyIjoidmFyaWF0aW9uIn19--0a14b5bfc5fd6411c45b9680bf3856213217b1ac/Logo%20CRMZeus%20_v2(CMYK)_1-2.jpg"
}
}
403
Access denied
404
Conversation not found