```php
use BulkGate\Sms\Sender;
```

Para enviar uma mensagem do tipo `BulkGate\Sms\IMessage`

 - [`BulkGate\Sms\Message`](https://www.bulkgate.com/pt/documentacao/php-sdk/php-sdk-mensagem/2.0/)
 - [`BulkGate\Sms\BulkMessage`](https://www.bulkgate.com/pt/documentacao/php-sdk/php-sdk-mensagem-em-massa/2.0/)

é necessário criar um sender, o que pode ser feito de duas formas:

 - [Nette framework](https://www.bulkgate.com/pt/documentacao/php-sdk/php-sdk-instalacao-nette/1.0/) - se utilizar o [Nette framework](https://nette.org/)
 - [PHP](https://www.bulkgate.com/pt/documentacao/php-sdk/php-sdk-instalacao/1.0/) - nos restantes casos
 
```php
/** @var BulkGate\Message\Connection $connection */
$sender = new BulkGate\Sms\Sender($connection);
```
 
## Envio de mensagens
 
Para enviar a mensagem, utilize o método `send()`, que recebe mensagens do tipo `BulkGate\Sms\IMessage`.
 
```php
/** 
  * @var BulkGate\Sms\Sender $sender 
  * @var BulkGate\Sms\IMessage|BulkGate\Sms\Message|BulkGate\Sms\BulkMessage $message
  */
$response = $sender->send($message);
```

### Resposta a `BulkGate\Sms\Message`
```php
BulkGate\Message\Response Object
(
    [data:BulkGate\Message\Response:private] => Array
    (
        [sms_id] => tmpde8f0dca011
        [price] => 0.033
        [credit] => 215.8138
        [number] => 420777777777
    )
)
```

### Resposta a `BulkGate\Sms\BulkMessage`
```php
BulkGate\Message\Response Object
(
    [data:BulkGate\Message\Response:private] => Array
    (
        [total] => Array
        (
            [price] => 0.033
            [status] => Array
            (
                [sent] => 0
                [accepted] => 1
                [scheduled] => 0
                [error] => 0
            )
        )
        [response] => Array
        (
            [0] => Array
            (
                [status] => accepted
                [sms_id] => tmpde8f0b47b12
                [price] => 0.033
                [credit] => 215.8138
                [number] => 420777777777
            )
        )
    )
)
```

## Unicode

Para configurar o [Unicode](https://www.bulkgate.com/pt/centro-de-ajuda/sms/unicode/), chame o método `unicode()`.

```php
/** @var BulkGate\Sms\Sender $sender */
$sender->unicode(); // Ativar
$sender->unicode(true); // Ativar
$sender->unicode(false); // Desativar
```

 ## Definições do remetente
 
A definição do tipo de remetente está descrita neste [capítulo](https://www.bulkgate.com/pt/documentacao/php-sdk/php-sdk-definicoes-do-remetente/).
 
 ```php
/** 
  * @var BulkGate\Sms\Sender $sender
  * @var SenderSettings\CountrySenderSettings|SenderSettings\StaticSenderSettings $settings
  */
$sender->setSenderSettings($settings);
```

## País predefinido

Se introduzir números de telefone em formato nacional, o sistema não sabe para onde enviar as mensagens. Por isso, se o prefixo internacional não for explicitamente indicado, pode definir para o sender o país predefinido para o qual as mensagens serão encaminhadas.

 ```php
 /** @var BulkGate\Sms\Sender $sender */
 $sender->setDefaultCountry(BulkGate\Sms\Country::CZECH_REPUBLIC); // através de BulkGate\Sms\Country
 $sender->setDefaultCountry('cz'); // ISO 3166-1 alpha-2 
 ``` 
 
 ## Validação de números
 
 Se precisar de verificar se um número de telefone corresponde ao formato do país, utilize o método `checkPhoneNumbers()`.
 
 ```php
 /** @var BulkGate\Sms\Sender $sender */
 $sender->checkPhoneNumbers($numbers, $iso);
 ``` 
 
Em que `$numbers` pode ser:
- um número de telefone numa string `"420777777777"`
- um número de telefone do tipo `BulkGate\Sms\Message\PhoneNumber`
- arrays de números de telefone `['420777777777','420777777778','420777777779']`
- arrays de números de telefone do tipo `BulkGate\Sms\Message\PhoneNumber`

`$iso` tem o mesmo significado que [país predefinido](#pais-predefinido)

O resultado é então `BulkGate\Message\Response`

```php
BulkGate\Message\Response Object
(
    [data:BulkGate\Message\Response:private] => Array
    (
        [420777777777] => Array
        (
            [number] => 420777777777
            [iso] => cz
            [prefix] => 420
            [area] => 420
            [length] => 12
            [area_found] => true
        )
        [77777777] => Array
        (
            [number] => 42177777777 
            [iso] => sk
            [prefix] => 421
            [area] => 421
            [length] => 8
            [area_found] => false
        )
    )
)
```

O valor `area_found` indica se o número corresponde ao formato específico do país.
