Una campaña hace referencia a una función de marcado automático saliente que se comunica de forma secuencial con una lista de contactos, inicia llamadas salientes y conecta cada contacto con un agente disponible. Los extremos de la campaña proporcionan acceso a los datos relacionados con la campaña, lo que permite recuperar objetos de campaña y de contacto.
El objeto Campaign representa una sola campaña dentro de la plataforma.
El objeto Contact representa un contacto individual de la campaña dentro de una campaña específica.
Los extremos de la campaña permiten a los usuarios agregar, actualizar y borrar contactos de una campaña existente. Los extremos disponibles incluyen los siguientes:
Estado del contacto de la campaña
El campo de estado puede estar en cualquiera de los siguientes estados:
| Estado del contacto de la campaña | Descripción |
|---|---|
| Próximamente | El contacto es el próximo al que se llamará. |
| Marcando | Se está marcando el contacto en este momento. |
| En cola | Se puso en cola la llamada para un contacto determinado. |
| Conectado | El contacto se conectó con un agente. |
| Finalizado | La llamada se completó. |
| Transferido | Se transfirió la llamada. |
| Transferida y finalizada | Se transfirió y, luego, se completó la llamada. |
| No se retiró | El usuario final no respondió o nunca se comunicó con él. |
| No se pudo establecer contacto | La llamada nunca llegó al contacto. |
| Abandonado por el contacto | En la vista previa, el usuario final cuelga antes de conectarse con un agente. Tanto para la marcación progresiva como para la predictiva, el usuario final cuelga la llamada dentro de los 5 segundos posteriores a la conexión con el agente. |
| Omitido | El agente omitió el contacto y estará disponible para conectarse con otro agente. |
| Omitida y cerrada | En la vista previa, el agente omite y cierra un contacto. Ahora, este contacto siempre se omitirá en esta campaña. |
| Número no válido | Contacto con número de teléfono no válido. |
| Error de la empresa de transporte | Este error depende del operador. |
| Abandonado por el marcador | El marcador abandonó el contacto. |
| Se cortó el buzón de voz | En el modo predictivo, el marcador determina que el usuario final es una máquina (es decir, un correo de voz). |
| Error general del marcador | La llamada falló debido a un error del marcador. |
| Volver a marcar programado | Estado temporal. Se programó una nueva llamada para el futuro. |
| No llamar | El número estaba en la lista de números de No llamar. |
| Número de salida no válido | Contacto con número de salida no válido. |
| Número de teléfono bloqueado | Contacto con un número internacional no válido o bloqueado. |
Cómo agregar un solo contacto a una campaña
| Parámetro | Obligatorio | Tipo de datos | Definición |
|---|---|---|---|
| campaign_id | TRUE | Número entero | Es el ID de la campaña a la que se agregará un contacto. |
Endpoint:
Method: POST
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contacts
Encabezados:
| Clave | Valor | Descripción |
|---|---|---|
| Content-Type | application/json |
Cuerpo:
{
"name": "string",
"email": "customer@somedomain.com",
"phone_number": "+1 111-111-1111",
"outbound_number": "+1 760-867-5309",
"external_unique_id": "UID_123456"
}
Ejemplo de solicitud y respuestas
En las siguientes secciones, se proporcionan ejemplos de solicitudes al extremo.
Cómo agregar un solo contacto a una campaña
En este ejemplo, se muestra cómo agregar un contacto a un ID de campaña específico.
Solicitud
Encabezados:
| Clave | Valor | Descripción |
|---|---|---|
| Content-Type | application/json |
Consulta:
| Clave | Valor | Descripción |
|---|---|---|
| campaign_id | integer | ID de la campaña a la que se agregará el contacto |
Cuerpo:
{
"name": "string",
"email": "customer@somedomain.com",
"phone_number": "+1 111-111-1111",
"outbound_number": "+1 760-867-5309",
"external_unique_id": "UID_123456"
}
Respuesta
{
"valid_contacts": [
{
"name": "string",
"email": "customer@somedomain.com",
"phone_number": "+1 111-111-1111",
"outbound_number": "+1 760-867-5309",
"external_unique_id": "UID_123456"
}
],
"invalid_contacts": []
}
Código de estado: 200
Obtén los contactos de una campaña
| Parámetro | Obligatorio | Tipo de datos | Definición |
|---|---|---|---|
| campaign_id | TRUE | Número entero | Es el ID de la campaña de la que se recuperarán los contactos. |
Endpoint:
Method: GET
Type:
URL: https://{subdomain}.{domain}/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contacts
Encabezados:
| Clave | Valor | Descripción |
|---|---|---|
| Content-Type | application/json |
Consulta:
| Clave | Valor | Descripción |
|---|---|---|
| campaign_id | integer | ID de la campaña a la que se agregará el contacto |
Ejemplo de solicitud y respuestas
En las siguientes secciones, se proporcionan ejemplos de solicitudes al extremo.
Obtén los contactos de una campaña
En el siguiente ejemplo, se muestra cómo recuperar los contactos para el ID de campaña determinado.
Solicitud
Encabezados:
| Clave | Valor | Descripción |
|---|---|---|
| Content-Type | application/json |
Consulta:
| Clave | Valor | Descripción |
|---|---|---|
| campaign_id | integer | Es el ID de la campaña sobre la que se realizará la consulta. |
Respuesta
[
{
"name": "string",
"email": "customer@somedomain.com",
"phone_number": "+1 111-111-1111",
"outbound_number": "+1 760-867-5309",
"external_unique_id": "UID_123456"
}
]
Código de estado: 200
Importa varios contactos a una campaña
| Parámetro | Obligatorio | Tipo de datos | Definición |
|---|---|---|---|
| archivo | TRUE | String | Archivo JSON que contiene los múltiples contactos que se agregarán a una campaña. |
| campaign_id | TRUE | Número entero | Es el ID de la campaña a la que se agregarán los contactos. |
Endpoint:
Method: POST
Type: FORM DATA
URL: https://{subdomain}.{domain}/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contacts/import
Encabezados:
| Clave | Valor | Descripción |
|---|---|---|
| Content-Type | multipart/form-data |
Cuerpo:
'DATOS DEL FORMULARIO'
Contenido del archivo:
[
{
"name": "string",
"email": "customer@somedomain.com",
"phone_number": "+1 111-111-1111",
"outbound_number": "+1 760-867-5309",
"external_unique_id": "UID_123456"
}
]
Ejemplo de solicitud y respuestas
En las siguientes secciones, se proporcionan ejemplos de solicitudes al extremo.
Cómo importar varios contactos desde un archivo
En este ejemplo, se muestra cómo agregar contactos a una campaña en función de un archivo que se publica en el extremo. El archivo se publica como datos de formulario.
Solicitud
Encabezados:
| Clave | Valor | Descripción |
|---|---|---|
| Content-Type | multipart/form-data |
Consulta:
| Clave | Valor | Descripción |
|---|---|---|
| campaign_id | integer | ID de la campaña a la que se agregarán los contactos |
Contenido del archivo:
[
{
"name": "string",
"email": "customer@somedomain.com",
"phone_number": "+1 111-111-1111",
"outbound_number": "+1 760-867-5309",
"external_unique_id": "UID_123456"
}
]
Respuesta
None
Código de estado: 202 (Aceptado)
Trabajos
| Parámetro | Obligatorio | Tipo de datos | Definición |
|---|---|---|---|
| job_id | TRUE | Número entero | ID del trabajo que deseas recuperar |
| campaign_id | TRUE | Número entero | Es el ID de la campaña a la que pertenece el ID del trabajo. |
Endpoint:
Method: GET
Type:
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contacts/jobs/{job_id}
Encabezados:
| Clave | Valor | Descripción |
|---|---|---|
| Content-Type | application/json |
Ejemplo de solicitud y respuestas
En las siguientes secciones, se proporcionan ejemplos de solicitudes al extremo.
Se completó correctamente
En el siguiente ejemplo, se muestra cómo recuperar el trabajo y determinar si se completó correctamente.
Solicitud
Encabezados:
| Clave | Valor | Descripción |
|---|---|---|
| Content-Type | application/json |
Consulta:
| Clave | Valor | Descripción |
|---|---|---|
| campaign_id | 1 | ID de la campaña a la que pertenece el trabajo |
| job_id | 530 | Es el ID del trabajo cuyo estado se verificará. |
Respuesta
{
"id": 530,
"status": "completed",
"type": "Jobs::Bulk::Campaign::ParentJob"
}
Código de estado: 200
La importación aún está en curso
En el siguiente ejemplo, se muestra cómo recuperar el trabajo y determinar si la importación aún está en curso.
Solicitud
Encabezados:
| Clave | Valor | Descripción |
|---|---|---|
| Content-Type | application/json |
Consulta:
| Clave | Valor | Descripción |
|---|---|---|
| campaign_id | 1 | ID de la campaña a la que pertenece el trabajo |
| job_id | 530 | Es el ID del trabajo cuyo estado se verificará. |
Respuesta
{
"id": 530,
"status": "in_progress",
"type": "Jobs::Bulk::Campaign::ParentJob"
}
Código de estado: 200
Trabajo con errores
En el siguiente ejemplo, se muestra cómo recuperar el trabajo y determinar si falló.
Solicitud
Encabezados:
| Clave | Valor | Descripción |
|---|---|---|
| Content-Type | application/json |
Consulta:
| Clave | Valor | Descripción |
|---|---|---|
| campaign_id | 1 | ID de la campaña a la que pertenece el trabajo |
| job_id | 523 | Es el ID del trabajo cuyo estado se verificará. |
Respuesta
{
"error_details": "NativePowerDial::ContactService::DuplicateContactPhoneOnCampaign",
"error_message": "Internal Error",
"id": 523,
"status": "failed",
"type": "Jobs::Bulk::Campaign::StartImport"
}
Código de estado: 200
Actualiza un solo contacto
| Parámetro | Obligatorio | Tipo de datos | Definición |
|---|---|---|---|
| campaign_id | TRUE | Número entero | Es el ID de la campaña a la que pertenece el ID del trabajo. |
Endpoint:
Method: PATCH
Type: RAW
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contact
Encabezados:
| Clave | Valor | Descripción |
|---|---|---|
| Content-Type | application/json |
Cuerpo:
{
"contact_id": 16312,
"name": "string",
"email": "customer@somedomain.com",
"phone_number": "+1 111-111-1111",
"external_unique_id": "UID_123456"
}
Ejemplo de solicitud y respuestas
En las siguientes secciones, se proporcionan ejemplos de solicitudes al extremo.
Actualiza un contacto para una campaña
En este ejemplo, se muestra cómo actualizar un contacto que se encuentra en una campaña específica.
Solicitud
Encabezados:
| Clave | Valor | Descripción |
|---|---|---|
| Content-Type | application/json |
Cuerpo:
{
"contact_id": 7,
"name": "Bob Smith",
"email": "customer@somedomain.com",
"phone_number": "+1 111-111-1111",
"external_unique_id": "UID_123456"
}
Respuesta
{
"id": 7,
"name": "Bob Smith",
"campaign_id": 6,
"assigned_call_id": null,
"assigned_participant_id": null,
"outbound_number": "+1-(201)-471-6992",
"priority": null,
"created_at": "2024-08-05T14:51:49.000Z",
"updated_at": "2024-08-05T21:01:16.000Z",
"status": "Upcoming",
"user_custom_metadata": {
"NAME (REQUIRED)": "Bob Smith",
"PHONE (REQUIRED)": "+1 111-111-1111",
"EMAIL (REQUIRED)": "customer@somedomain.com"
}
}
Código de estado: 200
Cómo quitar un solo contacto
| Parámetro | Obligatorio | Tipo de datos | Definición |
|---|---|---|---|
| campaign_id | TRUE | Número entero | Es el ID de la campaña a la que pertenece el ID del trabajo. |
Endpoint:
Method: DELETE
Type: RAW
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/outbound_dialer/campaigns/{campaign_id}/contact
Encabezados:
| Clave | Valor | Descripción |
|---|---|---|
| Content-Type | application/json |
Cuerpo:
{
"contact_id": integer,
"phone_number": "string",
"external_unique_id": "string"
}
Ejemplo de solicitud y respuestas
En las siguientes secciones, se proporcionan ejemplos de solicitudes al extremo.
Cómo quitar un contacto por ID
En este ejemplo, se muestra cómo quitar un contacto de una campaña según su ID.
Solicitud
Encabezados:
| Clave | Valor | Descripción |
|---|---|---|
| Content-Type | application/json |
Cuerpo:
{
"contact_id": 7,
}
Consulta:
| Clave | Valor | Descripción |
|---|---|---|
| campaign_id | 1 | ID de la campaña a la que pertenece el trabajo |
Respuesta
{
"id": 7,
"name": "Bob Smith",
"campaign_id": 6,
"assigned_call_id": null,
"assigned_participant_id": null,
"outbound_number": "+1-(201)-471-6992",
"priority": null,
"created_at": "2024-08-05T14:51:49.000Z",
"updated_at": "2024-08-05T21:01:16.000Z",
"status": "Upcoming",
"user_custom_metadata": {
"NAME (REQUIRED)": "Bob Smith",
"PHONE (REQUIRED)": "+1 111-111-1111",
"EMAIL (REQUIRED)": "customer@somedomain.com"
}
}
Código de estado: 200