张延森 3 лет назад
Сommit
27ba833c90
8 измененных файлов: 311 добавлений и 0 удалений
  1. 6
    0
      .gitignore
  2. 24
    0
      README.md
  3. 24
    0
      go.mod
  4. 97
    0
      go.sum
  5. 48
    0
      help.html
  6. 43
    0
      main.go
  7. 45
    0
      sms.go
  8. 24
    0
      template.yml

+ 6
- 0
.gitignore Просмотреть файл

@@ -0,0 +1,6 @@
1
+.env
2
+.fun
3
+
4
+bootstrap
5
+
6
+*.zip

+ 24
- 0
README.md Просмотреть файл

@@ -0,0 +1,24 @@
1
+# 短信发送
2
+
3
+### 接口
4
+* /sms 发送短信
5
+* /help 使用说明
6
+
7
+### 打包
8
+一定要 CMD 执行, 不要 powershell
9
+```bash
10
+set CGO_ENABLED=0
11
+set GOOS=linux
12
+set GOARCH=amd64
13
+go build -o bootstrap
14
+```
15
+
16
+### 部署
17
+使用 linux
18
+```bash
19
+zip bootstrap.zip bootstrap help.html
20
+```
21
+使用 windows
22
+```cmd
23
+fun deploy
24
+```

+ 24
- 0
go.mod Просмотреть файл

@@ -0,0 +1,24 @@
1
+module git.ycjcjy.com/default/go-sms
2
+
3
+go 1.17
4
+
5
+require (
6
+	github.com/alibabacloud-go/darabonba-openapi v0.1.14
7
+	github.com/alibabacloud-go/dysmsapi-20170525/v2 v2.0.8
8
+	github.com/alibabacloud-go/tea v1.1.17
9
+)
10
+
11
+require (
12
+	github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.2 // indirect
13
+	github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68 // indirect
14
+	github.com/alibabacloud-go/endpoint-util v1.1.0 // indirect
15
+	github.com/alibabacloud-go/openapi-util v0.0.10 // indirect
16
+	github.com/alibabacloud-go/tea-utils v1.4.3 // indirect
17
+	github.com/aliyun/credentials-go v1.1.2 // indirect
18
+	github.com/json-iterator/go v1.1.10 // indirect
19
+	github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
20
+	github.com/modern-go/reflect2 v1.0.1 // indirect
21
+	github.com/tjfoc/gmsm v1.3.2 // indirect
22
+	golang.org/x/net v0.0.0-20200506145744-7e3656a0809f // indirect
23
+	gopkg.in/ini.v1 v1.56.0 // indirect
24
+)

+ 97
- 0
go.sum Просмотреть файл

@@ -0,0 +1,97 @@
1
+github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.2 h1:/c6fLTlYKFd44Bx36A/cNuKekFzMqEPRc0QCLOC2Nok=
2
+github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.2/go.mod h1:sCavSAvdzOjul4cEqeVtvlSaSScfNsTQ+46HwlTL1hc=
3
+github.com/alibabacloud-go/darabonba-openapi v0.1.11/go.mod h1:MPJMxv7HYrFm5m9uOZWkDYsAWyZztEgnBRfk9Fg0eIU=
4
+github.com/alibabacloud-go/darabonba-openapi v0.1.14 h1:3bQEoqeO0ZvSor1n5uqkb4TiFNAd8XMFYeGFll75L/c=
5
+github.com/alibabacloud-go/darabonba-openapi v0.1.14/go.mod h1:w4CosR7O/kapCtEEMBm3JsQqWBU/CnZ2o0pHorsTWDI=
6
+github.com/alibabacloud-go/darabonba-string v1.0.0/go.mod h1:93cTfV3vuPhhEwGGpKKqhVW4jLe7tDpo3LUM0i0g6mA=
7
+github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68 h1:NqugFkGxx1TXSh/pBcU00Y6bljgDPaFdh5MUSeJ7e50=
8
+github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68/go.mod h1:6pb/Qy8c+lqua8cFpEy7g39NRRqOWc3rOwAy8m5Y2BY=
9
+github.com/alibabacloud-go/dysmsapi-20170525/v2 v2.0.8 h1:KXMiCg99Jx7B6V+DlRFbWwL9UCGippE5z1wGzhyimiA=
10
+github.com/alibabacloud-go/dysmsapi-20170525/v2 v2.0.8/go.mod h1:8aL6tSyQIWJygF7W/Vqxdf/QDbN2S+u57k36bEA8hD8=
11
+github.com/alibabacloud-go/endpoint-util v1.1.0 h1:r/4D3VSw888XGaeNpP994zDUaxdgTSHBbVfZlzf6b5Q=
12
+github.com/alibabacloud-go/endpoint-util v1.1.0/go.mod h1:O5FuCALmCKs2Ff7JFJMudHs0I5EBgecXXxZRyswlEjE=
13
+github.com/alibabacloud-go/openapi-util v0.0.9/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws=
14
+github.com/alibabacloud-go/openapi-util v0.0.10 h1:wzTQc6ZSHhCI1FybUITHE26451zLgQAmYdTaMOUmoqE=
15
+github.com/alibabacloud-go/openapi-util v0.0.10/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws=
16
+github.com/alibabacloud-go/tea v1.1.0/go.mod h1:IkGyUSX4Ba1V+k4pCtJUc6jDpZLFph9QMy2VUPTwukg=
17
+github.com/alibabacloud-go/tea v1.1.7/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4=
18
+github.com/alibabacloud-go/tea v1.1.8/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4=
19
+github.com/alibabacloud-go/tea v1.1.11/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4=
20
+github.com/alibabacloud-go/tea v1.1.15/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A=
21
+github.com/alibabacloud-go/tea v1.1.17 h1:05R5DnaJXe9sCNIe8KUgWHC/z6w/VZIwczgUwzRnul8=
22
+github.com/alibabacloud-go/tea v1.1.17/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A=
23
+github.com/alibabacloud-go/tea-utils v1.3.1/go.mod h1:EI/o33aBfj3hETm4RLiAxF/ThQdSngxrpF8rKUDJjPE=
24
+github.com/alibabacloud-go/tea-utils v1.3.9/go.mod h1:EI/o33aBfj3hETm4RLiAxF/ThQdSngxrpF8rKUDJjPE=
25
+github.com/alibabacloud-go/tea-utils v1.4.3 h1:8SzwmmRrOnQ09Hf5a9GyfJc0d7Sjv6fmsZoF4UDbFjo=
26
+github.com/alibabacloud-go/tea-utils v1.4.3/go.mod h1:KNcT0oXlZZxOXINnZBs6YvgOd5aYp9U67G+E3R8fcQw=
27
+github.com/aliyun/credentials-go v1.1.2 h1:qU1vwGIBb3UJ8BwunHDRFtAhS6jnQLnde/yk0+Ih2GY=
28
+github.com/aliyun/credentials-go v1.1.2/go.mod h1:ozcZaMR5kLM7pwtCMEpVmQ242suV6qTJya2bDq4X1Tw=
29
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
30
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
31
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
32
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
33
+github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
34
+github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0=
35
+github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
36
+github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
37
+github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
38
+github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
39
+github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
40
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
41
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
42
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
43
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
44
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
45
+github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
46
+github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
47
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
48
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
49
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
50
+github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
51
+github.com/smartystreets/assertions v1.1.0 h1:MkTeG1DMwsrdH7QtLXy5W+fUxWq+vmb6cLmyJ7aRtF0=
52
+github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
53
+github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
54
+github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
55
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
56
+github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
57
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
58
+github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
59
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
60
+github.com/tjfoc/gmsm v1.3.2 h1:7JVkAn5bvUJ7HtU08iW6UiD+UTmJTIToHCfeFzkcCxM=
61
+github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w=
62
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
63
+github.com/yuin/goldmark v1.1.30/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
64
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
65
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
66
+golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
67
+golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
68
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
69
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
70
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
71
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
72
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
73
+golang.org/x/net v0.0.0-20200506145744-7e3656a0809f h1:QBjCr1Fz5kw158VqdE9JfI9cJnl/ymnJWAdMuinqL7Y=
74
+golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
75
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
76
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
77
+golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
78
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
79
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
80
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
81
+golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
82
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
83
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
84
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
85
+golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
86
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
87
+golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
88
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
89
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
90
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
91
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
92
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
93
+gopkg.in/ini.v1 v1.56.0 h1:DPMeDvGTM54DXbPkVIZsp19fp/I2K7zwA/itHYHKo8Y=
94
+gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
95
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
96
+gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
97
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

+ 48
- 0
help.html Просмотреть файл

@@ -0,0 +1,48 @@
1
+<!DOCTYPE html>
2
+<html lang="en">
3
+<head>
4
+  <meta charset="UTF-8">
5
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+  <title>Document</title>
8
+</head>
9
+<body>
10
+  <h2>接口说明</h2>
11
+  <h3>/sms</h3>
12
+  <p>
13
+    Body 说明: (格式 json)
14
+  </p>
15
+  <table cellpadding="10" cellspacing="10">
16
+    <tr>
17
+      <th>参数</th>
18
+      <th>类型</th>
19
+      <th>说明</th>
20
+    </tr>
21
+    <tr>
22
+      <td>PhoneNumbers</td>
23
+      <td>string</td>
24
+      <td>接收人手机号码, 多个号码用半角逗号连接</td>
25
+    </tr>
26
+    <tr>
27
+      <td>SignName</td>
28
+      <td>string</td>
29
+      <td>短信签名</td>
30
+    </tr>
31
+    <tr>
32
+      <td>TemplateCode</td>
33
+      <td>string</td>
34
+      <td>模板ID</td>
35
+    </tr>
36
+    <tr>
37
+      <td>TemplateParam</td>
38
+      <td>string</td>
39
+      <td>模板参数: 示例 "{\"code\":\"1234\"}" </td>
40
+    </tr>
41
+    <tr>
42
+      <td>其余参数</td>
43
+      <td></td>
44
+      <td>请参考 https://next.api.aliyun.com/document/Dysmsapi/2017-05-25/SendSms</td>
45
+    </tr>
46
+  </table>
47
+</body>
48
+</html>

+ 43
- 0
main.go Просмотреть файл

@@ -0,0 +1,43 @@
1
+package main
2
+
3
+import (
4
+	"fmt"
5
+	"io"
6
+	"io/ioutil"
7
+	"log"
8
+	"net/http"
9
+)
10
+
11
+const _accessKeyId string = "LTAI5tGjnZY6k799BHxhmqcm"
12
+const _accessKeySecret string = "eU1DmULbgHe2dnIg3P93634PO2vEh5"
13
+const _addr string = ":8081"
14
+
15
+func smsHandler(w http.ResponseWriter, r *http.Request) {
16
+	defer r.Body.Close()
17
+	body, err := io.ReadAll(r.Body)
18
+	if err != nil {
19
+		http.Error(w, err.Error()+"\n访问 /help 查看使用帮助", http.StatusInternalServerError)
20
+	}
21
+
22
+	if err := SendSMS(&body); err != nil {
23
+		http.Error(w, err.Error()+"\n访问 /help 查看使用帮助", http.StatusInternalServerError)
24
+	}
25
+
26
+	fmt.Fprintf(w, "success")
27
+}
28
+
29
+func helpHandler(w http.ResponseWriter, r *http.Request) {
30
+	content, err := ioutil.ReadFile("./help.html")
31
+	if err != nil {
32
+		http.Error(w, err.Error(), http.StatusInternalServerError)
33
+	}
34
+
35
+	w.Header().Set("Content-Type", "text/html; charset=utf-8")
36
+	w.Write(content)
37
+}
38
+
39
+func main() {
40
+	http.HandleFunc("/sms", smsHandler)
41
+	http.HandleFunc("/help", helpHandler)
42
+	log.Fatal(http.ListenAndServe(_addr, nil))
43
+}

+ 45
- 0
sms.go Просмотреть файл

@@ -0,0 +1,45 @@
1
+package main
2
+
3
+import (
4
+	"encoding/json"
5
+
6
+	openapi "github.com/alibabacloud-go/darabonba-openapi/client"
7
+	dysmsapi20170525 "github.com/alibabacloud-go/dysmsapi-20170525/v2/client"
8
+	"github.com/alibabacloud-go/tea/tea"
9
+)
10
+
11
+var client *dysmsapi20170525.Client
12
+
13
+func CreateClient(accessKeyId string, accessKeySecret string) (_result *dysmsapi20170525.Client, _err error) {
14
+	config := &openapi.Config{
15
+		// 您的AccessKey ID
16
+		AccessKeyId: tea.String(accessKeyId),
17
+		// 您的AccessKey Secret
18
+		AccessKeySecret: tea.String(accessKeySecret),
19
+	}
20
+	// 访问的域名
21
+	config.Endpoint = tea.String("dysmsapi.aliyuncs.com")
22
+	_result, _err = dysmsapi20170525.NewClient(config)
23
+	return _result, _err
24
+}
25
+
26
+func SendSMS(data *[]byte) error {
27
+	if nil == client {
28
+		if cli, err := CreateClient(_accessKeyId, _accessKeySecret); err != nil {
29
+			return err
30
+		} else {
31
+			client = cli
32
+		}
33
+	}
34
+
35
+	sendSmsRequest := &dysmsapi20170525.SendSmsRequest{}
36
+	if err := json.Unmarshal(*data, sendSmsRequest); err != nil {
37
+		return err
38
+	}
39
+
40
+	if _, err := client.SendSms(sendSmsRequest); err != nil {
41
+		return err
42
+	}
43
+
44
+	return nil
45
+}

+ 24
- 0
template.yml Просмотреть файл

@@ -0,0 +1,24 @@
1
+ROSTemplateFormatVersion: '2015-09-01'
2
+Transform: 'Aliyun::Serverless-2018-04-03'
3
+Resources:
4
+  sms-plat:
5
+    Type: 'Aliyun::Serverless::Service'
6
+    Properties:
7
+      InternetAccess: true
8
+      Description: '短信平台'
9
+    go-sms:
10
+      Type: 'Aliyun::Serverless::Function'
11
+      Properties:
12
+        Handler: main
13
+        Runtime: custom
14
+        CodeUri: './bootstrap.zip'
15
+        MemorySize: 1024
16
+        Timeout: 30
17
+        InitializationTimeout: 30
18
+        CAPort: 8081
19
+      Events:
20
+        http-go-sms:
21
+          Type: HTTP
22
+          Properties:
23
+            AuthType: ANONYMOUS
24
+            Methods: [ 'GET', 'POST', 'PUT', 'DELETE' ]