Sending Text Messages with Alibaba Cloud SMS

By Kenny Lai, Solutions Architect

Alibaba Cloud Short Message Service (SMS) is a messaging service that covers the globe, providing convenient, efficient, and intelligent communication capabilities that help businesses quickly contact their customers. You can call API operations to send verification codes, notifications, and marketing messages. SMS delivered 600 million messages to 200 million users during the Alibaba 11/11 Global Shopping Festival.

Prerequisites

  1. An enterprise Alibaba Cloud account
  2. A RAM account with AliyunDysmFullAccess policy attached
  3. A mobile phone number which can receive SMS
  4. Some programming skill (java in this example)

Steps

Check if your Alibaba Cloud account is an enterprise account. If you have previously registered for an individual account, you can file a work order to request for an upgrade.

Image for post
Image for post

Locate SMS console on the Alibaba Cloud console.

From the SMS console overview page, navigate to Go Globe.

Image for post
Image for post

Click New Content

Content Type : OTP

Subject : SMS OTP

SMS Content: Your Verification Code: ${code}, will expire 5 minutes later.

Click Submit and a new entry will appear.

Image for post
Image for post

Record the Content Code as it will be reference in the program later.

Use the sample code below

Remember to update the variables as follows:

  • accessKeyId: RAM account's access key
  • accessKeySecret: RAM account's Secret
  • tel: Telephone number you would send the SMS to

Sample Code

package com.alicom.dysms.api;import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20180501.QuerySendDetailsRequest;
import com.aliyuncs.dysmsapi.model.v20180501.QuerySendDetailsResponse;
import com.aliyuncs.dysmsapi.model.v20180501.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20180501.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
/**
* Created on 2018.05.01
*
* The is a DEMO that introduces how to use SMS send Api and SMS query Api.
* Two jar packages are required,please put them in the libs directory
* 1:aliyun-java-sdk-core.jar
* 2:aliyun-java-sdk-dysmsapi-inter.jar
*
* notice : The Program was encoded with standard of UTF-8
*
*/
public class SmsDemo {
// product name, please remain unchanged
static final String product = "Dysmsapi";
// product domain, please remain unchanged
static final String domain = "dysmsapi.ap-southeast-1.aliyuncs.com";
// AccessKey and AccessKeySecret , you can login sms console and find it in API Management
static final String accessKeyId = "use your Key id";
static final String accessKeySecret = "use your Key Secret";
static final String tel = "yourphonenumber with IDD prefix";
public static SendSmsResponse sendSms() throws ClientException {
try {
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
IClientProfile profile = DefaultProfile.getProfile("ap-southeast-1", accessKeyId, accessKeySecret);
DefaultProfile.addEndpoint("ap-southeast-1", "ap-southeast-1", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
// initiate the SendSmsRequest, read help documents for more parameters instructions
SendSmsRequest request = new SendSmsRequest();
// send to
request.setPhoneNumbers(tel);
// ContentCode , you can login sms console and find it in Content Management
request.setContentCode("SMS_10350063"); // this should match the content code shows in sms console
// set the value for parameters in sms Content with JSON format. For example, the content is "Your Verification Code : ${code}, will be expired 5 minutes later"
request.setContentParam("{\"code\":\"1234\"}");
// Optional,custom field, this value will be returned in the sms delivery report.
request.setExternalId("E0012033");
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); return sendSmsResponse;
} catch (Exception e) {
System.out.println(e);
return null;
}
}
public static void main(String[] args) throws ClientException, InterruptedException { // send sms
SendSmsResponse response = sendSms();
System.out.println("send sms response----------------");
System.out.println("Code=" + response.getResultCode());
System.out.println("Message=" + response.getResultMessage());
System.out.println("RequestId=" + response.getRequestId());
System.out.println("BizId=" + response.getBizId());
Thread.sleep(3000L);
//done

}
}

Corresponding maven pom file

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.alicom.dysms</groupId>
<artifactId>alicom-dysms-api</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>com.aliyun.dysms</groupId>
<artifactId>alicom-dysms-api</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/aliyun-java-sdk-dysmsapi-inter-1.0.0.jar</systemPath>
</dependency>
</dependencies>
</project>

And the dysms jar package can be downloaded from link https://www.alibabacloud.com/help/doc-detail/73676.htm

You should receive an SMS as shown in the image below.

Image for post
Image for post

From the console, you can check the SMS delivery info.

Image for post
Image for post

The SMS console also supports checking the delivery status (you can also get the info using API).

Image for post
Image for post

That’s it. Enjoy using Alibaba Cloud Short Message Service (SMS) to global.

Reference:https://www.alibabacloud.com/blog/sending-text-messages-with-alibaba-cloud-sms_594453?spm=a2c41.12560159.0.0

Written by

Follow me to keep abreast with the latest technology news, industry insights, and developer trends.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store