老司机午夜精品视频播放-老司机午夜精品视频观看-老司机午夜精品视频在线观看免费-老司机午夜精品网站在线观看-亚洲综合精品成人-亚洲综合精品成人啪啪

您所在的位置:主頁 > 短信動態 >

短信發送模塊(短信接口插件)

2021-12-10 03:44

 

  1. 支持目前市面多家服務商
  2. 一套寫法兼容所有平臺
  3. 簡單配置即可靈活增減服務商
  4. 內置多種服務商輪詢策略、支持自定義輪詢策略
  5. 統一的返回值格式,便于日志與監控
  6. 自動輪詢選擇可用的服務商
  7. 更多等你去發現與改進...

平臺支持

  • 阿里云
  • Submail
  • 螺絲帽
  • 阿里大于
  • 容聯云通訊
  • 互億無線
  • 聚合數據
  • SendCloud
  • 百度云

環境需求

  • PHP >= 5.6

安裝

$ composer require "overtrue/easy-sms"

使用

use OvertrueEasySmsEasySms;

$config = [
    // HTTP 請求的超時時間(秒)
    'timeout' => 5.0,
    
    // 默認發送配置
    'default' => [
        // 網關調用策略,默認:順序調用
        'strategy' => OvertrueEasySmsStrategiesOrderStrategy::class,
        
        // 默認可用的發送網關
        'gateways' => [
            'yunpian', 'aliyun', 'alidayu',
        ],
    ],
    // 可用的網關配置
    'gateways' => [
        'errorlog' => [
            'file' => '/tmp/easy-sms.log',
        ],
        'yunpian' => [
            'api_key' => '824f0ff2f71cab52936axxxxxxxxxx',
        ],
        'aliyun' => [
            'access_key_id' => '',
            'access_key_secret' => '',
            'sign_name' => '',
        ],
        'alidayu' => [
            //...
        ],
    ],
];

$easySms = new EasySms($config);

$easySms->send(13188888888, [
    'content'  => '您的驗證碼為: 6379', 
    'template' => 'SMS_001', 
    'data' => [ 
        'code' => 6379
    ],
]);

短信內容

由于使用多網關發送,所以一條短信要支持多平臺發送,每家的發送方式不一樣,但是我們抽象定義了以下公用屬性:

  • content 文字內容,使用在像云片類似的以文字內容發送的平臺
  • template 模板 ID,使用在以模板ID來發送短信的平臺
  • data 模板變量,使用在以模板ID來發送短信的平臺

所以,在使用過程中你可以根據所要使用的平臺定義發送的內容。[短信發送模塊(短信接口插件)]。

發送網關

默認使用 default 中的設置來發送,如果某一條短信你想要覆蓋默認的設置。在 send 方法中使用第三個參數即可:

$easySms->send(13188888888, [
    'content'  => '您的驗證碼為: 6379', 
    'template' => 'SMS_001', 
    'data' => [ 
        'code' => 6379
    ],
 ], ['yunpian', 'juhe']); // 這里的網關配置將會覆蓋全局默認值

返回值

由于使用多網關發送,所以返回值為一個數組,結構如下:

[
    'yunpian' => [
        'status' => 'success',
        'result' => [...] // 平臺返回值
    ],
    'juhe' => [
        'status' => 'erred',
        'exception' => OvertrueEasySmsExceptionsGatewayErrorException 對象
    ],
    //...
]

如果所選網關列表均發送失敗時,將會拋出 OvertrueEasySmsExceptionsNoGatewayAvailableException 異常,你可以使用 $e->results 獲取發送結果。

自定義網關

本拓展已經支持用戶自定義網關,你可以很方便的配置即可當成與其它拓展一樣的使用:

$config = [
    ...
    'default' => [
        'gateways' => [
            'mygateway', // 配置你的網站到可用的網關列表
        ],
    ],
    'gateways' => [
        'mygateway' => [...], // 你網關所需要的參數,如果沒有可以不配置
    ],
];

$easySms = new EasySms($config);

// 注冊
$easySms->extend('mygateway', function($gatewayConfig){
    // $gatewayConfig 來自配置文件里的 `gateways.mygateway`
    return new MyGateway($gatewayConfig);
});

$easySms->send(13188888888, [
    'content'  => '您的驗證碼為: 6379', 
    'template' => 'SMS_001', 
    'data' => [ 
        'code' => 6379
    ],
]);

定義短信

你可以根本發送場景的不同,定義不同的短信類,從而實現一處定義多處調用,你可以繼承 OvertrueEasySmsMessage 來定義短信模型:

<?php

use OvertrueEasySmsMessage;
use OvertrueEasySmsContractsGatewayInterface;
use OvertrueEasySmsStrategiesOrderStrategy;

class OrderPaidMessage extends Message
{
    protected $order;
    protected $strategy = OrderStrategy::class;           // 定義本短信的網關使用策略,覆蓋全局配置中的 `default.strategy`
    protected $gateways = ['alidayu', 'yunpian', 'juhe']; // 定義本短信的適用平臺,覆蓋全局配置中的 `default.gateways`

    public function __construct($order)
    {
        $this->order = $order;
    }
        
    // 定義直接使用內容發送平臺的內容
    public function getContent(GatewayInterface $gateway = null)
    {
        return sprintf('您的訂單:%s, 已經完成付款', $this->order->no);    
    }
    
    // 定義使用模板發送方式平臺所需要的模板 ID
    public function getTemplate(GatewayInterface $gateway = null)
    {
        return 'SMS_003'; 
    }
        
    // 模板參數
    public function getData(GatewayInterface $gateway = null)
    {
        return [
            'order_no' => $this->order->no    
        ];    
    }
}

更多自定義方式請參考:OvertrueEasySmsMessage

發送自定義短信:

$order = ...;
$message = new OrderPaidMessage($order);

$easySms->send(13188888888, $message);

各平臺配置說明

阿里云

短信內容使用 template + data

    'aliyun' => [
        'access_key_id' => '',
        'access_key_secret' => '',
        'sign_name' => '',
    ],

阿里大于

短信內容使用 template + data

    'alidayu' => [
        'app_key' => '',
        'app_secret' => '',
        'sign_name' => '',
    ],

云片

短信內容使用 content

    'yunpian' => [
        'api_key' => '',
    ],

Submail

短信內容使用 data

    'submail' => [
        'app_id' => '',
        'app_key' => '',
        'project' => '',
    ],

螺絲帽

短信內容使用 content

    'luosimao' => [
        'api_key' => '',
    ],

容聯云通訊

短信內容使用 template + data

    'yuntongxun' => [
        'app_id' => '',
        'account_sid' => '',
        'account_token' => '',
        'is_sub_account' => false,
    ],

互億無線

短信內容使用 content

    'huyi' => [
        'api_id' => '',
        'api_key' => '',
    ],

聚合數據

短信內容使用 template + data

    'juhe' => [
        'app_key' => '',
    ],

SendCloud

短信內容使用 template + data

    'sendcloud' => [
        'sms_user' => '',
        'sms_key' => '',
    ],

百度云

短信內容使用 template + data

    'baidu' => [
        'ak' => '',
        'sk' => '',
        'invoke_id' => '',
        'domain' => '',
    ],



圖片展示

Copyright ? 2007-2020 萬商超信短信群發平臺  版權所有 Power by 備案號:粵ICP備20066710號-9

網站地圖 導航地圖