Stars: 318
Forks: 83
Pull Requests: 29
Issues: 46
Watchers: 41
Last Updated: 2022-10-12 07:54:24
Add Vonage functionality such as SMS and voice calling to your Laravel app with this Laravel Service Provider.
License: MIT License
Languages: PHP
THIS PACKAGE IS DEPRECATED We have moved to: https://github.com/Vonage/vonage-laravel, so please raise any new issues or Pull Requests in this repository.
This is a simple Laravel Service Provider providing access to the Nexmo PHP Client Library.
To install the PHP client library using Composer:
composer require nexmo/laravelAlternatively, add these two lines to your composer require section:
{
"require": {
"nexmo/laravel": "^2.0"
}
}If you're using Laravel 5.5 or above, the package will automatically register the Nexmo provider and facade.
Add Nexmo\Laravel\NexmoServiceProvider to the providers array in your config/app.php:
'providers' => [
// Other service providers...
Nexmo\Laravel\NexmoServiceProvider::class,
],If you want to use the facade interface, you can use the facade class when needed:
use Nexmo\Laravel\Facade\Nexmo;Or add an alias in your config/app.php:
'aliases' => [
...
'Nexmo' => Nexmo\Laravel\Facade\Nexmo::class,
],Nexmo-Laravel works with Lumen too! You'll need to do a little work by hand to get it up and running. First, install the package using composer:
composer require nexmo/laravelNext, we have to tell Lumen that our library exists. Update bootstrap/app.php
and register the NexmoServiceProvider:
$app->register(Nexmo\Laravel\NexmoServiceProvider::class);Finally, we need to configure the library. Unfortunately Lumen doesn't support auto-publishing files so you'll have to create the config file yourself by creating a config directory and copying the config file out of the package in to your project:
mkdir config
cp vendor/nexmo/laravel/config/nexmo.php config/nexmo.phpAt this point, set NEXMO_KEY and NEXMO_SECRET in your .env file and it should
be working for you. You can test this with the following route:
$router->get('/', function () use ($router) {
app(Nexmo\Client::class);
});By default, this package uses nexmo/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 nexmo/laravel to
your application because of this.
The Nexmo 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 nexmo/client-core to supply your
own HTTP adapter.
To do this:
composer require nexmo/client-core to install the Core SDK
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/psr7composer require nexmo/laravel to install this package
In your .env file, add the following configuration:
NEXMO_HTTP_CLIENT="Symfony\\Component\\HttpClient\\HttplugClient"
You can now pull the Nexmo\Client object from the Laravel Service Container, or use the Facade
provided by this package.
You can use artisan vendor:publish to copy the distribution configuration file to your app's config directory:
php artisan vendor:publishThen update config/nexmo.php with your credentials. Alternatively, you can update your .env file with the following:
NEXMO_KEY=my_api_key
NEXMO_SECRET=my_secretOptionally, you could also set an application_id and private_key if required:
NEXMO_APPLICATION_ID=my_application_id
NEXMO_PRIVATE_KEY=./private.keyPrivate keys can either be a path to a file, like above, or the string of the key itself:
NEXMO_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n[...]\n-----END PRIVATE KEY-----\n"NEXMO_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----
[...]
-----END PRIVATE KEY-----
"To use the Nexmo Client Library you can use the facade, or request the instance from the service container:
Nexmo::message()->send([
'to' => '14845551244',
'from' => '16105552344',
'text' => 'Using the facade to send a message.'
]);Or
$nexmo = app('Nexmo\Client');
$nexmo->message()->send([
'to' => '14845551244',
'from' => '16105552344',
'text' => 'Using the instance to send a message.'
]);If you're using private key authentication, try making a voice call:
Nexmo::calls()->create([
'to' => [[
'type' => 'phone',
'number' => '14155550100'
]],
'from' => [
'type' => 'phone',
'number' => '14155550101'
],
'answer_url' => ['https://example.com/webhook/answer'],
'event_url' => ['https://example.com/webhook/event']
]);For more information on using the Nexmo client library, see the official client library repository.