首页 > 其他分享 >飞书-消息推送

飞书-消息推送

时间:2023-03-16 15:59:18浏览次数:40  
标签:logging text self webhook 消息 error 推送 data 飞书

配置:

1.

 

 

2.

 

 

3.生成webhook-图省略-加密

code:

# -*- coding:utf-8 -*-
'''
飞书消息通知-用于报告通知
'''

import requests
import json
import logging
import time
import urllib
import urllib3
urllib3.disable_warnings()


try:
JSONDecodeError = json.decoder.JSONDecodeError
except AttributeError:
JSONDecodeError = ValueError


def is_not_null_and_blank_str(content):

if content and content.strip():
return True
else:
return False


class FeiShutalkChatbot(object):

def __init__(self, webhook, secret=None, pc_slide=False, fail_notice=False):

super(FeiShutalkChatbot, self).__init__()
self.headers = {'Content-Type': 'application/json; charset=utf-8'}
self.webhook = webhook
self.secret = secret
self.pc_slide = pc_slide
self.fail_notice = fail_notice

def send_text(self, msg, open_id=[]):

data = {"msg_type": "text", "at": {}}
if is_not_null_and_blank_str(msg): # 传入msg非空
data["content"] = {"text": msg}
else:
logging.error("text类型,消息内容不能为空!")
raise ValueError("text类型,消息内容不能为空!")

logging.debug('text类型:%s' % data)
return self.post(data)

def post(self, data):

try:
post_data = json.dumps(data)
response = requests.post(self.webhook, headers=self.headers, data=post_data, verify=False)
except requests.exceptions.HTTPError as exc:
logging.error("消息发送失败, HTTP error: %d, reason: %s" % (exc.response.status_code, exc.response.reason))
raise
except requests.exceptions.ConnectionError:
logging.error("消息发送失败,HTTP connection error!")
raise
except requests.exceptions.Timeout:
logging.error("消息发送失败,Timeout error!")
raise
except requests.exceptions.RequestException:
logging.error("消息发送失败, Request Exception!")
raise
else:
try:
result = response.json()
except JSONDecodeError:
logging.error("服务器响应异常,状态码:%s,响应内容:%s" % (response.status_code, response.text))
return {'errcode': 500, 'errmsg': '服务器响应异常'}
else:
logging.debug('发送结果:%s' % result)
# 消息发送失败提醒(errcode 不为 0,表示消息发送异常),默认不提醒,开发者可以根据返回的消息发送结果自行判断和处理
if self.fail_notice and result.get('errcode', True):
time_now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
error_data = {
"msgtype": "text",
"text": {
"content": "[注意-自动通知]飞书机器人消息发送失败,时间:%s,原因:%s,请及时跟进,谢谢!" % (
time_now, result['errmsg'] if result.get('errmsg', False) else '未知异常')
},
"at": {
"isAtAll": False
}
}
logging.error("消息发送失败,自动通知:%s" % error_data)
requests.post(self.webhook, headers=self.headers, data=json.dumps(error_data))
return result
#调用
webhook = "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxx" #不能对外
feishu = FeiShutalkChatbot(webhook)
feishu.send_text("这是一条消息测试,能收到吗")

标签:logging,text,self,webhook,消息,error,推送,data,飞书
From: https://www.cnblogs.com/yanhuidj/p/17222884.html

相关文章

  • 如何保证消息的可靠性投递
    一、消息队列的投递confirm确认机制一些消息中间件会有消息投递确认机制,比如当RabbitMQ成功接收到消息之后会自动异步的回调生产者的一个接口返回成功与否的消息,但是我们......
  • shell 9 -管理重任- 向用户终端发送消息
    1#!/bin/bash2set-x3USER=$14devices=`ls/dev/pts/*-l|awk'{print$3,$10}'|grep$USER|awk'{print$2}'`5fordevin$devices6do......
  • GithubAction每天自动推送
    GithubAction每天自动推送GithubAction每天自动推送随机内容到本仓库的配置方法:在Github仓库中创建一个名为.github/workflows的目录。在.github/workflows目录下创......
  • 第93讲(HelloActor整体介绍):Akka第一个案例动手实战开发消息实体类
    第93讲:Akka第一个案例动手实战开发消息实体类HelloActor的整体框架及实现:一:HelloActor包括的actors:1AggregateActor:对最后所有ReduceActor的结果进行统计2MapActor:对收......
  • Java+Redis 通过Lua 完成库存扣减,创建消息队列,异步处理消息--实战
    需要完成功能借助redisStream数据结构实现消息队列,异步完成订单创建,其中涉及到了缓存(击穿,穿透,雪崩),锁(Redisson),并发处理,异步处理,Lua脚本IDE:IDEA2022 1、读取库存数......
  • 【HarmonyOS】FA服务卡片中如何给List添加消息事件
    ​ 【关键字】消息事件、JSUI、服务卡片 【介绍】HarmonyOS使用JSUI进行Java服务卡片开发大家一定不陌生,如果还有没有接触过服务卡片开发的可以参考以下文档:http......
  • Redis使用ZSET实现消息队列使用总结一
    转载请注明出处:目录1.zset为什么可以做消息队列2.zset实现消息队列的步骤3.使用jedis实现消息队列示例4.+inf与-inf5.redis使用list与zset做......
  • 【Retry】消息重试框架 Spring-Retry 和 Guava-Retry
    消息重试框架背景1、调用第三方的方法或接口等,并不保证一次性就能调用成功2、消息推送,MQ消费后才进行处理时,尝试几次不成功,就再放回数据库再做补偿措施等等,这些都是需......
  • 安卓 广播消息
    发送有序广播1单个广播触发AndroidManifest.xml<!--有序广播接收器使用的权限--><uses-permissionandroid:name="my.permission.receiver"></uses-permission><receive......
  • 【快应用】推送消息token不合法案例
    ​ 【关键字】推送消息、快应用 【问题背景】快应用通过华为agc后台网站发送push消息时,填入token后提示所有的token不合法,该如何处理?快应用的token:I/jsLog(24193......