## Composer

Am einfachsten installieren Sie [bulkgate/php-sdk](https://packagist.org/packages/bulkgate/php-sdk) in ein Projekt mit [Composer](https://getcomposer.org/) über die Kommandozeile.

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


Ist das Paket installiert, binden Sie einfach den Autoloader ein.

```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;
```


Um Nachrichten zu senden, benötigen Sie eine Instanz der Klasse `BulkGate\Sdk\MessageSender`, die als Abhängigkeit eine Instanz der Klasse `BulkGate\Sdk\Connection\Connection` erfordert. Siehe [So erhalten Sie die Zugangsdaten zur API](https://www.bulkgate.com/de/dokumentation/api-verwaltung-und-tokens/api-verwaltung/).

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

Damit sind Sie bereit, eine Nachricht zu senden.

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

Die Methode `send()` sendet die Nachricht `$message`.

## Ergebnis des Versands

Die Methode `send()` gibt dieselbe Nachricht mit ausgefülltem Status zurück. Das
Ergebnis lesen Sie aus den öffentlichen Eigenschaften:

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

$message->status;     // 'accepted', 'sent', 'scheduled' oder 'error'
$message->message_id; // ID der Nachricht
$message->part_id;    // IDs der einzelnen Nachrichtenteile
$message->error;      // Beschreibung des Fehlers, sonst null
```

Bei einer Sammelnachricht wird der Status für jede Nachricht einzeln ausgefüllt —
durchlaufen Sie sie mit einer `foreach`-Schleife.

## Fehlerbehandlung

Der Versand kann mit einer Ausnahme enden. Alle Ausnahmen erweitern
`BulkGate\Sdk\SdkException`:

| Ausnahme | Wann sie auftritt |
|:--|:--|
| `ConnectionException` | Die API war nicht erreichbar |
| `ApiException` | Die API hat einen Fehler zurückgegeben (zum Beispiel ungültige Zugangsdaten) |
| `SenderException` | Dem Sender wurde ein unbekannter Nachrichtentyp übergeben |
| `InvalidStateException` | Ein ungültiger Wert — etwa ein ISO-Ländercode oder eine Einheit des Schedulers |
| `ChannelException` | Ein Fehler in der Kanaleinstellung einer Mehrkanal-Nachricht |

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

## Optionale Konfiguration

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

Wenn Sie nationale Telefonnummern verwenden möchten, müssen Sie ein Standardland festlegen.
```php
$sender->setDefaultCountry('sk');
```

Dem Sender können Sie [Konfiguratoren](https://www.bulkgate.com/de/dokumentation/php-sdk/php-sdk-konfiguratoren/2.0/) hinzufügen.

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

Für die zeitliche Planung können Sie eine Instanz von `BulkGate\Sdk\Scheduler\Scheduler` hinzufügen.

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