Send notification as voice call in Laravel. In this tutorial, we will learn how to use send notification as Voice or Phone call in laravel.
Here we will discuss nexmo-voice-channel for the send voice notification.
This package provides a notification channel for the Laravel framework that works with Nexmo’s voice API, allowing text-to-speech phone calls. It also provides a fluent interface to construct your message content.
1. Install notifcation package
Now open your command prompt and go to your project root directory and type the below command for install the package via Composer:
composer require roomies/nexmo-voice-channel
2. Configure nexmo credentials in .env
Go to your project root directory and set the nexmo credentials in .env file:
NEXMO_APPLICATION_ID=
NEXMO_PRIVATE_KEY=
Then add your call from number and voice to config/services.php under the nexmo key. You can review the available voices in the Nexmo documentation.
'nexmo' => [
'call_from' => env('NEXMO_CALL_FROM'),
'call_voice' => env('NEXMO_CALL_VOICE', 'Kimberly'),
],
3. Create a Notification channel
In this step, create a notification channel and put the update the below methods in your channel:
use Roomies\NexmoVoiceChannel\Markup\Message;
use Roomies\NexmoVoiceChannel\Markup\SayAs;
use Roomies\NexmoVoiceChannel\Markup\Sentence;
use Roomies\NexmoVoiceChannel\NexmoVoiceChannel;
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return [NexmoVoiceChannel::class];
}
/**
* Get the voice representation of the notification.
*
* @param mixed $notifiable
* @return \Roomies\NexmoVoiceChannel\Markup\Message
*/
public function toVoice($notifiable)
{
return new Message([
new Sentence('Hi, thanks for joining Roomies.'),
new Sentence([
'Your verification code is',
new SayAs('ABC123')->interpretAs('spell-out')
]),
]);
}
In the below is another example demonstrating the package’s markup types you can use to create a notification:
new Sentence([
'Hey!',
(new Pause)->time('1s'),
(new Prosody('Wake up!'))->volume('loud'),
(new Substitution(
(new SayAs('US'))->interpretAs('spell-out'),
))->alias('United States'),
])