

大家使用机器人进行飞书群通知时,通常会进行@操作来传递相关的信息,但是作为现代打工仔,你一定有很多很多重要的“工作”群聊吧,那么摸鱼忙碌的时候,我们很容易忽略@信息而继续”认真“工作
那么如何让信息更高效的传递呢,不妨来试试使用影刀发送加急消息吧,让打工的你从此不在错过下班的播报,又或者提高我们的摸鱼工作安全感


拉远了拉远了,其实这是最近一个小伙伴咨询我的问题,目前影刀没有相关指令进行飞书的加息消息发送,所以我们来手把手搭建一个吧~




需要开通的权限:

url = "<https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal>"
method = "post"
headers = {
"Content-Type": "application/json; charset=utf-8"
}
params = {
"app_id": "",
"app_secret": "",
}app_id,app_secret对应我们刚才建立的应用的应用凭证

url = "<https://open.feishu.cn/open-apis/im/v1/chats>"
method = "get"
headers = {
"Authorization": "Bearer " + access_token
}url = "<https://open.feishu.cn/open-apis/contact/v3/users/batch_get_id>"
method = "post"
headers = {
"Authorization": "Bearer " + access_token
}
body = {
"mobiles": [],
"emails": [],
"include_resigned": "true"
}url = "<https://open.feishu.cn/open-apis/im/v1/messages>"
method = "post"
headers = {
"Authorization": "Bearer " + access_token
}
params = {
"receive_id_type": "chat_id" //选择群聊
}
body = {
"receive_id": "", //传入群聊id
"msg_type": "text", //这里只介绍文本消息发送
"content": "{\\"text\\":\\"" + 消息文本+ "\\"}"
}
url = "<https://open.feishu.cn/open-apis/im/v1/messages/>" + self.messageId + "/urgent_app"
method = "patch"
headers = {
"Authorization": "Bearer " + access_token
}
params = {
"user_id_type": "open_id"
}
body = {
"user_id_list": "" //消息id传入
}这里我已经帮助搭建封装好了一个指令,可以获取测试啦,底下附上源码,大家自己动动手丰衣足食~

# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
def main(args):
pass
import requests
import re
FeiShu = "<https://open.feishu.cn/open-apis/>"
class FS:
def __init__(self, appId, appSecret):
self.app_id = appId
self.app_secret = appSecret
self.Ttoken = ""
self.useId_list = []
self.chatId_list = []
self.messageId = ""
def tokenGet(self):
url = FeiShu + "auth/v3/tenant_access_token/internal"
headers = {
"Content-Type": "application/json; charset=utf-8"
}
params = {
"app_id": self.app_id,
"app_secret": self.app_secret,
}
token_Get = requests.post(url=url, headers=headers, params=params)
self.Ttoken = token_Get.json()['tenant_access_token']
def userIdGet(self, moblies, emails):
url = FeiShu + "contact/v3/users/batch_get_id"
headers = {
"Authorization": "Bearer " + str(self.Ttoken)
}
body = {
"mobiles": moblies,
"emails": emails,
"include_resigned": "true"
}
useId_Get = requests.post(url=url, headers=headers, json=body)
self.useId_list = useId_Get.json()['data']['user_list']
def chatIdGet(self):
url = FeiShu + "im/v1/chats"
headers = {
"Authorization": "Bearer " + str(self.Ttoken)
}
chatId_Get = requests.get(url=url, headers=headers)
self.chatId_list = chatId_Get.json()['data']['items']
def sendMessage(self, receive_id, content):
url = FeiShu + "im/v1/messages"
headers = {
"Authorization": "Bearer " + str(self.Ttoken)
}
params = {
"receive_id_type": "chat_id"
}
body = {
"receive_id": receive_id,
"msg_type": "text",
"content": "{\\"text\\":\\"" + content + "\\"}"
}
chatId_Get = requests.post(url=url, headers=headers, params=params, json=body)
self.messageId = chatId_Get.json()['data']['message_id']
def UrgentMessage(self, user_id_list):
url = FeiShu + "im/v1/messages/" + self.messageId + "/urgent_app"
headers = {
"Authorization": "Bearer " + str(self.Ttoken)
}
params = {
"user_id_type": "open_id"
}
body = {
"user_id_list": user_id_list
}
chatId_Get = requests.patch(url=url, headers=headers, params=params, json=body)
result = chatId_Get.json()["data"]["invalid_user_id_list"]
if len(result) == 0:
return "Success"
else:
return "Not Find " + str(result)
def send_UrgentMessage(appid, appSecret, callUser, chatname, sendContent):
"""
monai
:param appid: 应用id
:param appSecret: 应用密钥
:param callUser: 查询用户id依据列表,使用电话/邮件,例["12341234123","xxx@xx.xxx"]
:param chatname: 发送消息指定群聊
:param sendContent: 发送文本信息
:return:
"""
feishu = FS(appid, appSecret)
feishu.tokenGet()
email_list = list(filter(lambda x: re.match('.*@.*', x) != None, callUser))
phone_list = list(filter(lambda x: re.match('[0-9]{11}', x) != None, callUser))
feishu.userIdGet(moblies=phone_list, emails=email_list)
id_List = feishu.useId_list
useidList = list(map(lambda x: x["user_id"], id_List))
feishu.chatIdGet()
chatId_list = feishu.chatId_list
chatIdDict = dict(zip(map(lambda x: x["name"], chatId_list), map(lambda x: x["chat_id"], chatId_list)))
if chatname in chatIdDict.keys():
chat_id = chatIdDict[chatname]
feishu.sendMessage(chat_id, sendContent)
result = feishu.UrgentMessage(useidList)
return result
else:
return "该群聊不存在该机器人"我们直接调用send_UrgentMessage方法即可使用~

快来愉快的搭建使用吧