提高效率!企业短信通道账单拆分一键处理,干货分享
# 提高效率!企业短信通道账单拆分一键处理,干货分享!
昨天从硬盘里看到2019年写的 账单拆分案列,这里分享给大家
## 背景
**先搞明白 短信通道是什么?**
短信通道是指用于发送和接收短消息服务(SMS)的通信路径或渠道。短信通道允许信息在移动设备之间进行传递,通常用于发送文字消息、通知、验证代码等。这些通道可以通过各种技术和协议实现,包括短信网关、短信API(应用程序接口)、无线电波等。
**那一条短信通常包含以下几个部分**
* \*\*短信内容 :\*\*这是短信的主要部分,包含你想要传达的信息。短信内容应该简洁明了,能够清楚地传达你的意图。
* \*\*短信签名 :\*\*短信签名通常位于短信的末尾,用于标识发件人。这可以是一个名字、一个公司名或者一个特定的标识。短信签名的作用是帮助接收者识别短信的来源,特别是当接收者收到来自陌生号码的短信时。
* \*\*收件人 :\*\*这是短信要发送到的目标,可以是一个或多个手机号码。
\*\*发送日期和时间 :\*\*这是短信被发送的日期和时间。
一般比较多的是验证码,如下【华为云】就是 短信签名
**请注意,不是所有的短信都包含短信签名,这取决于发送者是否选择添加。但是在中国都会有短信签名,因为以前短信诈骗太多了,要商用需要去 中国电信,中国联通,中国广电,和 中国移动备案才可以额!**
## 企业短信通道账单展示
下面是脱敏的数据又是真实的短信明细,
但是还有2个问题
* 第一个问题?一个短信通道会有多个短信签名,可以看到 【某照明品牌】【某动物园】,需要分别结算的
* 第二个问题?短信一直有字数限制,70个字内,只是现在智能手机,会把2个短信拼起来看起来像一条。其实用旧一点的手机是不会解析的,就会是2条。如下
## 干货来了用python拆分短信账号
这个应该我之前的写的代码,今天找出来,优化的下代码,我提取了一些功能模块,使用了更具描述性的变量名,并遵循了 PEP 8 的规范。
为能读懂下面的代码这里说明下,
* dh10856\_gbk.xlsx 是短信服务商发来了短信明细。(以脱敏)
* dh10856\_gbk\_OKOK.xlsx是执行 python 后 拆分完成的短信明细。
import sys
from openpyxl import load_workbook
import re
def extract_content(text):
# 使用正则表达式提取【】中的内容
pattern = r'【(.*?)】'
matches = set(re.findall(pattern, text))
return list(matches)
def update_dict_and_ws(ws, dict_data, output_list):
# 更新字典数据和工作表
for key, value in dict_data.items():
SMS_var1 = ws.cell(column=3, row=key + 1).value
for item in output_list:
print_words = f"【{item}】"
# 如果第三列的内容以【item】开头,则更新第七列的值
if SMS_var1[:len(item) + 2] == print_words:
for k, v in dict_data.items():
ws.cell(column=7, row=k + 1).value = print_words
def update_ws_by_output_list(ws, wb, output_list, rows):
# 根据提取的内容列表,更新工作表
for item in output_list:
print_words = f"【{item}】"
# 创建新的工作表
wb.create_sheet(title=print_words)
x, z = 1, 1
while x < rows:
x += 1
ws1 = wb[print_words]
ws_title = ws.cell(column=7, row=x).value
# 如果第七列的内容与当前提取的内容相符,则更新新工作表
if print_words == ws_title:
z += 1
for col in range(1, 6):
ws1.cell(column=col, row=z).value = ws.cell(column=col + 1, row=x).value
def main_dictionary(ws, wb, rows, output_list):
dict_data = {}
x = 1
while x < rows:
x += 1
mobile = ws.cell(column=2, row=x).value
number = ws.cell(column=1, row=x).value
mobile_add = ws.cell(column=2, row=x + 1).value
# 如果当前行和下一行的手机号相同,更新字典数据
if mobile == mobile_add:
dict_data.update({number: mobile})
else:
dict_data.update({number: mobile})
update_dict_and_ws(ws, dict_data, output_list)
dict_data = {}
print("---end----" + str(x))
update_ws_by_output_list(ws, wb, output_list, rows)
wb.save(filename="dh10856_gbk_OKOK.xlsx")
print("exit")
def main():
print("Hello, World!")
wb = load_workbook("dh10856_gbk.xlsx")
ws = wb["sheet1"]
rows = ws.max_row
x = 1
text = ""
while x < rows:
x += 1
text += ws.cell(column=3, row=x).value
output_list = extract_content(text)
x = 1
main_dictionary(ws, wb, rows, output_list)
if __name__ == '__main__':
sys.exit(main())
显示如下
可以看到 自动生成了 4个 短信【签名】了,可以理解一个签名就是需要和客户公司结账的明细,然后自己过滤发送成功的就ok了
## 最后短信通道账单拆分后的处理。
大家都是知道 ,我们手机发短信是 1毛条。但是 公司和公司之间结算不会这个贵,只会便宜比如8分一条,或者 6分,具体需要谈了,哈哈。
那大家会想,用拼夕夕模式跳过中间商赚差价会也会很便宜吗?不好意思,如果你找移动谈好比如 1W条短信可以便宜到 9分,那如果客户的手机是联通的怎么办?所以一般企业短信发客户服务都是找短信平台运营商操作,3网合一,现在应该叫四网合一了。然后就是合作了。
合作方式1, 约定和 每月多少的量给你打多少折,比如 某东和短信平台运营商约定1个月 8000W条内 ,要求 4分1条。
合作方式2, 累计折扣,比如 超过 5000条 给 9.5分1条。比如 超过 10000条 给 9分1条。,超过 50000条 给 8分1条。
在中国,一些其他知名的短信接口平台有很多,我这里列举一些共大家参考
* 大汉三通
* 云片网
* 亿美软通
* 云之讯
* 一信通
* 互亿无线
* 聚合数据
## 最后
今天就说到这里,谢谢大家 。
一键三连,福气满堂。
- 点赞
- 收藏
- 关注作者
评论(0)