联系我们

邮件:4000-960-717

邮件:service#3yit.com

使用Shell脚本调用短信接口发送验证码短信教程

Shell脚本对接验证码短信接口DEMO示例

圆点

使用Shell脚本调用短信接口发送验证码短信教程(图1)

在Web应用、系统通知等场景中,经常需要向用户发送验证码短信。本教程将介绍如何使用Shell脚本调用短信接口,实现验证码短信的发送功能。我们将以https://api.3yit.com/api/send-sms-single接口为例,通过POST请求并携带相应的参数,向该接口发送请求,获取验证码短信的发送结果。

准备工作

在开始之前,请确保你已经从短信服务提供商处获得了相关的接口文档,并了解了sp_idpassword(或签名算法)等关键信息。同时,你需要一个能够执行Shell脚本的环境。

参数获取

登录智慧云信官网、点击对应的产品,比如【验证码】、在上方的选项卡中选择【开发者】-》【HTTP开发文档】。从文档中可以看到具体API方法名称,以及各个参数key及对应的值vavlue,通常包括sp_idmobilecontentpassword等参数。    

sp_id代表产品编号,具有唯一性,通常是由6位数字组成。

mobile代表手机号码。

content代表短信内容,包含签名与短信内容,比如“【智慧云信】您的验证码是456790,请妥善保管,其中【智慧云信】是签名,在签名报备中申请,“您的验证码是456790,请妥善保管“是短信模版,在模版报备中申请,审核通过即可发送。

password是通过SP_ID密码进行MD5加密算法后产生的接口密码(非登录密码),由32位随机字符串组成

二、编写Shell脚本

下面是一个简单的Shell脚本示例,用于调用短信接口发送验证码短信:

bash复制代码

#!/bin/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

三、脚本说明

  1. 接口配置信息:在脚本开头,我们定义了接口的地址、sp_idpassword等关键信息。这些信息需要根据你的实际情况进行替换。
  2. 构建请求参数:我们使用Shell的字符串拼接功能,将请求参数拼接成一个查询字符串。这里我们假设不使用签名方式,而是使用密码方式。如果你需要使用签名方式,请根据服务提供商提供的签名算法计算签名,并将其添加到请求参数中。
  3. 发送POST请求:我们使用curl命令发送POST请求。-s选项用于静默模式,不显示进度和错误信息;-X POST指定请求方法为POST;-H选项用于设置请求头,指定Content-Typeapplication/x-www-form-urlencoded-d选项用于发送POST请求的数据,即我们之前构建的查询字符串。
  4. 解析返回的JSON数据:我们使用jq命令来解析返回的JSON数据。jq是一个轻量级的命令行JSON处理器,可以方便地提取JSON数据中的字段。在这里,我们提取了codemsgmsg_id字段的值。
  5. 输出结果:我们将提取到的字段值打印出来,并根据code字段的值判断发送是否成功。

四、注意事项

  1. 安全性:请确保不要将敏感信息(如sp_idpassword等)直接暴露在脚本中。可以考虑使用配置文件、环境变量等方式进行管理。
  2. 错误处理:在实际应用中,你可能需要更详细地处理各种错误情况,例如网络错误、请求超时等。你可以根据curl命令的返回值和jq命令的错误输出来进行错误判断和处理。
  3. 日志记录:为了便于问题追踪和排查,建议将发送短信的日志记录到文件中,包括发送时间、手机号、验证码、响应结果等。
  4. 测试与验证:在正式部署前,务必对发送短信的功能进行充分的测试和验证,确保功能的正确性和稳定性。