You need to enable JavaScript to run this app.
导航

调用方法

最近更新时间2024.03.05 16:24:42

首次发布时间2024.01.29 14:41:46

调用方式

短信服务API可通过SDK调用或签名方法调用。

  • 短信服务已经为开发者封装了多语言的SDK,推荐开发者下载SDK调用短信服务,详见SDK参考
  • 签名方法调用短信服务的API首先经过“火山引擎TOP网关”,请求细节需要按照火山引擎TOP网关要求的格式进行构建,详见火山引擎API调用指南。同时下文提供了短信服务的请求参数和API调用示例。

请求参数

下表列出部分公共参数短信服务的取值。更多信息请见公共参数

名称
类型
是否必填
示例值
描述
AccessKey
String

AKLTNzEzY2****

发送请求的火山引擎账号的 Access Key ID。您可以登录密钥管理页面获取。

SecretKey
String

RGTLuSHvnYxn****

发送请求的火山引擎账号的 Secret Access Key。您可以登录密钥管理页面获取。

ServiceName
String

volcSMS

服务名称。短信服务的服务名称为volcSMS

Region
String

cn-north-1

区域名称。短信服务的区域名称为cn-north-1

Content-Type
String

application/json;charset=utf-8

指定请求消息体的结构化格式。短信服务的 Content-Type 为application/json;charset=utf-8

示例代码

SendSms为例,下文将展示如何修改火山提供的demo代码来调用短信服务的API。

Python Demo

火山 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)

Golang Demo

火山 Golang OpenAPI 代码位置

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 Demo

火山 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 Demo

火山 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",
    },
  });