vonage/vonage-laravel

Service provider for Laravel for the Vonage PHP SDK

Maintainers

Details

github.com/Vonage/vonage-laravel

Installs: 3 554

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 12

Forks: 0

Type:package

1.0.1 2023-01-16 12:00 UTC

This package is auto-updated.

Last update: 2023-01-16 12:02:33 UTC


README

The Vonage logo The Laravel logo

Vonage Package for Laravel

Latest Stable Version Latest Unstable Version License Total Downloads

Introduction

This is a Laravel Service Provider for integrating the Vonage PHP Client Library.

Requirements

This Package is for use with Laravel versions 6.0 and upwards.

Installation

Using Composer, run the terminal command:

composer require vonage/laravel

Dealing with Guzzle Client issues

By default, this package uses vonage/client, which includes a Guzzle adapter for accessing the API. Some other libraries supply their own Guzzle adapter, leading to composer not being able to resolve a list of dependencies. You may get an error when adding vonage/laravel to your application because of this.

The Vonage client allows you to override the HTTP adapter that is being used. This takes a bit more configuration, but this package allows you to use vonage/client-core to supply your own HTTP adapter.

To do this:

Run composer require vonage/client-core to install the Core SDK with Composer.

Install your own httplug-compatible adapter. For example, to use Symfony's HTTP Client:

composer require symfony/http-client php-http/message-factory php-http/httplug nyholm/psr7

composer require vonage/laravel to install this package

In your .env file, add the following configuration:

VONAGE_HTTP_CLIENT="Symfony\\Component\\HttpClient\\HttplugClient"

You can now pull the Vonage\Client object from the Laravel Service Container, or use the Facade provided by this package.

Configuration

You can use artisan vendor:publish to copy the distribution configuration file to your app's config directory:

php artisan vendor:publish

Then update config/vonage.php with your credentials. Alternatively, you can update your .env file with the following:

VONAGE_KEY=my_api_key
VONAGE_SECRET=my_secret

Optionally, you could also set an application_id and private_key if required:

VONAGE_APPLICATION_ID=my_application_id
VONAGE_PRIVATE_KEY=./private.key

Private keys can either be a path to a file, like above, or the string of the key itself:

VONAGE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n[...]\n-----END PRIVATE KEY-----\n"
VONAGE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----
[...]
-----END PRIVATE KEY-----
"

Usage

To use the Vonage Client Library you can use the Facade, or request the instance from the service container:

$text = new \Vonage\SMS\Message\SMS($toNumber, $fromNumber, 'Test SMS using Laravel');
Vonage::sms()->send($text);

Or

$vonage = app('Vonage\Client');
$text = new \Vonage\SMS\Message\SMS($toNumber, $fromNumber, 'Test SMS using Laravel');
$vonage->sms()->send($text);

If you're using private key authentication, you can make a voice call:

$outboundCall = new \Vonage\Voice\OutboundCall(
    new \Vonage\Voice\Endpoint\Phone('14843331234'),
    new \Vonage\Voice\Endpoint\Phone('14843335555')
);
$outboundCall
    ->setAnswerWebhook(
        new \Vonage\Voice\Webhook('https://example.com/answer')
    )
    ->setEventWebhook(
        new \Vonage\Voice\Webhook('https://example.com/event')
    )
;

$response = Vonage::voice()->createOutboundCall($outboundCall);

For more information on using the Vonage client library, see the official client library repository.