#!/usr/bin/env python3
|
"""
|
在线状态监控功能使用示例
|
"""
|
|
import asyncio
|
import time
|
from config import settings
|
from app.services.ecloud_client import ecloud_client
|
from app.services.email_service import email_service
|
from app.services.sms_service import sms_service
|
from app.workers.online_status_worker import online_status_worker
|
|
|
async def test_online_status_monitoring():
|
"""测试在线状态监控功能"""
|
print("=== 在线状态监控功能测试 ===\n")
|
|
# 1. 测试查询在线微信列表
|
print("1. 测试查询在线微信列表...")
|
online_list = ecloud_client.query_online_wechat_list()
|
if online_list is not None:
|
print(f" 查询成功,在线微信数量: {len(online_list)}")
|
for i, wechat in enumerate(online_list):
|
print(f" 微信{i+1}: wcId={wechat.get('wcId')}, wId={wechat.get('wId')}")
|
else:
|
print(" 查询失败")
|
print()
|
|
# 2. 测试邮件服务
|
print("2. 测试邮件服务...")
|
if settings.email_enabled:
|
# 测试连接
|
email_connected = email_service.test_connection()
|
print(f" 邮件服务连接: {'成功' if email_connected else '失败'}")
|
|
if email_connected:
|
# 发送测试邮件
|
test_subject = "在线状态监控测试邮件"
|
test_content = f"这是一封测试邮件,发送时间: {time.strftime('%Y-%m-%d %H:%M:%S')}"
|
email_sent = email_service.send_notification(test_subject, test_content)
|
print(f" 测试邮件发送: {'成功' if email_sent else '失败'}")
|
else:
|
print(" 邮件服务已禁用")
|
print()
|
|
# 3. 测试短信服务
|
print("3. 测试短信服务...")
|
if settings.sms_enabled:
|
# 发送测试短信
|
test_content = f"【测试】在线状态监控测试短信,时间: {time.strftime('%H:%M:%S')}"
|
sms_sent = sms_service.send_notification(test_content)
|
print(f" 测试短信发送: {'成功' if sms_sent else '失败'}")
|
else:
|
print(" 短信服务已禁用")
|
print()
|
|
# 4. 测试w_id动态更新
|
print("4. 测试w_id动态更新...")
|
current_w_id = settings.get_current_w_id()
|
print(f" 当前配置的w_id: {current_w_id}")
|
|
if online_list and len(online_list) > 0:
|
online_w_id = online_list[0].get("wId")
|
if online_w_id != current_w_id:
|
print(f" 检测到w_id变化: {current_w_id} -> {online_w_id}")
|
success = settings.update_ecloud_w_id(online_w_id)
|
print(f" w_id更新: {'成功' if success else '失败'}")
|
else:
|
print(" w_id无变化,无需更新")
|
else:
|
print(" 无在线微信,无法测试w_id更新")
|
print()
|
|
# 5. 显示工作进程状态
|
print("5. 在线状态监控工作进程状态...")
|
status = online_status_worker.get_status()
|
print(f" 运行状态: {'运行中' if status['running'] else '已停止'}")
|
print(f" 功能启用: {'是' if status['enabled'] else '否'}")
|
print(f" 检测间隔: {status['check_interval_minutes']}分钟")
|
print(f" 通知冷却: {status['notification_cooldown_minutes']}分钟")
|
if status['last_notification_time']:
|
last_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(status['last_notification_time']))
|
print(f" 上次通知: {last_time}")
|
else:
|
print(" 上次通知: 无")
|
print()
|
|
print("=== 测试完成 ===")
|
|
|
def show_configuration():
|
"""显示当前配置"""
|
print("=== 当前配置信息 ===\n")
|
|
print("在线状态监控配置:")
|
print(f" 启用状态: {'是' if settings.online_status_enabled else '否'}")
|
print(f" 检测间隔: {settings.online_status_check_interval}分钟")
|
print(f" 通知消息: {settings.online_status_notification_message}")
|
print()
|
|
print("邮件通知配置:")
|
print(f" 启用状态: {'是' if settings.email_enabled else '否'}")
|
if settings.email_enabled:
|
print(f" SMTP服务器: {settings.email_smtp_server}:{settings.email_smtp_port}")
|
print(f" 发件人: {settings.email_from_email}")
|
print(f" 收件人: {', '.join(settings.email_to_emails)}")
|
print()
|
|
print("短信通知配置:")
|
print(f" 启用状态: {'是' if settings.sms_enabled else '否'}")
|
if settings.sms_enabled:
|
print(f" API地址: {settings.sms_api_url}")
|
print(f" 用户名: {settings.sms_username}")
|
print(f" 接收号码: {', '.join(settings.sms_phone_numbers)}")
|
print()
|
|
print("E云管家配置:")
|
print(f" API地址: {settings.ecloud_base_url}")
|
print(f" 当前w_id: {settings.ecloud_w_id}")
|
print()
|
|
|
if __name__ == "__main__":
|
print("在线状态监控功能使用示例\n")
|
|
# 显示配置信息
|
show_configuration()
|
|
# 运行测试
|
asyncio.run(test_online_status_monitoring())
|
|
print("\n注意事项:")
|
print("1. 请确保已正确配置config.json中的相关参数")
|
print("2. 邮件和短信测试会实际发送消息,请谨慎使用")
|
print("3. 建议在生产环境中禁用测试功能")
|