## Composer

Najjednoduchší spôsob, ako nainštalovať [bulkgate/php-sdk](https://packagist.org/packages/bulkgate/php-sdk) do projektu, je pomocou nástroja [Composer](https://getcomposer.org/) cez príkazový riadok.

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


Ak máte balík nainštalovaný, stačí len pripojiť 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;
```


Aby ste mohli odosielať správy, potrebujete inštanciu triedy `BulkGate\Sdk\MessageSender` , ktorá vyžaduje závislosť na inštancii triedy `BulkGate\Sdk\Connection\Connection`. Pozrite sa, [ako získať prístupové údaje k API](https://www.bulkgate.com/sk/dokumentacia/api-administracia-a-tokeny/administracia-api/).

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

V tejto chvíli už máte všetko pripravené na odoslanie správy.

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

Metóda `send()` odošle správu `$message`.

## Výsledok odoslania

Metóda `send()` vracia tú istú správu s doplneným stavom. Výsledok prečítate
z verejných vlastností:

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

$message->status;     // 'accepted', 'sent', 'scheduled' alebo 'error'
$message->message_id; // ID správy
$message->part_id;    // ID jednotlivých častí správy
$message->error;      // popis chyby, inak null
```

Pri hromadnej správe sa stav naplní pri každej správe zvlášť — prejdite ju cyklom
`foreach`.

## Ošetrenie chýb

Odoslanie môže skončiť výnimkou. Všetky dedia zo `BulkGate\Sdk\SdkException`:

| Výnimka | Kedy nastane |
|:--|:--|
| `ConnectionException` | Nepodarilo sa spojiť s API |
| `ApiException` | API vrátilo chybu (napríklad neplatné prihlasovacie údaje) |
| `SenderException` | Senderu bol odovzdaný neznámy typ správy |
| `InvalidStateException` | Neplatná hodnota — napríklad ISO kód krajiny alebo jednotka plánovača |
| `ChannelException` | Chyba v nastavení kanála viackanálovej správy |

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

## Voliteľná konfigurácia

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

Ak chcete zadávať telefónne čísla v národnom formáte, musíte nastaviť predvolenú krajinu.
```php
$sender->setDefaultCountry('sk');
```

Do sendera môžete pridávať aj [konfigurátory](https://www.bulkgate.com/sk/dokumentacia/php-sdk/php-sdk-konfiguratory/2.0/).

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

Na plánovanie môžete pridať inštanciu `BulkGate\Sdk\Scheduler\Scheduler`.

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