Eu mesmo já fiz muitos serviços e quero enviá-los para telefones celulares enviando mensagens Push. No entanto, o aplicativo correspondente precisa ser desenvolvido para telefones celulares de diferentes plataformas e o custo é relativamente alto. Então, comecei a procurar um mecanismo de lembrete de mensagem gratuito e de código aberto.
direção:
1. Serviço de push
2. Conta oficial do WeChat
3. Sincronização do calendário
Depois de uma investigação feroz, descobriu-se que:
Os serviços push são basicamente necessários para desenvolver aplicativos correspondentes
Se a conta oficial do WeChat envia mensagens, o número de mensagens que podem ser enviadas todos os dias é limitado ou são usadas mensagens de modelo, o que é relativamente pobre em escalabilidade
A sincronização do calendário é relativamente baixa e o software de sincronização correspondente precisa ser instalado no celular, o que não é universal.
Mais tarde, foi descoberto que o Enterprise WeChat oferece suporte a aplicativos personalizados e abriu o WeChat, então temos uma nova direção:
1. Registre uma empresa
2. Crie um novo aplicativo sob a empresa
3. Use o WeChat para vincular o WeChat corporativo
4. Ative a opção de sincronização de mensagens corporativas do WeChat para o WeChat
5. Conecte seu próprio serviço de lembrete/alarme ao aplicativo no WeChat corporativo
6. Adicione pessoas (família, amigos) que precisam receber informações para membros corporativos
Finalmente alcançar o seguinte efeito
Anexe um pequeno código para lembrete de previsão do tempo:
# -*- coding: utf-8 -*-
# @Time : 2021/6/21 5:10 下午
# @Author : SunRuichuan
# @File : GetWeather.py
import datetime
import json
import requests
appid = '*****'
appsecret = '*****'
weather_url = 'https://tianqiapi.com/api'
def getWeather(city='北京'):
params = {
'appid': appid,
'appsecret': appsecret,
'version': 'v1',
'cityid': '',
'city': city,
'ip': '',
}
return requests.get(url=weather_url, params=params)
def getAccessToken():
url = '企业微信获取token链接,自己去申请'
res = requests.get(url).json()
if res['errcode'] == 0:
return res['access_token']
else:
return None
def sendMsgToAll(content):
"""通过企业微信申请的应用发送内容"""
access_token = getAccessToken()
if access_token is None:
return
url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
data = {
"touser": '@all',
"msgtype": "text",
"agentid": 1000002,
"text": {
"content": content
},
"safe": 0
}
requests.post(url=url, data=json.dumps(data))
def getCarLimit():
tomorrow = (datetime.date.today() + datetime.timedelta(days=1)).strftime("%Y-%m-%d")
# print(tomorrow)
url = 'http://yw.jtgl.beijing.gov.cn/jgjxx/services/getRuleWithWeek'
result = requests.get(url=url).json()
for i in result['result']:
_date = str(i['limitedTime']).replace('年', '-').replace('月', '-').replace('日', '')
if tomorrow == _date:
# print(i['limitedNumber'])
return i['limitedNumber']
if __name__ == '__main__':
limit = getCarLimit()
limit_msg = ''
if limit is not None and limit != '不限行':
limit_msg = f'明日限行尾号为【{limit}】'
print(limit_msg)
weather_res = getWeather().json()
city_name = weather_res['city']
update_time = weather_res['update_time']
weather_data = weather_res['data']
'''获取明日天气'''
date = weather_data[1]['date']
weather = weather_data[1]['wea']
high_tem = weather_data[1]['tem1']
low_tme = weather_data[1]['tem2']
air_level = weather_data[1]['air_level']
wash_car = '未知'
for wash in weather_data[1]['index']:
if wash['title'] == '洗车指数':
wash_car = wash['level']
weather_string = f'{date} {city_name}\n天气情况【{weather}】\n最高气温【{high_tem}】\n最低气温【{low_tme}】\n空气质量【{air_level}】\n洗车指数【{wash_car}】'
print(weather_string)
msg = weather_string + '\n' + limit_msg
sendMsgToAll(msg)