La clase `BulkGate\Sdk\Message\Viber` representa el objeto del mensaje de Viber, que consta del contenido del mensaje y del destinatario.

```php
use BulkGate\Sdk\Message\Viber;
use BulkGate\Sdk\Message\Component\{Button, Image, PhoneNumber, SimpleText}
```

## Destinatario

Como primer argumento, la clase acepta un número de teléfono que puede indicarse mediante una cadena:

```php
$message = new Viber('420777777777', 'test message');
```

o acepta una instancia del objeto `BulkGate\Sdk\Message\Component\PhoneNumber`:

```php
$message = new Viber(new PhoneNumber('777777777', 'cz'), 'test message');
```

Para obtener el número de teléfono puede imprimir el objeto de la clase `BulkGate\Sdk\Message\Component\PhoneNumber`, que siempre devuelve el número de teléfono como cadena.

También puede establecer el número de teléfono y el código ISO por separado

```php
$phone_number = new PhoneNumber();
$phone_number->phoneNumber('777777777');
$phone_number->iso('cz');       
```

## Texto del mensaje

El segundo parámetro es el texto del mensaje. También aquí hay 2 opciones: la primera es indicar el texto mediante un `string` y la otra, una instancia de la clase `SimpleText`, o bien `null`.

```php
$phone_number = new PhoneNumber('777777777', 'cz');
$text = new SimpleText('test <variable>', ['variable' => 'message']);
$message = new Viber($phone_number, $text);
```

Por supuesto, también puede definir el texto después de crear la instancia del objeto mediante el método `text(string $text, array $variables = [])`

```php
$phone_number = new PhoneNumber('420777777777', 'cz');
$message = new Viber($phone_number);
$message->text('test <variable>', ['variable' => 'message'])
```

## Ajustes
El tercer parámetro del objeto Viber es `sender`, que se define como `string`.

```php
$message = new Viber('420777777777', 'text message', 'Sender');
```

Viber ofrece la posibilidad de utilizar botones e imágenes en los mensajes.

Los parámetros de entrada del botón son la cadena del texto (caption) y la URL que determina adónde lleva el botón.
Los parámetros de entrada de la imagen son la URL de la ubicación de la imagen y un `boolean` que determina si la imagen se podrá ampliar.

```php
$button = new Button('Caption', 'url');
$image = new Image('image url', false);
$message = new Viber('420777777777', 'text message', 'Sender', $button, $image);
```

El último parámetro es la vida útil del mensaje en segundos. Si lo omite, el valor
predeterminado es **10 800 s (3 horas)**; transcurrido ese tiempo, el mensaje de
Viber no entregado se descarta (con un
[mensaje multicanal](https://www.bulkgate.com/es/documentacion/php-sdk/php-sdk-mensaje-multicanal/2.0/) se reenvía como
SMS).

```php
$message = new Viber('420777777777', 'text message', 'Sender', $button, $image, 3_600);
```