集成Twilio发送短信

一、前言

Twilio 是一个专注通讯服务的开放PaaS平台、是一个提供技术能力的网站,也是美国较为知名的云计算通讯服务类的初创企业。

Twilio 通过将复杂的底层通信功能打包成API并对外开放,让web、桌面及移动app可以方便的嵌入短信、语音及VoIP功能,从而实现云通信的功能。

二、Twilio SDK简介

参考链接

名称 链接
git地址 https://github.com/twilio/twilio-java
api文档 [Docs: API Reference, Tutorials, and Integration | Twilio](https://www.twilio.com/docs/api?filter-product=SMS "Docs: API Reference, Tutorials, and Integration
账号注册流程 http://uuxn.com/twilio-toll-free-sms

发送消息,使用Twilio发送需要一个form Phone 和 to Phone,并且这是一个post请求

|----------------------------------------------------|
| /2010-04-01/Accounts/{AccountSid}/Messages |

这个消息的状态如下

  • queued
  • failed
  • sent
  • delivered
  • undelivered

参数实例

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| { "SmsSid": "AC16203ccc939a742e6b17607496bd6286", "SmsStatus": "delivered", "MessageStatus": "delivered", "To": "+15558675310", "MessageSid": "SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "AccountSid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "From": "+15017122661", "ApiVersion": "2010-04-01" } |

maven安装

|------------------------------------------------------------------------------------------------------------------------------------------------------|
| <dependency> <groupId>com.twilio.sdk</groupId> <artifactId>twilio</artifactId> <version>9.X.X</version> <scope>compile</scope> </dependency> |

gradle安装

|------------------------------------------------------|
| implementation "com.twilio.sdk:twilio:9.X.X" |

源码编译

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| git clone git@github.com:twilio/twilio-java cd twilio-java mvn package -Dmaven.test.skip=true    # Requires maven, download from https://maven.apache.org/download.html |

三、使用流程

1.账号注册

2.登录官网获取参数

  • accountSid
  • authToken
  • fromPhoneNumber

3.添加依赖

|--------------------------------------------------------------------------------------------------------------------------------|
| <dependency> <groupId>com.twilio.sdk</groupId> <artifactId>twilio</artifactId> <version>7.17.0</version> </dependency> |

4.编写测试类

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| package com.nonagon.mellaserver.utils; import com.twilio.Twilio; import com.twilio.base.ResourceSet; import com.twilio.rest.api.v2010.account.Message; import com.twilio.rest.api.v2010.account.Message.Status; import com.twilio.type.PhoneNumber; import java.util.concurrent.CompletableFuture; import lombok.extern.slf4j.Slf4j; import org.apache.http.concurrent.FutureCallback; /** * @ClassName: * @author: flitsneak nonagon * @date: 2021/1/25 */ @Slf4j public class TwilioSMSUtil { private static String ACCOUNT_SID = "AC16203ccc939a742e6b17607496bd6286"; private static String AUTH_TOKEN = "139457ee14404d80d8822ea782f2dda7"; static { Twilio.init(ACCOUNT_SID, AUTH_TOKEN); } public static void SmsSender(String phoneNumber, String code) { Message message; if (phoneNumber.substring(0, 3).equals("+86")) { message = Message .creator(new PhoneNumber(phoneNumber), // to new PhoneNumber("+12019776411"), // from "your Code is "+code) //你好!我们很高兴你开始使用mella!你的验证码是"+code+",可以用它来激活你的账户 .create(); } else { message = Message .creator(new PhoneNumber(phoneNumber), // to new PhoneNumber("+12019776411"), // from "Hello! We're excited for you to start using your Mella! your Mella Verification Code is " + code+", you can use it to activate your account.") .create(); } log.info("======短信id========" + message.getSid()); log.info("====短信发送状态=====" + message.getStatus()); if (message.getStatus() == Status.FAILED) { log.info("======短信发送失败====="+message.getSid()); } // CompletableFuture<ResourceSet<Message>> future = Message.reader().readAsync(); } public static void main(String[] args) { //获取所有短信的状态 ResourceSet<Message> messages = Message.reader().read(); for (Message nn : messages) { log.info(nn.getSid() + " :" + nn.getStatus()); } } } |

相关推荐
Devin~Y26 分钟前
从内容社区到AI智能客服:Spring Boot + Spring Cloud + Spring AI 全栈实战面试拆解
java·spring boot·redis·elasticsearch·spring cloud·kafka·mybatis
未秃头的程序猿26 分钟前
从写CRUD到做AI Agent:我花了6个月转型,这是我的完整路线图
java·后端·ai编程
Java内核笔记27 分钟前
万字长文剖析 Spring Boot 4.1.0 启动流程源码:从 main 到就绪
java·后端
2602_9599609233 分钟前
电商大厂Java面试:从Spring Boot、JPA、微服务到Redis、Kafka、Spring Security与监控,谢飞机的爆笑三轮问答
java·jvm·spring boot·redis·面试题
码农进化录37 分钟前
Java 程序员的 AI 进化论 | Spring Boot 搭企业智能客服,从设计到上线
java·spring boot·openai
旺仔学长 哈哈39 分钟前
别只做车辆 CRUD:Spring Boot 共享汽车管理系统从预约到还车的完整实现---源码53766
java·spring boot·在线预约·共享汽车
weixin_BYSJ198742 分钟前
springboot技能与工具共享小程序---附源码29657
java·javascript·spring boot·python·小程序·django·php
茶本无香1 小时前
通用报表自动化框架:Java调用Shell传参执行PostgreSQL SQL模板
java·sql·postgresql·shell
weixin_BYSJ19871 小时前
flask民族服饰饰品商城小程序---附源码37399
java·javascript·spring boot·python·小程序·django·php
爱笑的源码基地1 小时前
智慧工地源码, 智慧工地环境监测系统架构与绿色施工闭环设计
java·源码·智慧工地·绿色工地