阿里云物联网卡发送下行短信与上行短信消息接收

   日期:2020-09-12     浏览:103    评论:0    
核心提示:阿里云物联网卡发送下行短信与上行短信消息接收前言:阿里云短信服务分为两种:1.普通通讯sim卡,2.物联网卡。本文演示接口demo均为阿里云物联网卡(java)。1.发送下行短信,阿里云有公开的下行短信API(DoSendIotSms)直接搜索接口名称(DoSendIotSms),所需参数与返回示例都有写明。2.接收上行短信消息下载官方消息demo:项目名:alicom-mns-receive-samples将项目lib中的jar包引入到项目,与src平级jar包在引入时可能会与原项目有冲突

阿里云物联网卡发送下行短信与上行短信消息接收

前言:阿里云短信服务分为两种:1.普通通讯sim卡,2.物联网卡。
本文演示接口demo均为阿里云物联网卡(java)。
1.发送下行短信,阿里云有公开的下行短信API(DoSendIotSms)
直接搜索接口名称(DoSendIotSms),所需参数与返回示例都有写明。
2.接收上行短信消息
下载官方消息demo:项目名:alicom-mns-receive-samples
将项目lib中的jar包引入到项目,与src平级

jar包在引入时可能会与原项目有冲突,删除低版本jar包即可


随后加入接收消息demo

package com.alicom.mns.sample;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


import com.alicom.mns.tools.DefaultAlicomMessagePuller;
import com.alicom.mns.tools.MessageListener;
import com.aliyun.mns.model.Message;
import com.google.gson.Gson;


public class ReceiveDemo { 
	private static Log logger=LogFactory.getLog(ReceiveDemo.class);
	static class MyMessageListener implements MessageListener{ 
		private Gson gson=new Gson();
		@Override
		public boolean dealMessage(Message message) { 

			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			//消息的几个关键值
			System.out.println("message receiver time from mns:" + format.format(new Date()));
			System.out.println("message handle: " + message.getReceiptHandle());
            System.out.println("message body: " + message.getMessageBodyAsString());
            System.out.println("message id: " + message.getMessageId());
            System.out.println("message dequeue count:" + message.getDequeueCount());
            System.out.println("Thread:" + Thread.currentThread().getName());
            try{ 
            	Map<String,Object> contentMap=gson.fromJson(message.getMessageBodyAsString(), HashMap.class);
				//TODO 根据文档中具体的消息格式进行消息体的解析
                String arg = (String) contentMap.get("arg");
                //TODO 这里开始编写您的业务代码
            }catch(com.google.gson.JsonSyntaxException e){ 
       	logger.error("error_json_format:"+message.getMessageBodyAsString(),e);
				//理论上不会出现格式错误的情况,所以遇见格式错误的消息,只能先delete,否则重新推送也会一直报错
				return true;
            } catch (Throwable e) { 
				//您自己的代码部分导致的异常,应该return false,这样消息不会被delete掉,而会根据策略进行重推
				return false;
			}
			//消息处理成功,返回true, SDK将调用MNS的delete方法将消息从队列中删除掉
			return true;
		}
	}

	public static void main(String[] args) throws Exception, ParseException { 

		DefaultAlicomMessagePuller puller=new DefaultAlicomMessagePuller();

		//设置异步线程池大小及任务队列的大小,还有无数据线程休眠时间
		puller.setConsumeMinThreadSize(6);
		puller.setConsumeMaxThreadSize(16);
		puller.setThreadQueueSize(200);
		puller.setPullMsgThreadSize(1);
		//和服务端联调问题时开启,平时无需开启,消耗性能
		puller.openDebugLog(false);

		//TODO 此处需要替换成开发者自己的AK信息
		String accessKeyId="accessKeyId";
		String accessKeySecret="accessKeySecret";

		
		String messageType="messageType";//此处应该替换成相应产品的消息类型
		String queueName="queueName";//在云通信页面开通相应业务消息后,就能在页面上获得对应的queueName,格式类似Alicom-Queue-xxxxxx-SmsReport
		puller.startReceiveMsg(accessKeyId,accessKeySecret, messageType, queueName, new MyMessageListener());
    }
}

修改四个属性值:
(1.)accessKeyId
(2.)accessKeySecret(AK值)
(3.)messageType:
1.短信回执-SmsReport
2.短信上行:SmsUp
3.音呼叫:VoiceReport
4.流量直冲:FlowReport
(4.)queueName:在云通信页面开通相应业务消息后,就能在页面上获得对应的queueName,格式类似Alicom-Queue-xxxxxx-SmsReport

运行这个类:测试:

1.先发送短信

2.回复短信

3.可以看见控制台打印相关信息

4.类运行之后,会一直接收上行短信,无需重复运行

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服