pomscripts/sendSMS.py

239 lines
11 KiB
Python
Raw Normal View History

2023-04-04 04:15:34 +00:00
import http.client
from urllib import parse
import json
def tpl_send_sms(apikey, tpl_id, tpl_value, mobile):
"""
模板接口发短信
"""
params = parse.urlencode({
'apikey': apikey,
'tpl_id': tpl_id,
'tpl_value': parse.urlencode(tpl_value),
'mobile': mobile
})
headers = {
"Content-type": "application/x-www-form-urlencoded",
"Accept": "text/plain"
}
conn = http.client.HTTPSConnection(sms_host, port=port, timeout=30)
conn.request("POST", sms_tpl_send_uri, params, headers)
response = conn.getresponse()
response_str = response.read()
conn.close()
return response_str
def send_sms(apikey, text, mobile):
"""
通用接口发短信
"""
params = parse.urlencode({'apikey': apikey, 'text': text, 'mobile':mobile})
headers = {
"Content-type": "application/x-www-form-urlencoded",
"Accept": "text/plain"
}
conn = http.client.HTTPSConnection(sms_host, port=port, timeout=30)
conn.request("POST", sms_send_uri, params, headers)
response = conn.getresponse()
response_str = response.read()
conn.close()
return response_str
def sendMessage(apikey = "304eb08353f7ebf00596737acfc31f53"):
# 模板
tpl_id = 4621614
# 【甘肃大未来科技】为提高政务新媒体监测服务效果,提升预警时效性和精准性,
# 从7月1日起我公司将预警周期由10日调整为7日。感谢您对甘肃大未来的信任和支持。
# 电话号码
dictGS = {
'szq': '13359446622',
'zyb': '13609346975'
}
dictCities = {
'天水市': {'王慧': '18706936366', '王肖肖': '17793816150'},
'白银市': {'高雅丽': '15393391905', '范小强': '13639306533', '张静静': '13830021006'},
'定西市': {'党辉': '18893219695', '高刚': '18993265998'},
'酒泉市': {'白苍松白秘书长': '13909371177', '吴建平': '13389370534'},
'临夏州': {'周世泽': '13830103221', '马清明': '13993012391', '马静': '13993096392'},
'平凉市': {'雷勇': '13809330195', '梁文芬': '13993366938'},
'嘉峪关市': {'彭松涛':'18893605128'},
'庆阳市': {'孙德勋': '13909342931', '闫红': '18993490882'},
'华池县': {'李银粉': '13884192323'},
'宁县': {'张虎帅': '13993434900'},
'镇原县': {'刘主任': '13994327967', '苟罗文': '15268989815'},
}
# 批量发送
# (将通知文本向所有号码逐一发送)
dictCities['大未来'] = dictGS
for dGSk in dictCities.keys():
print('----', dGSk)
# dictCities[dGSk].update(dictGS)
for dk in dictCities[dGSk].keys():
sss = tpl_send_sms(apikey, tpl_id, '', dictCities[dGSk][dk])
print(' ', dk, dictCities[dGSk][dk], sss.decode('utf-8'))
def sendReportMonthly(apikey, sYear, sMon):
tpl_id = 4272748
# 【甘肃大未来科技】#city#政务新媒体#year#年#month#月份监测报告电子版已发送到业务联系人,请关注。
# 电话号码
dictGS = {
'szq': '13359446622',
'zyb': '13609346975'
}
dictCities = {
'天水市': {'王慧': '18706936366', '王肖肖': '17793816150'},
'白银市': {'高雅丽': '15393391905', '张静静': '13830021006'},
'定西市': {'张勇':'13993200605', '高刚': '18993265998'},#'党辉': '18893219695',
'酒泉市': {'吴建平': '13389370534'}, #'白苍松白秘书长': '13909371177',
'临夏州': {'周世泽': '13830103221', '马清明': '13993012391', '任琴霞': '13909300361'},
'平凉市': {'雷勇': '13809330195', '万朵': '15193383961'},
'庆阳市': {'孙德勋': '13909342931', '闫红': '18993490882'},
#'华池县': {},#'李银粉': '13884192323'},
#'宁县': {},#'张虎帅': '13993434900'},
#'镇原县': {}, #{'刘主任': '13994327967'}, #, '苟罗文': '15268989815'},
'嘉峪关市': {'彭松涛': '18893605128'},
'武威市': {'马巨龙': '15379291530'},
'兰州新区': {'高天晓副主任':'13993685885', '刘玉明科长':'17726983336', '闫鹏':'15117091122', },
'陇南市': {'王军主任':'18093988558', '杨帅兵':'13830941310'},
'张掖市': {'李伟璟副主任':'13909365376', '张炜':'18993628432'}
}
# 批量发送
# (逐市州发送)
for dGSk in dictCities.keys():
print('----', dGSk)
dictCities[dGSk].update(dictGS) # 向该市号码列表中添加大未来的号码
for dk in dictCities[dGSk].keys():
tpl_value = {'#city#': dGSk, '#year#': sYear, '#month#': sMon}
sss = tpl_send_sms(apikey, tpl_id, tpl_value, dictCities[dGSk][dk])
print(' ', dk, dictCities[dGSk][dk], sss.decode('utf-8'))
def sendForewarning(apikey):
tpl_id = 4058906
# 【甘肃大未来科技】政务新媒体监测预警:#dateStart#至#dateEnd#,监测#city#政务新媒体账号#count#个,
# 有#uq#个账号#problem#,具体名单发至相关工作人员,请予以关注。
tpl_id1 = 4348890
# 【甘肃大未来科技】 # dateStart#至#dateEnd#,监测#city#政务新媒体账号#amount#个,更新频次和发布内容正常。
# 电话号码
dDwlNamePhone = {
'szq': '13359446622',
'zyb': '13609346975'
}
dCityNamePhone = {
'天水市': {'王慧': '18706936366', '王肖肖': '17793816150'},
'白银市': {'高雅丽': '15393391905', '范小强': '13639306533', '张静静': '13830021006'},
'定西市': {'张勇':'13993200605', '高刚': '18993265998'},
'酒泉市': {'新领导': '13909371177', '吴建平': '13389370534'},
'临夏州': {'周世泽': '13830103221', '马清明': '13993012391', '马静': '13993096392'},
'平凉市': {'雷勇': '13809330195', '梁文芬': '13993366938'},
'嘉峪关市': {'彭松涛':'18893605128'},
'庆阳市': {'孙德勋': '13909342931', '闫红': '18993490882'},
'华池县': {},#'李银粉': '13884192323'},
'宁县': {'张虎帅': '13993434900'},
'镇原县': {'刘主任': '13994327967', '苟罗文': '15268989815'},
}
##############################################################################
##############################################################################
# 检测时间和结果
dDate = {
'dateStart': '6月24日',
'dateEnd': '30日'
}
dResults = {
'白银市': {'账号数量': '361', '预警原因': '无更新', '预警数量': '49'},
'定西市': {'账号数量': '406', '预警原因': '无更新', '预警数量': '23'},
'酒泉市': {'账号数量': '376', '预警原因': '无更新', '预警数量': '22'},
'临夏州': {'账号数量': '295', '预警原因': '无更新', '预警数量': '13'},
'平凉市': {'账号数量': '312', '预警原因': '无更新', '预警数量': '16'},
'庆阳市': {'账号数量': '303', '预警原因': '无更新', '预警数量': '10'},
'天水市': {'账号数量': '225', '预警原因': '无更新', '预警数量': '19'},
# '嘉峪关市': {'账号数量': '97', '预警原因': '无更新', '预警数量': '7'},
'华池县': {'账号数量': '38', '预警原因': '无更新', '预警数量': '2'},
'宁县': {'账号数量': '36', '预警原因': '无更新', '预警数量': '1'},
'镇原县': {'账号数量': '33', '预警原因': '', '预警数量': '0'},
}
##############################################################################
##############################################################################
# 批量发送
# (逐市州发送)
for sCity in dResults.keys():
print('----', sCity)
if sCity in dCityNamePhone:
dCityNamePhone[sCity].update(dDwlNamePhone) # 向该市号码列表中添加大未来的号码
for sName in dCityNamePhone[sCity].keys():
uq = dResults[sCity]['预警数量']
if int(uq) > 0:
tpl_value = {'#dateStart#': dDate['dateStart'], '#dateEnd#': dDate['dateEnd'],
'#city#': sCity, '#count#': dResults[sCity]['账号数量'],
'#uq#': dResults[sCity]['预警数量'], '#problem#': dResults[sCity]['预警原因'], }
##sss = tpl_send_sms(apikey, tpl_id, tpl_value, dCityNamePhone[sCity][sName])
sss = '【甘肃大未来科技】政务新媒体监测预警:' + dDate['dateStart'] + '' + dDate['dateEnd']\
+ '' + sCity + '被监测的' + dResults[sCity]['账号数量'] + '个政务新媒体账号中,有'\
+ dResults[sCity]['预警数量'] + '个账号' + dResults[sCity]['预警原因'] + ',具体名单将发至相关工作人员,请予以关注提醒。'
print(' ', sName, dCityNamePhone[sCity][sName], sss)#.decode('utf-8'))
elif int(uq) == 0:
tpl_value = {'#dateStart#': dDate['dateStart'], '#dateEnd#': dDate['dateEnd'],
'#city#': sCity, '#amount#': dResults[sCity]['账号数量'], }
#sss = tpl_send_sms(apikey, tpl_id1, tpl_value, dCityNamePhone[sCity][sName])
# 【甘肃大未来科技】 # dateStart#至#dateEnd#,监测#city#政务新媒体账号#amount#个,更新频次和发布内容正常。
sss = '【甘肃大未来科技】' + dDate['dateStart'] + ''+ dDate['dateEnd'] + ',监测'\
+ sCity + '政务新媒体账号' + dResults[sCity]['账号数量'] + '个,更新频次和发布内容正常。'
print(' ', sName, dCityNamePhone[sCity][sName], sss)#.decode('utf-8'))
else:
print('!!!!! ERROR !!!!!')
if __name__ == "__main__":
##########################
# 短信平台地址和端口
##########################
# 服务地址
sms_host = "sms.yunpian.com"
voice_host = "voice.yunpian.com"
# 端口号
port = 443
# 版本号
version = "v2"
# 查账户信息的URI
user_get_uri = "/" + version + "/user/get.json"
# 智能匹配模板短信接口的URI
sms_send_uri = "/" + version + "/sms/single_send.json"
# 模板短信接口的URI
sms_tpl_send_uri = "/" + version + "/sms/tpl_single_send.json"
# 语音短信接口的URI
sms_voice_send_uri = "/" + version + "/voice/send.json"
# 语音验证码
voiceCode = 1234
##########################
# 短信平台地址和端口
##########################
apikey = "304eb08353f7ebf00596737acfc31f53"
# 向所有成员发送通知
#sendMessage(apikey)
# 逐市州发送月报告
2023-07-22 01:19:10 +00:00
sendReportMonthly(apikey, '2023', '5')
2023-04-04 04:15:34 +00:00
# 逐市州发送预警信息
#sendForewarning(apikey)