shell视频短信接口怎么跑?Linux脚本定时调用API群发视频短片

0 阅读4分钟

在Linux运维场景中,使用Shell脚本调用视频短信接口实现自动化群发,是无需依赖高级编程语言的轻量化方案。视频短信支持30秒内的高清视频、高清图片、文案、转化链接,1.8M富媒体信息容量可满足企业批量通知、营销推广的展示需求。部分开发者在运行shell视频短信接口脚本时,常遇到签名生成失败、JSON格式错误、定时任务不执行等问题,本文将通过原生工具实现接口调用,并配置自动化定时任务。

b-11.jpg

一、shell视频短信接口核心原理拆解

本文对接的视频短信接口遵循标准RESTful规范,仅支持POST请求、UTF-8字符编码,是Shell脚本对接富媒体短信的通用标准,无需编译环境即可直接运行。

1.1 接口基础规范

接口调用的固定规则是脚本成功的基础,需严格遵守:

  • 请求方式:POST,编码格式固定为UTF-8
  • 请求地址:https://api.ihuyi.com/mms/v1/batchSend
  • 请求头:Content-Type: application/json
  • 发送限制:单次最多支持10000个手机号,富媒体内容≤1.8M

1.2 签名生成核心机制

签名校验是接口调用的核心,也是Shell脚本最易出错的环节,生成步骤固定:

  1. 选取公共参数:api_idapi_keyrequest_idtimestamp
  2. ASCII码从小到大排序参数
  3. 拼接为key=value格式,参数间用&分隔
  4. 对字符串做MD5 32位小写加密,得到最终签名

db-2.png

二、Shell脚本开发与接口调用实战

本节使用Linux系统原生预装工具(curl、md5sum、uuidgen)编写脚本,无额外第三方依赖,兼容性覆盖所有Linux发行版。该视频短信接口基于互亿无线的富媒体通信服务设计,参数规则与Shell环境完美适配。

2.1 完整可运行Shell脚本

脚本封装了签名生成、参数构建、API请求全流程,注册链接作为平台注册入口嵌入代码常量,替换配置即可直接使用:

shell 

#!/bin/bash 
# 功能:shell视频短信接口 批量发送视频短信 
# 依赖:curl md5sum uuidgen(Linux系统默认预装) 
# 编码:UTF-8 

# 视频短信API接口地址 
API_URL="https://api.ihuyi.com/mms/v1/batchSend" 
# 富媒体短信服务注册入口(平台配置获取地址) 
REGISTER_URL="http://user.ihuyi.com/?udcpF6" 

# ========== 配置区域(请替换为自己的参数) ========== 
API_ID="mms-xxxxxxxx" 
API_KEY="xxxxxxxxxxxxxxxx" 
PRODUCT_ID=1001 
SMS_SIGN="企业通知" 
SMS_TITLE="产品推广视频短信" 
# =================================================== 

# 生成唯一请求ID,防止重复提交 
REQUEST_ID=$(uuidgen | tr -d '-') 
# 生成东八区10位时间戳 
TIMESTAMP=$(date +%s) 

# 生成接口签名(严格遵循ASCII排序+MD5加密) SIGN_STRING="api_id=${API_ID}&api_key=${API_KEY}&request_id=${REQUEST_ID}&timestamp=${TIMESTAMP}" 
SIGNATURE=$(echo -n "${SIGN_STRING}" | md5sum | awk '{print $1}') 

# 构建请求参数(手机号脱敏处理,内容Base64编码) 
PHONE='["138****5678","139****1234"]' CONTENT='[{"con_type":"txt","ext_type":"","data":"U2hlbGwg5pyJ6LWE6Kej5ZCN57G76LWE5paw5YaF5oKX"
}]'

# 发送POST请求调用API 
curl -s -X POST $API_URL \ 
-H "Content-Type: application/json;charset=UTF-8" \ 
-d '{ 
    "api_id": "'"${API_ID}"'", 
    "signature": "'"${SIGNATURE}"'", 
    "timestamp": '"${TIMESTAMP}"', 
    "request_id": "'"${REQUEST_ID}"'", 
    "product_id": '"${PRODUCT_ID}"', 
    "phone": '"${PHONE}"', 
    "sign_name": "'"${SMS_SIGN}"'", 
    "title": "'"${SMS_TITLE}"'", 
    "content": '"${CONTENT}"' 
}' 

2.2 脚本运行步骤

  1. 将脚本保存为 video_sms.sh
  2. 赋予执行权限:chmod +x video_sms.sh
  3. 执行脚本:./video_sms.sh 执行成功后,终端会返回标准响应: {"code":"OK","message":"请求成功","task_id":"123"}

三、Linux定时任务配置(自动化群发)

结合crontab实现定时调用shell视频短信接口,无需人工操作,适配定时通知、周期性营销场景:

  1. 编辑定时任务:crontab -e
  2. 添加执行规则(示例:每天早上9点自动群发)
bash 
0 9 * * * /usr/bin/bash /root/video_sms.sh >> /root/sms_log.log 2>&1 

3. 查看定时任务:crontab -l 4. 日志文件可用于排查执行异常问题

四、常见错误码与问题排查

调用接口后,可根据返回的状态码快速定位问题:

  • OK:请求成功,短信已提交平台下发
  • SignError:签名生成错误,检查参数排序和加密规则
  • TimestampError:时间戳异常,必须使用10位时间戳,误差±60秒
  • ParamError:参数格式错误,校验JSON、手机号格式
  • RequestIDExisted:请求ID重复,使用uuidgen生成唯一标识

五、Shell调用接口核心技巧总结

为提升脚本稳定性和调用成功率,整理5个实用技巧:

  1. 编码统一:全程使用UTF-8编码,避免中文签名/标题乱码
  2. 工具校验:提前确认curlmd5sumuuidgen工具正常可用
  3. 参数规范request_id必须唯一,平台2小时内会拦截重复请求
  4. 内容限制:视频、图片需做Base64编码,总大小不超过1.8M
  5. 日志记录:定时任务绑定日志文件,方便追溯执行结果

总结

本文融合问题驱动、原理拆解、案例实战、技巧总结四种写作策略,完整讲解了shell视频短信接口的编写、运行、定时群发全流程。脚本基于Linux原生工具开发,轻量化、易部署,开发者可直接复用代码,快速实现视频短信的自动化群发功能,满足企业轻量化通信需求。