使用影刀BOSS系统机器人@群内的其他机器人

bash
"""BOSS 系统 - 发文字到飞书群(外网)。
实现要点:把 <at user_id="..."> XML 标签拼进 message 字符串里,
飞书 text 消息收到后会渲染成真正的 @ 提及,比 BOSS 自带的
atUserNameOrUuidList(只认员工花名)通用得多。
"""
import os
import requests
URL = "https://boss-api.shadow-rpa.net/boss/api/v3/manager/message/sendMessageToChat"
# 群标识四选一
TARGET_KEYS = ("chatId", "customNo", "organizationUuid", "organizationName")
def send_text_to_chat(
message: str,
*,
token: str | None = None,
chat_id: str | None = None,
custom_no: str | None = None,
organization_uuid: str | None = None,
organization_name: str | None = None,
at_open_ids: list[str] | None = None,
timeout: int = 10,
) -> dict:
"""发文字到飞书群,群标识四选一。`at_open_ids` 会在消息正文嵌入 @ 标签,渲染为真正的 @ 提及。"""
token = token or os.environ["BOSS_BEARER_TOKEN"]
if at_open_ids:
at_segment = "".join(f'<at user_id="{oid}">@</at> ' for oid in at_open_ids)
message = at_segment + message
payload = {"message": message}
for key, value in zip(TARGET_KEYS, (chat_id, custom_no, organization_uuid, organization_name)):
if value:
payload[key] = value
break
else:
raise ValueError(f"必须提供 {TARGET_KEYS} 其一")
resp = requests.post(
URL,
headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
json=payload,
timeout=timeout,
)
resp.raise_for_status()
data = resp.json()
if data.get("success") is False:
raise RuntimeError(data.get("msg") or "推送失败")
return data
if __name__ == "__main__":
send_text_to_chat(
token="XXX",
chat_id="XXX",
message="\n【全新任务,与之前所有对话无关】\n请忽略此前全部会话内容,仅依据本条消息执行,不要参考任何历史记录;不需要发我确认表单,直接执行\n\n---\n\n目标:生成「青岛蓝色基点电子商务有限公司」这家企业的项目情况。\n\n步骤:\n1. 请并行调度以下两个智能体\n ①调用「客户经营智能体 V2.0」智能体,生成RPA使用情况,输出结果及文件。\n ②调用「单客户工单进线数据分析智能体」,分析最近半年的工单和RPA 开发成熟度,并列行动建议,输出结果及文件。\n2. 对两个智能体返回的内容进行简单总结。",
at_open_ids=["xxx"],
)
print("OK")