# Campañas

### Requisitos previos

Para poder consumir los endpoints de Conversaciones, es necesario contar con una API KEY. Las API Keys las puedes generar desde tu cuenta de Wannabot, en el apartado de "Perfil > API Keys"

![API Keys sub-menu](/files/-LUG1MHGF6_9g3a8TiEZ)

## Enviar una campaña

<mark style="color:green;">`POST`</mark> `https://api.wannabot.io/v1/conversation/broadcast/send`

Este endpoint nos permite enviar una campaña

#### Headers

| Name          | Type   | Description                                                                 |
| ------------- | ------ | --------------------------------------------------------------------------- |
| Authorization | string | Token de autenticación (API KEY). Debe especificarse como: `bearer API_KEY` |

#### Request Body

| Name                   | Type   | Description                                                                                                                                      |
| ---------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| filters                | object | Si se especifica este campo no se debe especificar el de `session_ids`                                                                           |
| interactions\_to\_send | array  | Array de interacciones a mandar al usuario, se mandaran en el orden que estén en el array.                                                       |
| session\_ids           | array  | <p>Sesiones a las que se enviará el array de interacciones.<br>Si se especifica este campo no se debe especificar el de <code>filters</code></p> |

{% tabs %}
{% tab title="200 Se ha creado correctamente la campaña" %}

```
```

{% endtab %}

{% tab title="400 Dos campañas no pueden tener dos nombres iguales" %}

```
```

{% endtab %}

{% tab title="403 API Key inválida" %}

```
{
    "statusCode": 403,
    "error": "Forbidden",
    "message": "Forbidden resource"
}
```

{% endtab %}
{% endtabs %}

### Ejemplo filters

Posibles valores de **comparison** en las condiciones:&#x20;

```
WHATEVER | EQUALS | LESS_THAN | GREATER_THAN | CONTAINS | DONT_CONTAINS | BEGINS_WITH | ENDS_WITH | DONT_BEGINS_WITH | DONT_ENDS_WITH 
```

Posibles valores de **logical\_operator** en las condiciones:

```
&& o ||
```

Posibles valores de **source** en las condiciones:

```
global-vars | session-var
```

Si **source** es **global-vars** en **source\_aux** debe ir la **ID** de la variable global a comparar.

Si **source** es **session-var** en **source\_aux** pueden ir uno de los siguiente valores de la sesión a comparar.

```
name | surnames | full_name | facebookSenderId | phone | address | image | email
```

Ejemplo de código con condiciones anidadas:

```typescript
{
  "interactions_to_send": [
    {
       "type": "Image",
       "image": "https://www.feelcats.com/blog/wp-content/uploads/2019/03/gatitos-cuidados.jpg"
    }
  ],
  "filters": {
    "version": '5ce2623d19e91600bb0b1e15',
    "tags": ['5ce2623459rrt600bb0b1e15', '5ce262219rrt600bb0b1e15'],
    "agents": ['5ce2623d19rrt600bb0b1e15', '5ce2623d195191600bb0b1e15'],
    "channels": ['slack', 'line', 'telegram'],
    "conditions": {
      "conditions": [
       {
        "conditions": null,
        "source": "global-var",
        "source_aux": "2595f550-9eea-11e7-b637-599b5f6aaec9",
        "comparison": "EQUALS",
        "targets": [
         "pepe"
        ]
       },
       {
        "conditions": {
         "conditions": [
          {
           "source": "global-var",
           "source_aux": "f5cf5850-a468-11e7-bdda-d761f1d978b3",
           "comparison": "LESS_THAN",
           "targets": [
            "18"
           ]
          },
          {
           "source": "global-var",
           "source_aux": "f5cf5850-a468-11e7-bdda-d761f1d978b3",
           "comparison": "GREATER_THAN",
           "targets": [
            "80"
           ]
          }
         ],
         "logical_operator": "&&"
        }
       }
      ],
      "logical_operator": "||"
     }
     };
   }
```

### Ejemplo sessions\_ids

```typescript
{
  "interactions_to_send": [
    {
       "type": "Image",
       "image": "https://www.feelcats.com/blog/wp-content/uploads/2019/03/gatitos-cuidados.jpg"
    }
  ],
  "session_ids": ['5ce103d19rrt600bb0b1e15', '5ce2623d19r56200bb0b1e15']
}
```

### Filters

```typescript
filters: {
  // Id de la versión
  version: string,
  // Array de ids de los tags
  tags?: Array<string>,
  // Array de ids de los agentes
  agents?: Array<string>,
  // Array de los canales por los que deseamos enviar los mensajes, 
  // Posibles: telegram | messenger | slack | web | line
  channels?: Array<string>
};
```

### Interaction to send

Dentro de `interaction_to_send` podemos meter las siguientes interacciones a mandar al usuario:&#x20;

```typescript
"interactions_to_send": [{...}]
```

### Permisos push

Nos permite pedir permiso al usuario para enviarle notificaciones.

```javascript
{
   "type": "SendPushPermission",
   // Indica el texto para este botón
   "special_button_text": "Si acepto",
   // Texto del mensaje, se pueden especificar varios textos, si hay mas de 1 se mostrara uno aleatorio.
   "initial_responses": ["¿Aceptas los permisos push?"]
},
```

![](/files/-LfOf5pYsbDUYl_N0k0p)

### Localización

Enviar una localización al usuario

```typescript
{
 "type": "Location",
 // Listado de datos de la Localización
 "location": {
  // Titulo
  "title": "Puerta del sol",
  // Sub titulo
  "subtitle": "Madrid",
  // Latitud
  "latitude": 40.4165000,
  // Longitud
  "longitude": -3.7025600 
  // La imagen sale por estas dos últimas.
}
```

![](/files/-LfOdVAl8b9yYBDGvGh2)

### Imagen

Enviar una imagen al usuario.

```javascript
  {
   "type": "Image",
   // Indica la URL de la imagen cargada en Wannabot para esta interacción
   "image": "https://www.feelcats.com/blog/wp-content/uploads/2019/03/gatitos-cuidados.jpg"
  },
```

![](/files/-LfOdZLbzySDmMOGBWnU)

### Texto

Enviar un texto con botones.

```typescript
  {
   "type": "ButtonResponse",
   // Texto del mensaje, se pueden especificar varios textos, si hay mas de 1 se mostrara uno aleatorio.
   "initial_responses": ["Que tal"],
   // Listado de Botones para esta interacción
   "buttons_responses": [{
    // Tipo de botón. Posibles: postback, web_url, phone_number
    "type": "postback",
    // Indica el texto para este botón
    "title": "Bien",
    // Indica el payload, en caso de ser un botón de tipo POSTBACK, para este botón
    "payload": "continuar"
   }]
  },
```

![](/files/-LfOdcbJI3LrFWK_IYre)

### Tarjetas

Enviar una tarjeta al usuario con imagen, titulo, descripción, url y botones.

```typescript
{
   "type": "GeneralResponse",
   "general_response": {
    "template_type": "generic",
    // Formas de mostrar la imagen. Posibles: horizontal" o "vertical"
    "image_aspect_ratio": "horizontal",
    // Listado de CARDS
    "elements": [{
     // Titulo
     "title": "Nueva Zelanda",
     // Subtiutlo
     "subtitle": "Cueva de la catredal",
     // Url de la imagen
     "image_url": "https://fotografias-viajestic.atresmedia.com/clipping/cmsimages02/2017/07/07/40BA821D-58FB-47ED-BB29-247C8EDBB9F2//58.jpg",
      // Botón Que solo puede ser de tipo url.
      "default_action": {
       "type": "web_url",
       "url": "https://masinfo.com"
      },
     // Listado de Botones para esta interacción
     "buttons": [{
      // Tipo de botón. Posibles: postback, web_url, phone_number
      "type": "postback",
      // Indica el texto para este botón
      "title": "Quiero ir",
      // Indica el payload, en caso de ser un botón de tipo POSTBACK, para este botón
      "payload": "continuar"
     }]
    }]
   }
  },
```

![](/files/-LfOdhdgTJRztGLtgN80)

### Listado

Parecido a las tarjetas pero en horizontal.

```typescript
{
   "type": "ListResponse",
   "list_response": {
    "template_type": "list",
    // Listado de LIST
    "elements": [{
     // Titulo
     "title": "Nueva Zelanda",
     // Subtitulo
     "subtitle": "Cueva de la catredal",
     // Url de la imagen
     "image_url": "https://fotografias-viajestic.atresmedia.com/clipping/cmsimages02/2017/07/07/40BA821D-58FB-47ED-BB29-247C8EDBB9F2//58.jpg",
      // Botón Que solo puede ser de tipo url.
      "default_action": {
       "type": "web_url",
       "url": "https://masinfo.com"
      },
     // Listado de Botones para esta interacción
     "buttons": [{
      // Tipo de botón. Posibles: postback, web_url, phone_number
      "type": "postback",
      // Indica el texto para este botón
      "title": "Continuar",
      // Indica el payload, en caso de ser un botón de tipo POSTBACK, para este botón
      "payload": "continuar"
     }]
    }]
   }
  }
```

![](/files/-LfOfBsSvaPFU5h3_k_0)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wannabot.gitbook.io/api_es/campanas.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
