## Composer

Le moyen le plus simple d'installer [bulkgate/php-sdk](https://packagist.org/packages/bulkgate/php-sdk) dans un projet consiste à utiliser [Composer](https://getcomposer.org/) en ligne de commande.

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


Une fois le paquet installé, il suffit d'inclure l'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;
```


Pour envoyer des messages, vous avez besoin d'une instance de la classe `BulkGate\Sdk\MessageSender`, qui dépend d'une instance de la classe `BulkGate\Sdk\Connection\Connection`. Découvrez [comment obtenir les données d'accès à l'API](https://www.bulkgate.com/fr/documentation/administration-api-et-tokens/administration-api/).

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

Vous êtes maintenant prêt à envoyer un message.

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

La méthode `send()` envoie le message `$message`.

## Le résultat de l'envoi

La méthode `send()` renvoie le même message, avec son statut renseigné. Vous lisez
le résultat dans ses propriétés publiques :

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

$message->status;     // 'accepted', 'sent', 'scheduled' ou 'error'
$message->message_id; // ID du message
$message->part_id;    // ID des différentes parties du message
$message->error;      // description de l'erreur, sinon null
```

Pour un message groupé, le statut est renseigné séparément pour chaque message —
parcourez-le avec une boucle `foreach`.

## Gestion des erreurs

L'envoi peut se terminer par une exception. Toutes héritent de
`BulkGate\Sdk\SdkException` :

| Exception | Quand elle se produit |
|:--|:--|
| `ConnectionException` | L'API n'a pas pu être jointe |
| `ApiException` | L'API a renvoyé une erreur (par exemple des identifiants d'accès invalides) |
| `SenderException` | Un type de message inconnu a été transmis à l'expéditeur |
| `InvalidStateException` | Une valeur invalide — par exemple un code ISO de pays ou une unité du planificateur |
| `ChannelException` | Une erreur dans la configuration des canaux d'un message multicanal |

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

## Configuration facultative

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

Si vous souhaitez utiliser des numéros de téléphone au format national, vous devez définir un pays par défaut.
```php
$sender->setDefaultCountry('sk');
```

Vous pouvez ajouter des [configurateurs](https://www.bulkgate.com/fr/documentation/php-sdk/php-sdk-configurateurs/2.0/) à l'expéditeur.

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

Pour la planification, vous pouvez ajouter une instance de `BulkGate\Sdk\Scheduler\Scheduler`.

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