## Objeto WhatsApp
| NOMBRE DEL PARÁMETRO | VALOR | OBLIGATORIO | VALOR PREDETERMINADO |
|:---------------|:-------------------------------------------------------------------------------------------------------------------------------------------|:------------:|:-------------:|
| sender         | Remitente de texto. Primero debe registrarse. Para registrarlo, póngase en contacto con el soporte [aquí](https://www.bulkgate.com/es/contacto/). |   **Sí**   |       -       |
| expiration     | Límite de tiempo en segundos tras el cual se utilizará el canal alternativo. Los valores inferiores a `60` se ignoran y se sustituyen por el valor predeterminado |      No      |    `180`      |
| template 	     | Objeto de plantilla. No puede utilizarse junto con los siguientes parámetros (Message, File, Otp, Location); consulte [Objeto de plantilla](#objeto-de-plantilla) |  No       	  |    `null`     |
| message 	      | Objeto de mensaje. No puede utilizarse junto con los siguientes parámetros (Template, File, Otp, Location); consulte [Objeto de mensaje](#objeto-de-mensaje) |  No       	  |    `null`     |
| file   	       | Objeto de archivo. No puede utilizarse junto con los siguientes parámetros (Template, Message, Otp, Location); consulte [Objeto de archivo](#objeto-de-archivo) |  No      	   |    `null`     |
| otp   	        | Objeto Otp. No puede utilizarse junto con los siguientes parámetros (Template, Message, File, Location); consulte [Objeto Otp](#objeto-otp) |      No      |    `null`     |
| location   	   | Objeto de ubicación. No puede utilizarse junto con los siguientes parámetros (Template, Message, File, Otp); consulte [Objeto de ubicación](#objeto-de-ubicacion) |      No      |    `null`     |


## Objeto de plantilla
| NOMBRE DEL PARÁMETRO | VALOR | OBLIGATORIO | VALOR PREDETERMINADO |
|:---------------|:----------------------------------------------------------------------------------------|:------------:|:-------------:|
| template       | Nombre de la plantilla |   **Sí**   |       -       |
| language     	 | Idioma en formato ISO |   **Sí**    |       -       |
| header 	       | Objeto de encabezado de la plantilla, consulte [Objeto de encabezado](#objeto-de-encabezado-de-plantilla) |  No       	  |    `null`     |
| body 		        | Objeto de cuerpo de la plantilla, consulte [Objeto de cuerpo](#objeto-de-cuerpo-de-plantilla) |  No       	  |    `null`     |
| buttons   	    | Array de objetos de botón de la plantilla, consulte [Objeto de botones](#objeto-de-botones-de-plantilla) |  No      	   |    `null`     |


### Objeto de encabezado de plantilla
| NOMBRE DEL PARÁMETRO | VALOR | OBLIGATORIO | VALOR PREDETERMINADO |
|:---------------|:-----------------------------------------------------------------------------------------------|:---------------------------------------------------------------------:|:-------------:|
| type           | Tipo de encabezado (`image`, `video`, `text`, `location`) |                            **Sí**                            |       -       |
| url     	      | Ruta al vídeo o a la imagen (se utiliza con el tipo `image`, `video`) |    **Sí**, no junto con los siguientes (`text`, `location`)     |       -       |
| caption 	      | Pie de la imagen o del vídeo (se utiliza con el tipo `image`, `video`) |    **Sí**, no junto con los siguientes (`text`, `location`)     |       -       |
| text 		        | Texto (se utiliza con el tipo `text`) | **Sí**, no junto con los siguientes (`url`, `caption`, `location`) |       -       |
| location   	   | Objeto de ubicación (se utiliza con el tipo `location`), consulte [Objeto de ubicación](#objeto-de-ubicacion) |  **Sí**, no junto con los siguientes (`url`, `text`, `caption`)  |       -       |

### Objeto de cuerpo de plantilla
| NOMBRE DEL PARÁMETRO | VALOR | OBLIGATORIO | VALOR PREDETERMINADO |
|:---------------|:---------------------------------------------|:-------------------------------------------------------------:|:-------------:|
| type           | Tipo de cuerpo (`text`, `price`, `currency`) |                          No                           |    `text`     |
| text 		        | Texto (se utiliza con el tipo `text`) | **Sí**, no junto con los siguientes (`amount`, `currency`) |       -       |
| amount   	     | Importe en la moneda establecida |      **Sí**, no junto con los siguientes (`text`)       |       -       |
| currency   	   | Moneda |      **Sí**, no junto con los siguientes (`text`)       |       -       |

### Objeto de botones de plantilla
| NOMBRE DEL PARÁMETRO | VALOR | OBLIGATORIO | VALOR PREDETERMINADO |
|:---------------|:----------------------------------------------|:------------------------------------:|:-------------:|
| type           | Tipo de botón (`payload`, `url`) |             **Sí**               |       -       |
| index 	        | Índice del botón definido |             **Sí**              |       -       |
| payload   	    | Metadatos que se envían al hacer clic en el botón | **Sí**, solo con el tipo `payload` |       -       |
| text   	       | URL a la que se redirigirá al destinatario |   **Sí**, solo con el tipo `url`   |       -       |


**Ejemplo de solicitud con el objeto de plantilla:**
```http-json
POST /api/2.0/advanced/transactional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
	"application_id": 451,
	"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
	"number": [
		"420777777777"
	],
	"channel": {
		"whatsapp": {
			"sender": "420777777777",
			"template": {
				"template": "order_shipped",
				"language": "en",
				"header": {
					"type": "image",
					"url": "https://example.com/order-header.jpg",
					"caption": "Order 4517"
				},
				"body": [
					{
						"type": "text",
						"text": "John"
					},
					{
						"type": "currency",
						"amount": 20.5,
						"currency": "EUR"
					}
				],
				"buttons": [
					{
						"type": "url",
						"index": 1,
						"text": "4517"
					}
				]
			}
		}
	}
}
```

### Ejemplo de objeto de plantilla
![Ejemplo de objeto de plantilla](docs:advanced-whatsapp/whatsapp_template_example)



## Objeto de mensaje
| NOMBRE DEL PARÁMETRO | VALOR | OBLIGATORIO | VALOR PREDETERMINADO |
|:---------------|:------------------------------------|:---------:|:-------------:|
| text           | Texto del mensaje | **Sí**  |      -       |
| preview_url 	  | Vista previa de la URL enviada como miniatura |   No    |    `true`     |


**Ejemplo de objeto de mensaje:**
```http-json
POST /api/2.0/advanced/transactional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
	"application_id": 451,
	"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
	"number": [
		"420777777777"
	],
	"channel": {
		"whatsapp": {
			"sender": "420777777777",
			"message": {
				"text": "Your order 4517 has been shipped. Track it at https://example.com/track/4517",
				"preview_url": true
			}
		}
	}
}
```


## Objeto de archivo
| NOMBRE DEL PARÁMETRO | VALOR | OBLIGATORIO | VALOR PREDETERMINADO |
|:---------------|:-----------------------------------------------------------------|:---------:|:-------------:|
| type           | Tipo de archivo (`image`, `video`, `audio`, `document`, `sticker`) |   No    |  `image`     |
| url 	  	       | Ruta al archivo | **Sí**  |     -        |
| caption 	      | Pie del archivo enviado |   No    |      ""       |


**Ejemplo de objeto de archivo:**
```http-json
POST /api/2.0/advanced/transactional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
	"application_id": 451,
	"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
	"number": [
		"420777777777"
	],
	"channel": {
		"whatsapp": {
			"sender": "420777777777",
			"file": {
				"type": "document",
				"url": "https://example.com/invoice-4517.pdf",
				"caption": "Invoice for order 4517"
			}
		}
	}
}
```


### Ejemplo de objeto de archivo
![Ejemplo de objeto de archivo](docs:advanced-whatsapp/whatsapp_file_example)


## Objeto Otp
| NOMBRE DEL PARÁMETRO | VALOR | OBLIGATORIO | VALOR PREDETERMINADO |
|:---------------|:--------------------------------------------------------------------------------------------------------------------|:---------:|:-------------:|
| template       | Plantilla del mensaje de texto que se envía con el código | **Sí**  |      -       |
| code 	  	      | Código de un solo uso | **Sí**  |     -        |
| language 	     | Idioma en el que se envía el mensaje con el código (si se utiliza `null`, el idioma se detecta a partir del número de teléfono) | **Sí**  |       -       |


**Ejemplo de objeto Otp:**
```http-json
POST /api/2.0/advanced/transactional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
	"application_id": 451,
	"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
	"number": [
		"420777777777"
	],
	"channel": {
		"whatsapp": {
			"sender": "420777777777",
			"otp": {
				"template": "verification_code",
				"language": "en",
				"code": "0451"
			}
		}
	}
}
```


## Objeto de ubicación
| NOMBRE DEL PARÁMETRO | VALOR | OBLIGATORIO | VALOR PREDETERMINADO |
|:----------------|:------------------------------------|:---------:|:-------------:|
| latitude      	 | Latitud como número de coma flotante |    No     |      -       |
| longitude		     | Longitud como número de coma flotante |    No     |     -        |
| name			         | Nombre de la ubicación enviada |    No     |       -       |
| address 		      | Dirección de la ubicación enviada |    No     |       -       |


**Ejemplo de solicitud con el objeto de ubicación:**
```http-json
POST /api/2.0/advanced/transactional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
	"application_id": 451,
	"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
	"number": [
		"420777777777"
	],
	"channel": {
		"whatsapp": {
			"sender": "420777777777",
			"location": {
				"latitude": 50.086584,
				"longitude": 14.410763,
				"name": "Pick-up point",
				"address": "Karluv most, Praha"
			}
		}
	}
}
```

### Ejemplo de objeto de ubicación
![Ejemplo de objeto de ubicación](docs:advanced-whatsapp/whatsapp_location_example)

## Ejemplo de solicitud completa

Una plantilla aprobada con encabezado, parámetros del cuerpo y un botón de URL, con SMS como alternativa. El tramo de WhatsApp ignora el `text` de nivel superior, que está ahí para el tramo de SMS.

```http-json
POST /api/2.0/advanced/transactional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
	"application_id": 451,
	"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
	"number": ["420777777777"],
	"text": "Your order 4517 has been shipped.",
	"channel": {
		"whatsapp": {
			"sender": "420777777777",
			"expiration": 300,
			"template": {
				"template": "order_shipped",
				"language": "en",
				"header": {
					"type": "image",
					"url": "https://example.com/order-header.jpg",
					"caption": "Order 4517"
				},
				"body": [
					{"type": "text", "text": "John"},
					{"type": "currency", "amount": 20.5, "currency": "EUR"}
				],
				"buttons": [
					{"type": "url", "index": 1, "text": "4517"}
				]
			}
		},
		"sms": {
			"sender_id": "gText",
			"sender_id_value": "BulkGate"
		}
	}
}
```

El mismo mensaje como texto libre. Solo puede utilizarse dentro de la ventana de servicio de 24 horas; fuera de ella se requiere una plantilla.

```http-json
POST /api/2.0/advanced/transactional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
	"application_id": 451,
	"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
	"number": ["420777777777"],
	"text": "Your order 4517 has been shipped.",
	"channel": {
		"whatsapp": {
			"sender": "420777777777",
			"message": {
				"text": "Your order 4517 has been shipped. Track it at https://example.com/track/4517",
				"preview_url": true
			}
		},
		"sms": {
			"sender_id": "gText",
			"sender_id_value": "BulkGate"
		}
	}
}
```

La respuesta es la misma para todos los canales: consulte [Advanced transactional](https://www.bulkgate.com/es/documentacion/advanced-api/advanced-transactional/2.0/).
