利用服务器和飞书API给飞书账号发消息,在很多实际的场景中会有作用,比如应用程序的报警通知,或者数据报表的通知等等,这里就简单总结一下步骤。
有两种方式可以实现往飞书发送告警消息
一.通过群组机器人在同一个群组内发送告警消息(只能发给同一个群里,无法发送到群外的个人消息)
1.新建一个群聊天、点击设置,并点击群机器人,添加一个群机器人
2.配置机器人信息,这里可自行配置,我这边演示,默认即可,这里有个关键信息是 webhook地址
3.编辑服务器上的发送脚本,并测试
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
import datetime
# 你复制的webhook地址粘贴进url内
url = "https://open.feishu.cn/open-apis/bot/v2/hook/d61e7b5b-2c40-4de9-a263-10x1a0f6e037"
def send_message(message):
payload_message = {
"msg_type": "text",
"content": {
"text": message
}
}
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=json.dumps(payload_message))
return response
if __name__ == '__main__':
text = sys.argv[1]
send_message(text)
这里注意一下,服务器上的脚本要提前确认好有执行权限,python环境正常。
二.通过自建应用发送告警消息(可以发给群组也可以发给个人)
1.先自己建立一个飞书测试的企业,信息随便填,这里不赘述;第一步是中建应用,在开发者后台自建
2.配置自建应用,这里只配置关键的功能,其他的可以自行配置,主要2个,机器人启用和权限开通;发送消息和通过手机号获取用户ID的权限
3.先将机器人拉到任意一个群内获取chatid,这一步一定要做;然后再复制App ID及App Secret到脚本内,并测试。
#!/usr/bin/python3
#conding=utf-8
import requests,json,sys
mobiles=sys.argv[1]
subject=sys.argv[2]
messages=sys.argv[3]
def gettenant_access_token():
tokenurl="https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/"
headers={"Content-Type":"application/json"}
data={
"app_id":"XXXXX",
"app_secret":"XXXXXXX"
}
request=requests.post(url=tokenurl,headers=headers,json=data)
response=json.loads(request.content)['tenant_access_token']
return response
def getuserid(tenant_access_token):
mobiles="17317452675"
userurl="https://open.feishu.cn/open-apis/user/v1/batch_get_id?mobiles=%s" % mobiles
headers={"Authorization":"Bearer %s" % tenant_access_token}
request=requests.get(url=userurl,headers=headers)
response=json.loads(request.content)['data']['mobile_users'][mobiles][0]['user_id']
return response
def getchatid(tenant_access_token):
#获取chatid
chaturl="https://open.feishu.cn/open-apis/chat/v4/list?page_size=20"
headers={"Authorization":"Bearer %s"%tenant_access_token,"Content-Type":"application/json"}
request=requests.get(url=chaturl,headers=headers)
response=json.loads(request.content)['data']['groups'][0]['chat_id']
return response
def sendmes(user_id,chat_id,tenant_access_token):
#向群里发送消息
sendurl="https://open.feishu.cn/open-apis/message/v4/send/"
headers={"Authorization":"Bearer %s"%tenant_access_token,"Content-Type":"application/json"}
data={"chat_id":chat_id,
"msg_type":"text",
"content":{
"text":"%s<at user_id=\"%s\">test</at>"%(messages,user_id)
}
}
#给个人发送消息
data={"user_id":user_id,
"msg_type":"text",
"content":{
"text":"%s<at user_id=\"%s\">test</at>"%(messages,user_id)
}
}
request=requests.post(url=sendurl,headers=headers,json=data)
print(request.content)
tenant_access_token=gettenant_access_token()
user_id=getuserid(tenant_access_token)
chat_id=getchatid(tenant_access_token)
sendmes(user_id,chat_id,tenant_access_token)
测试正常!
附一些报错的原因及解决办法:
1.应用权限不足,无法通过手机号获取用户id
Traceback (most recent call last):
File "./feishuapp.py", line 55, in <module>
user_id=getuserid(tenant_access_token)
File "./feishuapp.py", line 23, in getuserid
response=json.loads(request.content)['data']['mobile_users'][mobiles][0]['user_id']
2.没有把机器人加入或者创建群聊,无法获取chatid
Traceback (most recent call last):
File "./feishuapp.py", line 55, in <module>
chat_id=getchatid(tenant_access_token)
File "./feishuapp.py", line 30, in getchatid
response=json.loads(request.content)['data']['groups'][0]['chat_id']
IndexError: list index out of range
三.补充zabbix端的配置
告警媒介:feishu.py是脚本名
用户配置
文章来源:https://www.toymoban.com/news/detail-401487.html
动作配置
文章来源地址https://www.toymoban.com/news/detail-401487.html
到了这里,关于Zabbix对接飞书告警的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!