| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- <?php
- /**
- * Created by PhpStorm.
- * User: qiuzijian
- * Date: 6/22/24
- * Time: 12:34 PM
- */
- namespace Modules\Admin\Services;
- use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
- use \Exception;
- use AlibabaCloud\Tea\Exception\TeaError;
- use AlibabaCloud\Tea\Utils\Utils;
- use Darabonba\OpenApi\Models\Config;
- use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendBatchSmsRequest;
- use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
- use Illuminate\Support\Facades\DB;
- class SmsServices{
- // 短信模板code
- private $templateCode = [
- "",
- "SMS_475295115", // 会议审批提醒-提醒领导审批 1
- "SMS_475345129", // 会议通知-个人 2
- "SMS_475205106", // 会议通知-部门 3
- "", // 通知申请人 4
- ];
- public function __construct()
- {
- }
- /**
- * 使用AK&SK初始化账号Client
- * @return Dysmsapi Client
- */
- public static function createClient(){
- // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
- // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/311677.html。
- $access_key_id = getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
- $access_key_secret = getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
- if (empty($access_key_id) || empty($access_key_secret)) {
- error_log("短信配置错误", 0);
- return null;
- }
- $config = new Config([
- // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
- "accessKeyId" => $access_key_id,
- // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
- "accessKeySecret" => $access_key_secret
- ]);
- // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
- $config->endpoint = "dysmsapi.aliyuncs.com";
- return new Dysmsapi($config);
- }
- /**
- * 会议通知:${uname},您好!您有一个会议需要参加,会议时间为${meetdate},地点为${meetroom},会议主题为${meetname},详情登录安宁查看。
- */
- public function sendBatchSms($phoneArr, $infoArr, $tplCode){
- if (empty($phoneArr)||empty($infoArr) || empty($tplCode)) {
- error_log("短信参数错误", 0);
- return;
- }
- $client = $this->createClient();
- if (empty($client)) {
- error_log("短信客户端创建失败", 0);
- return null;
- }
- // 签名
- for ($i = 0; $i < count($phoneArr); $i++) {
- $signArr[] = $this->sign;
- }
- $client = self::createClient();
- // $sendBatchSmsRequest = new SendBatchSmsRequest([
- // "phoneNumberJson" => "[\"15309501557\"]",
- // "templateCode" => "SMS_474845249",
- // "signNameJson" => "[\"智慧矿山\"]",
- // "templateParamJson" => "[{\"uname\":\"秦先生\", \"meetdate\":\"2024-11-11 11:11:00\", \"meetroom\":\"道德讲堂\",\"meetname\":\"论短信通知的重要性\"}]"
- // ]);
- $dSmsInfo = [
- "phoneNumberJson" => json_encode($phoneArr),
- "templateCode" => $this->templateCode[$tplCode],
- "signNameJson" => json_encode($signArr),
- "templateParamJson" => json_encode($infoArr)
- ];
- $sendBatchSmsRequest = new SendBatchSmsRequest($dSmsInfo);
- $runtime = new RuntimeOptions([]);
- try {
- // 复制代码运行请自行打印 API 的返回值
- $client->sendBatchSmsWithOptions($sendBatchSmsRequest, $runtime);
- }
- catch (Exception $error) {
- if (!($error instanceof TeaError)) {
- $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
- }
- // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
- // 错误 message
- var_dump($error->message);
- // 诊断地址
- var_dump($error->data["Recommend"]);
- Utils::assertAsString($error->message);
- }
- }
- }
|