You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.6中aloha/laravel-twilio能否发语音消息?求替代方案

关于Laravel中发送语音消息的解决方案

嘿,我来帮你理清楚这个问题~

首先说你正在用的aloha/laravel-twilio:这个库其实是Twilio官方SDK的封装,Twilio本身支持语音呼叫(包括文本转语音TTS、播放录音文件),只是这个第三方库没有像message()那样封装专门的语音快捷方法。你完全可以通过它直接调用Twilio的底层API来实现语音功能,比如:

// 文本转语音呼叫示例
$twilio->call('+18085551212', function($call) {
    $call->say('Pink Elephants and Happy Rainbows', [
        'voice' => 'woman',
        'language' => 'en-US'
    ]);
});

// 播放录音文件示例
$twilio->call('+18085551212', function($call) {
    $call->play('https://your-domain.com/path/to/recording.mp3');
});

不过如果想要更贴合Laravel生态、功能更全面的方案,我推荐下面这两个库:

1. Twilio官方Laravel集成包

Twilio自己推出了官方的Laravel支持,更新及时,完全覆盖所有Twilio功能(语音、短信、视频等),比第三方库更可靠。安装后可以直接用官方的Twilio\Rest\Client来操作,比如实现语音呼叫:

use Twilio\Rest\Client;

$client = new Client(env('TWILIO_SID'), env('TWILIO_AUTH_TOKEN'));

// 文本转语音呼叫
$client->calls->create(
    '+18085551212', // 接收号码
    env('TWILIO_PHONE_NUMBER'), // 你的Twilio号码
    [
        'twiml' => '<Response><Say voice="woman">Pink Elephants and Happy Rainbows</Say></Response>'
    ]
);

// 播放录音文件
$client->calls->create(
    '+18085551212',
    env('TWILIO_PHONE_NUMBER'),
    [
        'twiml' => '<Response><Play>https://your-domain.com/path/to/recording.mp3</Play></Response>'
    ]
);

2. Laravel通知通道的Twilio包

如果你习惯用Laravel的通知系统来管理所有消息(短信、语音、邮件等),laravel-notification-channels/twilio这个包非常合适,它把Twilio的短信和语音都集成到了Laravel的通知体系里,代码更优雅:

首先创建一个通知类,然后在toTwilio()方法里定义语音内容:

use Illuminate\Notifications\Notification;
use NotificationChannels\Twilio\TwilioChannel;
use NotificationChannels\Twilio\TwilioVoiceMessage;

class VoiceAlertNotification extends Notification
{
    public function via($notifiable)
    {
        return [TwilioChannel::class];
    }

    public function toTwilio($notifiable)
    {
        // 文本转语音消息
        return (new TwilioVoiceMessage())
            ->content('Pink Elephants and Happy Rainbows')
            ->voice('woman')
            ->language('en-US');
        
        // 或者播放录音
        // return (new TwilioVoiceMessage())
        //     ->url('https://your-domain.com/path/to/recording.mp3');
    }
}

然后在你的模型里添加routeNotificationForTwilio()方法返回接收号码,就可以像发送普通通知一样触发语音消息了:

$user->notify(new VoiceAlertNotification());

内容的提问来源于stack exchange,提问作者user2339232

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:00:27