vonage / vonage-laravel
Service provider for Laravel for the Vonage PHP SDK
Requires
- php: ^8.0|^8.1|^8.2
- illuminate/support: ^9.0
- vonage/client: ^4.0
Requires (Dev)
- orchestra/testbench: ~3.0|^4.0|^5.0|^6.0
- phpunit/phpunit: ^5.3|~6.0|~8.0|~9.0
- roave/security-advisories: dev-latest
This package is auto-updated.
Last update: 2023-01-16 12:02:33 UTC
README
Vonage Package for Laravel
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.