短信场景介绍

阿里百川消息服务有发送验证码短信和普通短信两个业务场景。使用前请确认已经开通 阿里百川消息:http://baichuan.taobao.com/portal/doc?articleId=546#ss0 。

场景 场景介绍 使用API说明
验证码短信

 通过taobao.open.sms.sendvercode发送验证码接口,可以发自定义验证码和系统自定生成验证码,详见下面验证码介绍。发送验证码可以设置验证码失效时间,发送时间限制等。客户端回传验证码后可以通过taobao.open.sms.checkvercode;验证短信验证码。

通过消息服务订阅taobao_bmc_ShortMessageStatu消息,可以获取短信的发送状态。只发失败的消息。

taobao.open.sms.sendvercode 【点开链接查看API文档】发送短信验证码

taobao.open.sms.checkvercode 【点开链接查看API文档】 验证短信验证码

 

系统通知短信

通过taobao.open.sms.sendmsg 发送短信。可以定时发送通过入参delay_time 指定延时发送时间。

通过taobao.open.sms.batchsendmsg批量发送短信接口。批量发送短信 如果delaymsg一次200个 如果非delay的一次30个 

通过taobao.open.sms.rmdelaymsg 删除延迟消息 定时发送的短信未发送之前可以通过该接口删除 取消发送。delayTaskId这个参数如果用户传了externalId会用externalId作为delayTaskId 也就是如果之前传了externalId 那么删除的时候只要继续传externalId就好了 否则使用sendmsg返回的taskid

通过消息服务订阅taobao_bmc_ShortMessageStatus消息,可以获取短信的发送状态。

taobao.open.sms.sendmsg  【点开链接查看API文档】发送短信 

taobao.open.sms.batchsendmsg

【点开链接查看API文档】批量发送

taobao.open.sms.rmdelaymsg【点开链接查看API文档】 删除延迟消息

注意:开发者需要传自定义验证码可以通过sendvercode接口,自定义的验证码通过参数传递,且可以通过checkvercode验证验证码。也可以通过sendmsg发送,对于平台来说只相当于一条普通通知短信,所以只能自己验证验证码。

 

下载服务端SDK 

百川应用控制台->SDK下载->服务端SDK->Java等版本(如图)【前提已经开通阿里百川消息权限 并签署收费协议

新开通权限需要重新生成SDK,再下载。

java SDK 依赖一个Apache的commons-logging包,下载地址: commons-logging 。 

API调用说明

根据场景介绍,实现相关API的调用。API 请求地址:http://gw.api.taobao.com/router/rest

将上一步下载的SDK集成到项目工程中。 SDK已经集成了接口签名方法,只需要引入对应于的类文件,就可以直接调用接口了。

可以直接参考各个API文档中的SDK调用示例或者参考API测试工具。API测试工具是以json传入参数的,请求示例是以对象传入的。

 

发验证码代码示例

若验证码由系统自动生成,code不用传值。若是自己生成验证码,code传值,发送验证码为code自定义值。测试阶段建议打印完整的返回内容,便于排查。System.out.println(response.getBody());

以下面应用签名和模板为例[开发者自己测试的时候注意选择自己的签名id和模板id]

发验证码Java示例代码

import com.taobao.api.ApiException;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.request.OpenSmsSendvercodeRequest;
import com.taobao.api.request.OpenSmsSendvercodeRequest.SendVerCodeRequest;
import com.taobao.api.response.OpenSmsSendvercodeResponse;
public class BCDXTest {
        private static String appkey="612465**";
        private static String secret="1hfhfhfjfjff822010abfac****";
    private static String url="http://gw.api.taobao.com/router/rest";//api请求地址
        public static void main(String[] args) throws ApiException {
              TaobaoClient client=new DefaultTaobaoClient(url, appkey, secret);
          OpenSmsSendvercodeRequest req=new OpenSmsSendvercodeRequest();
    	//json
    	//req.setSendVerCodeRequest("{\"external_id\":\"wb121212\",\"template_id\":\"1131\",\"signature_id\":\"86\",\"mobile\":\"13501**522\",\"expire_time\":\"60\",\"ver_code_length\":\"6\",\"context\":{\"minute\":\"5\"}}");
    	//对象
    	SendVerCodeRequest sendVerCodeRequest = new SendVerCodeRequest();
    	//sendVerCodeRequest.setExpireTime(60L); //非必填参数可以直接注释掉
    	sendVerCodeRequest.setExternalId("wb121212");//自定义id,用于开发者关联自己的数据,非必填参数
    	sendVerCodeRequest.setTemplateId(1131L);// 填写自己的模板id
    	sendVerCodeRequest.setSignatureId(86L);//填写自己的签名id,注意于应用对应
    	sendVerCodeRequest.setMobile("13501**522");//填写真实的手机号
        sendVerCodeRequest.setContextString("{\"minute\":\"5\"}");//模板中的参数赋值
        sendVerCodeRequest.setVerCodeLength(6L);//指定验证码的长度
    	req.setSendVerCodeRequest(sendVerCodeRequest);
    	OpenSmsSendvercodeResponse response = client.execute(req);
    	System.out.println(response.getBody());//测试阶段建议打印完整的返回内容,便于排查
    	 if (response.isSuccess()) {//api请求成功
             response.getResult().getMessage();
             response.getResult().getSuccessful();//短信发送成功
      } else {
           response.getResult().getMessage();
             response.getResult().getSuccessful();
      }
}

发验证码php示例代码

$c = new TopClient;
$c->appkey = 612465**;
$c->secretKey =1hfhfhfjfjff822010abfac****;
//请求的url SDK已经封装
$req = new OpenSmsSendvercodeRequest;
//$req->setSendVerCodeRequest("{\"external_id\":\"wb121212\",\"template_id\":\"1131\",\"signature_id\":\"86\",\"mobile\":\"13501**522\",\"expire_time\":\"60\",\"ver_code_length\":\"6\",\"context\":{"minute":"5"}}");
$send_ver_code_request = new SendVerCodeRequest;
$send_ver_code_request->expire_time="60";
$send_ver_code_request->external_id="wb121212";
$send_ver_code_request->template_id="1131";
$send_ver_code_request->signature_id="86";
$send_ver_code_request->mobile="13501**522";
$send_ver_code_request->ver_code_length="6";
$send_message_request->context=json_decode("{\"minute\":\"5\"}");
$req->setSendVerCodeRequest(json_encode($send_ver_code_request));
$resp = $c->execute($req);

验证验证码代码示例

验证验证码的入参要注意 发验证码的入参 若传了domain参数,验证时的入参也要传。

验证验证码java示例代码

import com.taobao.api.ApiException;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.request.OpenSmsCheckvercodeRequest;
import com.taobao.api.domain.CheckVerCodeRequest;
import com.taobao.api.response.OpenSmsCheckvercodeResponse;
public class BCDXTest {
        private static String appkey="612465**";
        private static String secret="1hfhfhfjfjff822010abfac****";
        private static String url="http://gw.api.taobao.com/router/rest";
        public static void main(String[] args) throws ApiException {
        TaobaoClient client=new DefaultTaobaoClient(url, appkey, secret);
           OpenSmsCheckvercodeRequest req=new OpenSmsCheckvercodeRequest();
    	
    //	req.setCheckVerCodeRequest("{\"ver_code\":\"233769\",\"mobile\":\"13501**1522\"}");
    	//对象
   	CheckVerCodeRequest checkVerCodeRequest = new CheckVerCodeRequest();
       //验证验证码的入参要注意 发验证码的入参 若传了domain参数,验证时的入参也要传。
   	checkVerCodeRequest.setVerCode("233769");
   	checkVerCodeRequest.setMobile("1350**1522");
    	req.setCheckVerCodeRequest(checkVerCodeRequest);
    	
    	OpenSmsCheckvercodeResponse response = client.execute(req);
    	System.out.println(response.getBody());
    	 if (response.isSuccess()) {
            response.getResult().getMessage();
             response.getResult().getSuccessful();
      } else {
           response.getResult().getMessage();
             response.getResult().getSuccessful();
      }
    }
}

验证验证码php示例代码

$c = new TopClient;
$c->appkey = 612465**;
$c->secretKey = 1hfhfhfjfjff822010abfac****;
$req = new OpenSmsCheckvercodeRequest;
//$req->setCheckVerCodeRequest("{\"ver_code\":\"233769\",\"mobile\":\"13501**1522\"}");

$check_ver_code_request = new CheckVerCodeRequest;
$check_ver_code_request->ver_code="233769";
$check_ver_code_request->mobile="13501**1522";
$req->setCheckVerCodeRequest(json_encode($check_ver_code_request));
$resp = $c->execute($req);

发通知短信代码示例

以下面应用签名和模板为例[开发者自己测试的时候注意选择自己的签名id和模板id]

发系统短信java示例代码

import com.taobao.api.ApiException;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.request.OpenSmsSendmsgRequest;
import com.taobao.api.request.OpenSmsSendmsgRequest.SendMessageRequest;
import com.taobao.api.response.OpenSmsSendmsgResponse;
public class BCDXTest {
        private static String appkey="612465**";
        private static String secret="1hfhfhfjfjff822010abfac****";
        private static String url="http://gw.api.taobao.com/router/rest";
        public static void main(String[] args) throws ApiException {
               TaobaoClient client=new DefaultTaobaoClient(url, appkey, secret);
 OpenSmsSendmsgRequest req=new OpenSmsSendmsgRequest();
            //直接json    
      //    req.setSendMessageRequest("{\"external_id\":\"wb121212\",\"template_id\":\"1341\"," +
         		"\"signature_id\":\"86\",\"mobile\":\"1350**1522\",\"context\":{\"name\":\"小强\"," +
         		"\"content\":\"学习使用阿里百川消息服务\",\"appName\":\"[任务管理系统]\",\"from\":\"蛋蛋\"}}");
         
         //对象
 		  SendMessageRequest sendMessageRequest = new SendMessageRequest();
		  sendMessageRequest.setTemplateId(1341);//模板ID
 		  sendMessageRequest.setSignatureId(86L);//签名id
 		  sendMessageRequest.setContextString("{\"name\":\"小强\",\"content\":\"学习使用阿里百川消息服务\",\"appName\":\"[任务管理系统] \",\"from\":\"蛋蛋\"}"); //模板中的变量通过Context传递
                 sendMessageRequest.setExternalId("wb121212");//自定义id,用于开发者关联自己的数据,非必填参数
                 sendMessageRequest.setMobile("135**1522"); 
                 req.setSendMessageRequest(sendMessageRequest); 
           OpenSmsSendmsgResponse response = client.execute(req);  
         System.out.println(response.getBody());
 if (response.isSuccess()) {
           response.getResult().getMessage();
             response.getResult().getSuccessful();
        } else {
         response.getResult().getMessage();
             response.getResult().getSuccessful();
 }

发系统短信php示例代码

$c = new TopClient; 
$c->appkey =612465**
$c->secretKey =1hfhfhfjfjff822010abfac****
//json       
$req = new OpenSmsSendmsgRequest;
$req->setSendMessageRequest("{\"external_id\":\"wb121212\",\"template_id\":\"1341\",\"signature_id\":\"86\",\"mobile\":\"1350**1522\",\"context\":{\"name\":\"小强\",\"content\":\"学习使用阿里百川消息服务\",\"appName\":\"[任务管理系统]\",\"from\":\"蛋蛋\"}}");
$resp = $c->execute($req);
//对象
//$req = new OpenSmsSendmsgRequest;
//$send_message_request = new SendMessageRequest;
//$send_message_request->template_id="1341";
//$send_message_request->signature_id="86";
//$send_message_request->context=json_decode("{\"name\":\"小强\"," "\"content\":\"学习使用阿里百川消息服务\",\"appName\":\"[任务管理系统]\",\"from\":\"蛋蛋\"}");
//$send_message_request->external_id="wb121212";
//$send_message_request->mobile="1350**1522";
 
//$req->setSendMessageRequest(json_encode($send_message_request));
//$resp = $c->execute($req);
 

发系统短信.net示例代码

using Top;
using Top.Api;
using Top.Api.Request;
using Top.Api.Response;
using Top.Api.Util;

ITopClient client = new DefaultTopClient("http://gw.api.taobao.com/router/rest", "123123", "123123123123");
OpenSmsSendmsgRequest req = new OpenSmsSendmsgRequest();
//json
req.SendMessageRequest = "{\"external_id\":\"wb121212\",\"template_id\":\"1341\",\"signature_id\":\"86\",\"mobile\":\"1350**1522\",\"context\":{\"name\":\"小强\",\"content\":\"学习使用阿里百川消息服务\",\"appName\":\"[任务管理系统]\",\"from\":\"蛋蛋\"}}";
OpenSmsSendmsgResponse rsp = client.Execute(req);
Console.WriteLine(rsp.Body);
//对象
//SendMessageRequest obj117714 = new SendMessageRequest();
//obj117714.TemplateId = 1341;
//obj117714.SignatureId = 86L;
//obj117714.Context_= "{\"name\":\"小强\",\"content\":\"学习使用阿里百川消息服务\",\"appName\":\"[任务管理系统]\",\"from\":\"蛋蛋\"}";
//obj117714.ExternalId = "wb121212";
//obj117714.Mobile = "1350**1522";
//req.SendMessageRequest_ = obj117714;
//OpenSmsSendmsgResponse rsp = client.Execute(req);
//Console.WriteLine(rsp.Body);

批量发送通知短信代码示例

批量发送短信 如果延时发送[delay_time]一次200个 如果非delay的一次30个。

批量发送java示例代码

import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import com.taobao.api.ApiException;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.request.OpenSmsBatchsendmsgRequest;
import com.taobao.api.request.OpenSmsBatchsendmsgRequest.SendMessageRequest;
import com.taobao.api.response.OpenSmsBatchsendmsgResponse;
public class BCXXTst {
	
    private  String appkey="23092**";
    private  String secret="e42c3281b1d8c239ac39d31c*****";
    private static String url="http://gw.api.taobao.com/router/rest";

    @Test		
    public void  OpenSmsBatchsendmsg() throws ApiException {
           TaobaoClient client=new DefaultTaobaoClient(url, appkey, secret);
           OpenSmsBatchsendmsgRequest req = new OpenSmsBatchsendmsgRequest();
          List listSendMessageRequest = new ArrayList();
         
           for(int i=0;i<=3;i++){
                  SendMessageRequest objSendMessageRequest = new SendMessageRequest();
        	   objSendMessageRequest.setMobile("13800001111");
                   objSendMessageRequest.setTemplateId(1620L);                        listSendMessageRequest.add(objSendMessageRequest);     
           }
          req.setParams(listSendMessageRequest);
          OpenSmsBatchsendmsgResponse rsp = client.execute(req);
           System.out.println(rsp.getBody());
if (rsp.isSuccess()) {
	rsp.getResult().getMessage();
	for(int i=0;i<=rsp.getResult().getDatas().size();i++){
		rsp.getResult().getDatas().get(i).getTaskId();
	}
    } 
else {
	rsp.getResult().getCode();
}
	}
}

删除延迟短信代码示例

发通知短信接口taobao.open.sms.sendmsg可以通过delay_time指定发送时间。在未发送之前,可以通过taobao.open.sms.rmdelaymsg 删除延迟消息,删除未发送的短信,取消发送。

删除延迟消息java示例代码:

import com.taobao.api.ApiException;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.request.OpenSmsRmdelaymsgRequest;
import com.taobao.api.domain.RemoveDelayMessageRequest;
import com.taobao.api.response.OpenSmsRmdelaymsgResponse;
public class BCDXTest {
        private static String appkey="612465**";
        private static String secret="1hfhfhfjfjff822010abfac****";
        private static String url="http://gw.api.taobao.com/router/rest";
        public static void main(String[] args) throws ApiException {
               TaobaoClient client=new DefaultTaobaoClient(url, appkey, secret);
               OpenSmsRmdelaymsgRequest req = new OpenSmsRmdelaymsgRequest();
//直接json
    //        req.setParamRemoveDelayMessageRequest("{\"external_id\":\"234576843534233\"}");//或者发送是反回的taskid:{\"delay_task_id\":\"234576843534233\"}}
// 对象
               RemoveDelayMessageRequest obj117830 = new RemoveDelayMessageRequest();
//delayTaskId这个参数如果用户传了externalId会用externalId作为delayTaskId 也就是如果之前传了externalId 那么删除的时候只要继续传externalId就好了 否则使用sendmsg返回的taskid
               obj117830.setDelayTaskId("xxxxx");// 发送短信taobao.open.sms.sendmsg成功,会反回 TaskId。
obj117830.setDomain("register");//发短信时可以指定短信的业务域 如注册 系统通知 次参数可以不填
obj117830.setExternalId("xxxxx");// 发短信时,指定自定义id。如果是唯一的,删除短信也可以通过该字段
req.setParamRemoveDelayMessageRequest(obj117830);
OpenSmsRmdelaymsgResponse rsp = client.execute(req);
System.out.println(rsp.getBody());
         System.out.println(response.getBody());
 if (response.isSuccess()) {
           response.getResult().getMessage();
             response.getResult().getSuccessful();
        } else {
         response.getResult().getMessage();
             response.getResult().getSuccessful();
 }

删除延迟消息PHP示例代码:

$c = new TopClient;
$c->appkey = $appkey;
$c->secretKey = $secret;
$req = new OpenSmsRmdelaymsgRequest;
//直接json
//$req->setParamRemoveDelayMessageRequest("{\"external_id\":\"234576843534233\"}");
// 对象
$param_remove_delay_message_request = new RemoveDelayMessageRequest;
$param_remove_delay_message_request->delay_task_id="xxxxx";
$param_remove_delay_message_request->domain="register";
$param_remove_delay_message_request->external_id="xxxxx";
$req->setParamRemoveDelayMessageRequest(json_encode($param_remove_delay_message_request));
$resp = $c->execute($req);

获取短信发送状态

订阅短信发送状态的消息,可以获取短信发送的状态(接口调用成功,短信从运营商发送到用户手机)。只有发送失败(停机,关机,不在服务区等)的才有消息。

订阅消息

在 开放平台应用管理后台如下页面订阅消息,可以在分类中选择“导购平台”快速筛选消息,点击订阅taobao_bmc_ShortMessageStatus ,

点击消息名称,就能查看具体的返回信息字段。

代码实现接收消息

接收消息,实现方式有两种: 通过SDK接收消息、 通过API接收消息,具体可以参考: 消息通知文档
 

技术咨询

 

旺旺群:1363288918

 

 

FAQ

关于此文档暂时还没有FAQ
返回
顶部