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飞书发送信息的资料请关注毛票票其它相关文章!