send_smsModel.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. //require_once 'include\vendor\autoload.php';
  3. //$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
  4. $path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . '..'. \DIRECTORY_SEPARATOR . 'include' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
  5. if (file_exists($path)) {
  6. require_once $path;
  7. }
  8. //use Darabonba\OpenApi\OpenApiClient;
  9. //use Darabonba\OpenApi\Models\Config;
  10. //use Darabonba\OpenApi\Models\Params;
  11. //use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
  12. //use Darabonba\OpenApi\Models\OpenApiRequest;
  13. use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
  14. // use \Exception;
  15. use AlibabaCloud\Tea\Exception\TeaError;
  16. use AlibabaCloud\Tea\Utils\Utils;
  17. use Darabonba\OpenApi\Models\Config;
  18. use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendBatchSmsRequest;
  19. use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;
  20. use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
  21. // use AliyunClient;
  22. class send_smsClassModel extends Model
  23. {
  24. // 短信模板code
  25. private $templateCode = [
  26. 0=>"",
  27. 1=>"SMS_467590542", // 会议通知-个人 1
  28. 2=>"SMS_467610225", // 会议审批提醒-提醒领导审批 2
  29. 3=>"SMS_467510538", // 会议通知-部门 3
  30. 4=>"SMS_467595489", // 通知申请人 4
  31. 5=>"SMS_478990217", // 枣泉会议通知-个人 5
  32. 6=>"SMS_478610651", // 枣泉会议通知-部门 6
  33. 7=>"SMS_479150262", // 枣泉会议通知-个人 7
  34. 101=>"SMS_485475245" // 枣泉用印审批
  35. ];
  36. private $sign = "智慧矿山";
  37. public function initModel()
  38. {
  39. }
  40. /**
  41. * 使用AK&SK初始化账号Client
  42. * @return Dysmsapi Client
  43. */
  44. public function createClient(){
  45. // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
  46. // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/311677.html。
  47. $accessKeyId = getconfig('ALIBABA_CLOUD_ACCESS_KEY_ID');
  48. $accessKeySecret = getconfig('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
  49. if (empty($accessKeyId) || empty($accessKeySecret)) {
  50. m("log")->addlog("短信错误", "请配置accessKeyId和accessKeySecret");
  51. return null;
  52. }
  53. $config = new Config([
  54. // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
  55. "accessKeyId" => $accessKeyId,
  56. // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
  57. "accessKeySecret" => $accessKeySecret
  58. ]);
  59. // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
  60. $config->endpoint = "dysmsapi.aliyuncs.com";
  61. return new Dysmsapi($config);
  62. }
  63. public function sendBatchSms($phoneArr, $infoArr, $tplCode){
  64. if (empty($phoneArr)||empty($infoArr) || empty($tplCode)) {
  65. m("log")->addlog("短信错误", "参数错误");
  66. return;
  67. }
  68. $client = $this->createClient();
  69. // 签名
  70. for ($i = 0; $i < count($phoneArr); $i++) {
  71. $signArr[] = $this->sign;
  72. }
  73. $dSmsInfo = [
  74. "phoneNumberJson" => json_encode($phoneArr),
  75. "signNameJson" => json_encode($signArr),
  76. "templateCode" => $this->templateCode[$tplCode],
  77. "templateParamJson" => json_encode($infoArr)
  78. ];
  79. m('log')->addlog("短信配置", json_encode($dSmsInfo));
  80. $sendBatchSmsRequest = new SendBatchSmsRequest($dSmsInfo);
  81. $runtime = new RuntimeOptions([]);
  82. try {
  83. // 复制代码运行请自行打印 API 的返回值
  84. $res = $client->sendBatchSmsWithOptions($sendBatchSmsRequest, $runtime);
  85. if ($res->body->code != 'OK') {
  86. m("log")->addlog("短信报错", $res->body->message);
  87. } else {
  88. m("log")->addlog("短信发送", $res->body->message);
  89. }
  90. }
  91. catch (Exception $error) {
  92. m("log")->addlog("短信报错", "错误信息:".$error->message);
  93. }
  94. }
  95. /**
  96. * @param string[] $args
  97. * @return void
  98. */
  99. // public static function test($args){
  100. // $client = self::createClient();
  101. // $sendBatchSmsRequest = new SendBatchSmsRequest([
  102. // "phoneNumberJson" => "[\"15309501557\",\"17701056405\"]",
  103. // "signNameJson" => "[\"智慧矿山\", \"智慧矿山\"]",
  104. // "templateCode" => "SMS_465319645",
  105. // "templateParamJson" => json_encode([["name"=>"张先生","meetdate"=>"2024-04-08", "meetname"=>"周例会", "meetroom"=>"306会议室"], ["name"=>"安全管理部","meetdate"=>"2024-04-08", "meetname"=>"周例会", "meetroom"=>"306会议室"]])
  106. // ]);
  107. // $runtime = new RuntimeOptions([]);
  108. // try {
  109. // // 复制代码运行请自行打印 API 的返回值
  110. // $res = $client->sendBatchSmsWithOptions($sendBatchSmsRequest, $runtime);
  111. // if ($res->body->code != 'OK') {
  112. // m("log")->addlog("短信报错", $res->body->message);
  113. // } else {
  114. // m("log")->addlog("短信发送", $res->body->message);
  115. // }
  116. // }
  117. // catch (Exception $error) {
  118. // m("log")->addlog("短信报错", "错误信息:".$error->message);
  119. // }
  120. // }
  121. }