Python调用飞书发送消息的示例
一、创建飞书机器人
自定义飞书机器人操作步骤,具体详见飞书官方文档:《机器人|如何在群聊中使用机器人?》
二、调用飞书发送消息
自定义机器人添加完成后,就能向其webhook地址发送POST请求,从而在群聊中推送消息了。支持推送的消息格式有文本、富文本、图片消息,也可以分享群名片等。
参数msg_type代表消息类型,可传入:text(文本)/ post(富文本)/ image(图片)/ share_chat(分享群名片)/ interactive(消息卡片),可参照飞书接口文档:https://open.feishu.cn/document/ukTMukTMukTM/uUjNz4SN2MjL1YzM
发送文本消息
请求的消息体示例:
{
"open_id":"ou_5ad573a6411d72b8305fda3a9c15c70e",
"root_id":"om_40eb06e7b84dc71c03e009ad3c754195",
"chat_id":"oc_5ad11d72b830411d72b836c20",
"user_id":"92e39a99",
"email":"fanlv@gmail.com",
"msg_type":"text",
"content":{
"text":"textcontenttest"
}
}
Curl请求Demo
curl-XPOST\
https://open.feishu.cn/open-apis/message/v4/send/\
-H'Authorization:Bearert-fee42159a366c575f2cd2b2acde2ed1e94c89d5f'\
-H'Content-Type:application/json'\
-d'{
"chat_id":"oc_f5b1a7eb27ae2c7b6adc2a74faf339ff",
"msg_type":"text",
"content":{
"text":"textcontenttest"
}
}'
使用Python封装飞书请求
接下来我们以发送文本格式消息类型,进行以下封装,上代码:
#-*-coding:utf-8-*-
'''
@File:feiShuTalk.py
@Time:2020/11/911:45
@Author:DY
@Version:V1.0.0
@Desciption:
'''
importrequests
importjson
importlogging
importtime
importurllib
importurllib3
urllib3.disable_warnings()
try:
JSONDecodeError=json.decoder.JSONDecodeError
exceptAttributeError:
JSONDecodeError=ValueError
defis_not_null_and_blank_str(content):
"""
非空字符串
:paramcontent:字符串
:return:非空-True,空-False
"""
ifcontentandcontent.strip():
returnTrue
else:
returnFalse
classFeiShutalkChatbot(object):
def__init__(self,webhook,secret=None,pc_slide=False,fail_notice=False):
'''
机器人初始化
:paramwebhook:飞书群自定义机器人webhook地址
:paramsecret:机器人安全设置页面勾选“加签”时需要传入的密钥
:parampc_slide:消息链接打开方式,默认False为浏览器打开,设置为True时为PC端侧边栏打开
:paramfail_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
defsend_text(self,msg,open_id=[]):
"""
消息类型为text类型
:parammsg:消息内容
:return:返回消息发送结果
"""
data={"msg_type":"text","at":{}}
ifis_not_null_and_blank_str(msg):#传入msg非空
data["content"]={"text":msg}
else:
logging.error("text类型,消息内容不能为空!")
raiseValueError("text类型,消息内容不能为空!")
logging.debug('text类型:%s'%data)
returnself.post(data)
defpost(self,data):
"""
发送消息(内容UTF-8编码)
:paramdata:消息数据(字典)
:return:返回消息发送结果
"""
try:
post_data=json.dumps(data)
response=requests.post(self.webhook,headers=self.headers,data=post_data,verify=False)
exceptrequests.exceptions.HTTPErrorasexc:
logging.error("消息发送失败,HTTPerror:%d,reason:%s"%(exc.response.status_code,exc.response.reason))
raise
exceptrequests.exceptions.ConnectionError:
logging.error("消息发送失败,HTTPconnectionerror!")
raise
exceptrequests.exceptions.Timeout:
logging.error("消息发送失败,Timeouterror!")
raise
exceptrequests.exceptions.RequestException:
logging.error("消息发送失败,RequestException!")
raise
else:
try:
result=response.json()
exceptJSONDecodeError:
logging.error("服务器响应异常,状态码:%s,响应内容:%s"%(response.status_code,response.text))
return{'errcode':500,'errmsg':'服务器响应异常'}
else:
logging.debug('发送结果:%s'%result)
#消息发送失败提醒(errcode不为0,表示消息发送异常),默认不提醒,开发者可以根据返回的消息发送结果自行判断和处理
ifself.fail_noticeandresult.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']ifresult.get('errmsg',False)else'未知异常')
},
"at":{
"isAtAll":False
}
}
logging.error("消息发送失败,自动通知:%s"%error_data)
requests.post(self.webhook,headers=self.headers,data=json.dumps(error_data))
returnresult
封装后我们就可以直接调用封装的类,进行消息代码发送;执行以下代码后,就可以使用飞书发送消息咯,是不是很简单。
webhook="https://open.feishu.cn/open-apis/bot/v2/hook/1d7b5d0c-03a5-44a9-8d7a-4d09b24bfea1"
feishu=FeiShutalkChatbot(webhook)
feishu.send_text("重庆百货-新世纪鱼胡路店内商品'1000800370-牛心白约1kg'在商详[8]和榜单[7]中排名不一致")
以上就是Python调用飞书发送消息的示例的详细内容,更多关于python飞书发送信息的资料请关注毛票票其它相关文章!