O objeto de canal Viber para [Advanced promotional](https://www.bulkgate.com/pt/documentacao/advanced-api/advanced-promotional/2.0/). Coloca-se no objeto `channel`, sob a chave `viber` - consulte [Cascata](https://www.bulkgate.com/pt/documentacao/advanced-api/advanced-cascata-de-canais/).

> [!IMPORTANT]
> As mensagens transacionais utilizam um objeto Viber **diferente** sob a mesma chave - este contém modelos aprovados em vez de um botão e de uma imagem. Consulte [Viber – transacional](https://www.bulkgate.com/pt/documentacao/advanced-api/advanced-viber-transacional/).

```json
{
	"viber": {
		"sender": "BulkGate",
		"image": "https://example.com/banner.jpg",
		"button": {
			"caption": "Abrir a oferta",
			"url": "https://example.com/oferta"
		}
	}
}
```

## Objeto Viber

| NOME DO PARÂMETRO | VALOR | OBRIGATÓRIO | VALOR PREDEFINIDO |
|:---------------|:-----------------------------------------------------------------------------------------------------------------------------------------------|:---------:|:-------------:|
| text           | Texto da mensagem Viber. Substitui o `text` de nível superior, consulte [Que texto é utilizado](https://www.bulkgate.com/pt/documentacao/advanced-api/advanced-cascata-de-canais/) |    Não     |    `null`     |
| sender         | Remetente Viber registado. Tem de ser registado primeiro. Para o registo, contacte o suporte [aqui](https://www.bulkgate.com/pt/contacto/) |  **Sim**  |       -       |
| expiration     | Limite de tempo em segundos após o qual é utilizado o canal seguinte da cascata. Os valores inferiores a `60` são ignorados e substituídos pelo valor predefinido |    Não     |     `300`     |
| button         | Estrutura que cria um botão na mensagem, consulte [Objeto Button](#objeto-button). Sem ela, a mensagem não tem botão |    Não     |    `null`     |
| image          | URL de uma imagem apresentada na mensagem |    Não     |    `null`     |

### Objeto Button

| NOME DO PARÂMETRO | VALOR | OBRIGATÓRIO | VALOR PREDEFINIDO |
|:---------------|:------------|:---------:|:-------------:|
| caption        | Texto do botão |    Não     |     `OK`      |
| url            | Endereço URL |    Não     |      `#`      |

Os valores predefinidos aplicam-se apenas quando o próprio objeto `button` está presente - `"button": {}` cria um botão com o texto `OK` que aponta para `#`.

## Exemplo de pedido completo

Viber com imagem e botão, SMS como alternativa. A parte SMS não tem imagem nem botão, pelo que recorre ao `text` de nível superior.

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

{
	"application_id": 451,
	"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
	"number": ["420777777777", "420777777778"],
	"text": "Spring sale starts today, up to 50 % off.",
	"channel": {
		"viber": {
			"sender": "BulkGate",
			"image": "https://example.com/spring-sale.jpg",
			"button": {
				"caption": "Open the offer",
				"url": "https://example.com/spring-sale"
			}
		},
		"sms": {
			"sender_id": "gText",
			"sender_id_value": "BulkGate"
		}
	}
}
```

A resposta é igual para todos os canais - consulte [Advanced promotional](https://www.bulkgate.com/pt/documentacao/advanced-api/advanced-promotional/2.0/).
