## Composer

Den enkleste måten å installere [bulkgate/php-sdk](https://packagist.org/packages/bulkgate/php-sdk) i et prosjekt på er å bruke [Composer](https://getcomposer.org/) fra kommandolinjen.

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


Når du har installert pakken, er det bare å koble til autoloaderen.

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


For å sende meldinger trenger du en instans av klassen `BulkGate\Sdk\MessageSender`, som er avhengig av en instans av klassen `BulkGate\Sdk\Connection\Connection`. Se [hvordan du får tilgangsopplysninger til API-et](https://www.bulkgate.com/no/dokumentasjon/api-administrasjon/administrasjon-av-api/).

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

Nå er du klar til å sende en melding.

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

Metoden `send()` sender meldingen `$message`.

## Resultatet av sendingen

Metoden `send()` returnerer den samme meldingen med statusen utfylt. Resultatet
leser du fra de offentlige egenskapene:

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

$message->status;     // 'accepted', 'sent', 'scheduled' eller 'error'
$message->message_id; // meldings-ID
$message->part_id;    // ID-ene til de enkelte delene av meldingen
$message->error;      // beskrivelse av feilen, ellers null
```

For en massemelding fylles statusen ut for hver melding separat — gå gjennom den
med en `foreach`-løkke.

## Feilhåndtering

Sendingen kan ende med et unntak. Alle unntakene arver fra
`BulkGate\Sdk\SdkException`:

| Unntak | Når det skjer |
|:--|:--|
| `ConnectionException` | API-et kunne ikke nås |
| `ApiException` | API-et returnerte en feil (for eksempel ugyldige tilgangsopplysninger) |
| `SenderException` | En ukjent meldingstype ble sendt til senderen |
| `InvalidStateException` | En ugyldig verdi — for eksempel en ISO-kode for land eller en enhet i planleggeren |
| `ChannelException` | En feil i kanaloppsettet for en multikanalmelding |

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

## Valgfri konfigurasjon

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

Hvis du vil bruke nasjonale telefonnumre, må du angi et standardland.
```php
$sender->setDefaultCountry('sk');
```

Du kan legge til [konfiguratorer](https://www.bulkgate.com/no/dokumentasjon/php-sdk/php-sdk-konfiguratorer/2.0/) i senderen.

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

For planlegging kan du legge til en instans av `BulkGate\Sdk\Scheduler\Scheduler`.

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