## Composer

Nejsnadnější cestou, jak nainstalovat [bulkgate/php-sdk](https://packagist.org/packages/bulkgate/php-sdk) do projektu, je pomocí nástroje [Composer](https://getcomposer.org/) přes příkazovou řádku.

```
composer require bulkgate/php-sdk
```


Pokud máte balíček nainstalovaný stačí jen připojit autoloader.

```php
require_once __DIR__ . '/vendor/autoload.php';
```

```php
use BulkGate\Sdk\Connection\ConnectionStream;
use BulkGate\Sdk\MessageSender;
use BulkGate\Sdk\Scheduler\Simple;
use BulkGate\Sdk\Configurator\ViberConfigurator;
```


Abyste mohli odesílat zprávy, potřebujete instanci třídy `BulkGate\Sdk\MessageSender` , která vyžaduje závislost na instanci třídy `BulkGate\Sdk\Connection\Connection`. Podívejte se, [jak získat přístupová data do API.](https://www.bulkgate.com/cs/dokumentace/api-administrace-a-tokeny/administrace-api/)

```php
$connection = new ConnectionStream(/*application_id: */ 451, /*application_token:*/ 'NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj');
$sender = new MessageSender($connection);
```

V tuto chvíli máte již vše připraveno na odeslání zprávy.

```php
$message = new Sms('420777777777', 'test message');
$sender->send($message);
```

Metoda `send()` odešle zprávu `$message`.

## Výsledek odeslání

Metoda `send()` vrací tutéž zprávu s doplněným stavem. Výsledek přečtete
z veřejných vlastností:

```php
$message = $sender->send(new Sms('420777777777', 'test message'));

$message->status;     // 'accepted', 'sent', 'scheduled' nebo 'error'
$message->message_id; // ID zprávy
$message->part_id;    // ID jednotlivých částí zprávy
$message->error;      // popis chyby, jinak null
```

U hromadné zprávy se stav naplní u každé zprávy zvlášť — projděte ji cyklem
`foreach`.

## Ošetření chyb

Odeslání může skončit výjimkou. Všechny dědí ze `BulkGate\Sdk\SdkException`:

| Výjimka | Kdy nastane |
|:--|:--|
| `ConnectionException` | Nepodařilo se spojit s API |
| `ApiException` | API vrátilo chybu (například neplatné přihlašovací údaje) |
| `SenderException` | Senderu byl předán neznámý typ zprávy |
| `InvalidStateException` | Neplatná hodnota — třeba ISO kód země nebo jednotka plánovače |
| `ChannelException` | Chyba v nastavení kanálu vícekanálové zprávy |

```php
try
{
    $sender->send($message);
}
catch (BulkGate\Sdk\SdkException $e)
{
    // zalogovat $e->getMessage()
}
```

## Volitelná konfigurace

```php
$sender->setTag('your identificator');
```

Pokud chcete zadávat telefonní čísla v národním formátu, musíte nastavit výchozí zemi.
```php
$sender->setDefaultCountry('sk');
```

Do sendera můžete také přidávat [konfigurátory.](https://www.bulkgate.com/cs/dokumentace/php-sdk/php-sdk-konfiguratory/2.0/)

```php
$viber_configurator = new ViberConfigurator('Sender');
$sender->addSenderConfigurator($viber_configurator);
```

Pro plánování můžete přidat instanci `BulkGate\Sdk\Scheduler\Scheduler`.

```php
$scheduler = new Simple(new DateTime('2022-05-14 20:00:00'));
$sender->setScheduler($scheduler);
```