松岗网站制作公司创络近期在帮一位客户开发网站时,遇到这样一个需求,就是当网站调用阿里云接口发送短信后,需要获取用户接收短信状态的回执。这样就可以很好的知道有哪些用户没有接收到短信,然后有针对性的进行人工联系,保障用户权益。当然,这里有一个前提,就是网站已经能够成功的向用户发送短信了。
简述前序:注册阿里云账户并进行企业实名认证,购买短信套餐包,创建短信专用的RAM账户并分配权限,下载SDK包,解压后把SDK部署到网站项目中去。登陆RAM账户去创建短信签名模板和短信模板并提交审核。根据我们的实际经验,模板审核还是很快的,一般工作时间段内,2小时内会审核下来。然后根据实际程序需要,进行短信发送功能的定制开发。我们在前面的文章中也介绍了相关开发,比如说如何实现批量发送短信。由于跟踪用户接收短信的状态是客户后面才提出的要求,因此我们需要对前面的程序进行升级改造。
第一步:把短信发送记录保存到数据库中。为了跟踪每一条短信的状态,所以我们需要将短信分条保存到数据库中,即便是批量发送的时候也要将所有的短信拆分出来。数据库中至少需要保存手机号码、短信发送流水号和默认的短信状态(如:待核实)。如果还有其他方面的需要还可以进一步保存短信编码(来自阿里云)、信息摘要(或者拼接成完整的短信内容)和发送时间等。短信发送的时候,流水号是可选的,但是当我们需要跟踪短信状态的时候,就要当作必填资料来处理了。我们是每一次发送短信(批量或者单条发送都算)都采用独立的流水号,另外再补充下,发送短信前要注意手机号码校验和去重。这样在获取短信回执的时候,就可以根据流水号和手机号码对应更新其状态了。
第二步:在短信控制台中开启云通信消息接收的状态报告接收,分别开启MNS消息队列消费模式和HTTP批量推送模式。并填写对应的回执通知URL,这里的URL是我们自己开发的一个文件,专门用来接收阿里云推送(带参请求)回来的通知数据。请见下图:
第三步:处理通知数据。到这一步就相对比较容易了,在我们自己开发的通知处理文件中,引入SDK,填写好第二步中生成的queueName,然后就可以在发送短信成功后,在这个文件中获取到阿里云返回回来的数据了。数据中包含了短信发送状态、状态码、状态信息、手机号、流水号等有用的数据,我们只需要从中取出我们自己需要的数据,然后去和数据库中的短信发送记录比对和更新即可。
通过对阿里云短信接口的开发集成和使用,我们发现开发难度还是有的,首次开发也可能会遇到一些坑,但是开发完成后的整体使用效果非常不错,推荐大家研究学习下。