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

Laravel 8 动态配置nexmo.sms_from实现国际短信合规发送

动态切换Vonage短信发件ID实现方案

你当前使用的2.5.1版本扩展包原生支持动态指定发件人,不需要修改全局配置、不需要改动vendor源码,直接按以下步骤实现即可:

1. 补充配置项

打开config/services.php,在原有nexmo配置段中新增美国专用发件号配置,保留原有非美地区的默认发件ID:

'nexmo' => [
    'sms_from' => 'DomainMonit', // 原有英国及其他非美地区使用的字母发件ID
    'sms_from_us' => '+1XXXXXXXXXX', // 替换为你采购的已完成合规审批的美国toll-free号码,必须带+1国家前缀
],

2. 单通知场景实现(通知类数量少的时候用)

在每个需要发送短信的通知类的toNexmo方法中,根据$notifiable模型上存储的国家字段动态传入发件人,调用from方法传入的值优先级高于全局配置,会直接覆盖默认值:

public function toNexmo($notifiable)
{
    // 这里判断逻辑根据你实际存储的国家字段规则调整,建议用ISO两位国家码匹配US
    $senderId = $notifiable->country_code === 'US'
        ? config('services.nexmo.sms_from_us')
        : config('services.nexmo.sms_from');

    return (new NexmoMessage)
        ->content('你的短信内容,比如域名监控告警通知')
        ->from($senderId);
}

3. 全局统一实现(通知类数量多的时候用,无侵入)

如果项目里短信通知类很多,逐个修改重复代码太冗余,可以自定义通道类统一处理发件人判断逻辑,原有业务代码不需要任何改动:

  • 第一步:新建自定义通道类app/Channels/CustomNexmoChannel.php
namespace App\Channels;

use Illuminate\Notifications\Channels\NexmoChannel;
use Illuminate\Notifications\Notification;

class CustomNexmoChannel extends NexmoChannel
{
    public function send($notifiable, Notification $notification)
    {
        $message = $notification->toNexmo($notifiable);
        // 仅当通知没有手动指定发件人时,才自动按国家切换
        if (!$message->from) {
            $message->from(
                $notifiable->country_code === 'US'
                    ? config('services.nexmo.sms_from_us')
                    : config('services.nexmo.sms_from')
            );
        }
        return parent::send($notifiable, $notification);
    }
}
  • 第二步:在app/Providers/AppServiceProvider.php的boot方法中绑定替换原通道实例:
public function boot()
{
    $this->app->bind(NexmoChannel::class, CustomNexmoChannel::class);
}

注意点

  • 国家判断逻辑建议统一使用ISO 3166-1两位国家码匹配,避免因存储的国家名称大小写、翻译差异导致判断失效
  • 美国toll-free号码必须在Vonage后台完成合规审批、绑定到当前账户后再使用,未审批的号码发往美国会被直接拦截
  • 配置美国号码时必须携带+1国家前缀,仅填写10位本地号码会导致发送失败
  • 以上实现完全兼容laravel/nexmo-notification-channel 2.5.1版本,不需要升级包版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:01:46