使用Shell脚本调用短信接口发送验证码短信教程
Shell脚本对接验证码短信接口DEMO示例
在Web应用、系统通知等场景中,经常需要向用户发送验证码短信。本教程将介绍如何使用Shell脚本调用短信接口,实现验证码短信的发送功能。我们将以https://api.3yit.com/api/send-sms-single
接口为例,通过POST请求并携带相应的参数,向该接口发送请求,获取验证码短信的发送结果。
准备工作
在开始之前,请确保你已经从短信服务提供商处获得了相关的接口文档,并了解了sp_id
、password
(或签名算法)等关键信息。同时,你需要一个能够执行Shell脚本的环境。
参数获取
登录智慧云信官网、点击对应的产品,比如【验证码】、在上方的选项卡中选择【开发者】-》【HTTP开发文档】。从文档中可以看到具体API方法名称,以及各个参数key及对应的值vavlue,通常包括sp_id
、mobile
、content、password
等参数。
sp_id代表产品编号,具有唯一性,通常是由6位数字组成。
mobile代表手机号码。
content代表短信内容,包含签名与短信内容,比如“【智慧云信】您的验证码是456790,请妥善保管”,其中【智慧云信】是签名,在签名报备中申请,“您的验证码是456790,请妥善保管“是短信模版,在模版报备中申请,审核通过即可发送。
password是通过SP_ID密码进行MD5加密算法后产生的接口密码(非登录密码),由32位随机字符串组成。
二、编写Shell脚本
下面是一个简单的Shell脚本示例,用于调用短信接口发送验证码短信:
bash复制代码
# 接口配置信息 API_URL="https://api.3yit.com/api/send-sms-single" SP_ID="5xxxxx" # 从接口文档中获取 PASSWORD="xxxxxxxxxxx" # 32位md5处理后的密码,从接口文档中获取
# 待发送的手机号和短信内容(假设验证码为123456) MOBILE="176xxxxxxxx" CONTENT="【签名】验证码:123456"
# 构建请求参数 PARAMS="sp_id=${SP_ID}&mobile=${MOBILE}&content=${CONTENT}&password=${PASSWORD}" # 如果需要添加扩展号,可以在这里添加 # PARAMS="${PARAMS}&ext=123"
# 使用curl命令发送POST请求 # 注意:curl命令的-d选项用于发送POST请求的数据,-H选项用于设置请求头 RESPONSE=$(curl -s -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "${PARAMS}" "${API_URL}")
# 解析返回的JSON数据 # 这里我们使用jq命令来解析JSON,如果你的系统没有安装jq,请先安装 CODE=$(echo "${RESPONSE}" | jq -r '.code') MSG=$(echo "${RESPONSE}" | jq -r '.msg') MSG_ID=$(echo "${RESPONSE}" | jq -r '.msg_id')
# 输出结果 echo "发送结果:" echo "code: ${CODE}" echo "msg: ${MSG}" echo "msg_id: ${MSG_ID}"
# 根据返回码判断发送是否成功 if [ "${CODE}" -eq 0 ]; then echo "验证码发送成功,msg_id: ${MSG_ID}" else echo "发送失败:${MSG}" fi
三、脚本说明
- 接口配置信息:在脚本开头,我们定义了接口的地址、
sp_id
和password
等关键信息。这些信息需要根据你的实际情况进行替换。 - 构建请求参数:我们使用Shell的字符串拼接功能,将请求参数拼接成一个查询字符串。这里我们假设不使用签名方式,而是使用密码方式。如果你需要使用签名方式,请根据服务提供商提供的签名算法计算签名,并将其添加到请求参数中。
- 发送POST请求:我们使用
curl
命令发送POST请求。-s
选项用于静默模式,不显示进度和错误信息;-X POST
指定请求方法为POST;-H
选项用于设置请求头,指定Content-Type
为application/x-www-form-urlencoded
;-d
选项用于发送POST请求的数据,即我们之前构建的查询字符串。 - 解析返回的JSON数据:我们使用
jq
命令来解析返回的JSON数据。jq
是一个轻量级的命令行JSON处理器,可以方便地提取JSON数据中的字段。在这里,我们提取了code
、msg
和msg_id
字段的值。 - 输出结果:我们将提取到的字段值打印出来,并根据
code
字段的值判断发送是否成功。
四、注意事项
- 安全性:请确保不要将敏感信息(如
sp_id
、password
等)直接暴露在脚本中。可以考虑使用配置文件、环境变量等方式进行管理。 - 错误处理:在实际应用中,你可能需要更详细地处理各种错误情况,例如网络错误、请求超时等。你可以根据
curl
命令的返回值和jq
命令的错误输出来进行错误判断和处理。 - 日志记录:为了便于问题追踪和排查,建议将发送短信的日志记录到文件中,包括发送时间、手机号、验证码、响应结果等。
- 测试与验证:在正式部署前,务必对发送短信的功能进行充分的测试和验证,确保功能的正确性和稳定性。
随便看看