短信服务API可通过SDK调用或签名方法调用。
下表列出部分公共参数短信服务的取值。更多信息请见公共参数。
名称 | 类型 | 是否必填 | 示例值 | 描述 |
---|---|---|---|---|
AccessKey | String | 是 | AKLTNzEzY2**** | 发送请求的火山引擎账号的 Access Key ID。您可以登录密钥管理页面获取。 |
SecretKey | String | 是 | RGTLuSHvnYxn**** | 发送请求的火山引擎账号的 Secret Access Key。您可以登录密钥管理页面获取。 |
ServiceName | String | 是 | volcSMS | 服务名称。短信服务的服务名称为 |
Region | String | 是 | cn-north-1 | 区域名称。短信服务的区域名称为 |
Content-Type | String | 是 | application/json;charset=utf-8 | 指定请求消息体的结构化格式。短信服务的 Content-Type 为 |
以SendSms为例,下文将展示如何修改火山提供的demo代码来调用短信服务的API。
火山 python OpenAPI 代码位置
https://github.com/volcengine/volc-openapi-demos/blob/main/signature/python/sign.py
1. 填写短信服务公共参数
# 以下参数视服务不同而不同,一个服务内通常是一致的 Service = "volcSMS" Version = "2020-01-01" Region = "cn-north-1" Host = "sms.volcengineapi.com" ContentType = "application/json"
2. 填写鉴权凭证AK,SK
# 请求的凭证,从IAM或者STS服务中获取 AK = "AKExample***********" SK = "QwERrtyasdf*********"
3. 按照API入参定义构建请求body并发起请求
API参数详见SendSms
now = datetime.datetime.utcnow() body = { "SmsAccount": "sub_account", "Sign": "hello", "TemplateID": "template_id", "TemplateParam": "{\"content\":\"1234\"}", "PhoneNumbers": "130********", "Tag": "tag", } body = json.dumps(body) # Body的格式需要配合Content-Type,API使用的类型请阅读具体的官方文档,如:json格式需要json.dumps(obj) # response_body = request("GET", now, {"Limit": "2"}, {}, AK, SK, "ListUsers", None) # print(response_body) response_body = request("POST", now, {}, {}, AK, SK, "SendSms", body) print(response_body)
1. 填写短信服务公共参数&填写鉴权凭证AK,SK
const ( // 请求凭证,从访问控制申请 AccessKeyID = "AK****" SecretAccessKey = "****" // 请求地址 Addr = "https://sms.volcengineapi.com" Path = "/" // 路径,不包含 Query // 请求接口信息 Service = "volcSMS" Region = "cn-beijing" Action = "SendSms" Version = "2020-01-01" )
2. 修改请求header为application/json
func doRequest(method string, queries url.Values, body []byte) error { …… request.Header.Set("Content-Type", "application/json") …… }
3. 按照API入参定义构建请求body并发起请求
API参数详见SendSms
func main() { query1 := make(url.Values) req := &sms.SmsRequest{ SmsAccount: "sub_account", Sign: "hello", TemplateID: "template_id", TemplateParam: "{\"content\":\"1234\"}", PhoneNumbers: "130********", Tag: "tag", } reqJ, err := json.Marshal(req) if err != nil { fmt.Println(err) return } doRequest(http.MethodPost, query1, reqJ) }
火山 JAVA OpenAPI 代码位置
https://github.com/volcengine/volc-openapi-demos/blob/main/signature/java/Sign.java
1. 填写短信服务公共参数&填写鉴权凭证AK,SK
String SecretAccessKey = "****"; // 自己的AK String AccessKeyID = "AK****"; // 自己的SK // 请求地址 String endpoint = "sms.volcengineapi.com"; // 改成短信发送的地址 String path = "/"; // 路径,不包含 Query// 请求接口信息 String service = "volcSMS"; // 短信服务 String region = "cn-beijing"; String schema = "https"; String action = "SendSms"; // 请求接口修改 String version = "2020-01-01"; // 请求版本修改
2. 按照API入参定义构建请求body并发起请求
API参数详见SendSms
HashMap<String, String> queryMap = new HashMap(); queryMap.put("SmsAccount", "0952****"); queryMap.put("Sign", "测试"); queryMap.put("TemplateID", "SPT_09a2****"); queryMap.put("TemplateParam", "{\"content\":\"1234\"}"); queryMap.put("PhoneNumbers", "188****2528"); queryMap.put("Tag", "tag"); // 将参数转成json Gson gson = new Gson(); String tmp = gson.toJson(queryMap);
3. 引入gson maven 依赖
引入gson maven 依赖 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> </dependency>
4. 发送请求
sign.doRequest("POST", queryMap, tmp.getBytes(), date, action, version); String xContentSha256 = ""; SortedMap<String, String> realQueryList = new TreeMap<>();
火山 NodeJS OpenAPI代码位置
https://github.com/volcengine/volc-openapi-demos/blob/main/signature/nodejs/sign.js
1. 填写短信服务公共参数&填写鉴权凭证AK,SK
const signParams = { headers: { // x-date header 是必传的 ["X-Date"]: getDateTimeNow(), }, method: 'POST', query: { Version: '2020-01-01', Action: 'SendSms', }, accessKeyId: 'AK*****', secretAccessKey: 'SK********', serviceName: 'volcSMS', region: 'cn-north-1', };
2. 按照API入参定义构建请求body并发起请求
API参数详见SendSms
const res = await fetch(`https://iam.volcengineapi.com/?${qs.stringify(signParams.query)}`, { headers: { ...signParams.headers, 'Authorization': authorization, }, method: signParams.method, });
改为
const res = await fetch(`https://sms.volcengineapi.com/?${qs.stringify(signParams.query)}`, { headers: { ...signParams.headers, 'Authorization': authorization, }, method: signParams.method, data: { SmsAccount: "****", Sign: "xxxx", TemplateID: "SPT_****", PhoneNumbers: "186********", TemplateParam: JSON.stringify({ content: "Hello World" }), Tag: "tag", }, });