Files
lzwcai-mcp/lzwcai_lark_mcp/test.py
tanjianbin 894ee1dfbf feat(lark_mcp): 更新飞书卡片消息发送工具以支持单接收者
- 将send_card_message工具从接收ID列表改为单个接收者ID
- 修复test.py中导入并调用send_card_message的测试逻辑
- 新增机器人充电、终止任务、通知播放功能
- 扩展迎宾和巡逻功能参数,提供默认值和更灵活的配置
- 更新项目版本号至0.1.13和0.1.9
2026-03-19 10:32:09 +08:00

86 lines
2.9 KiB
Python

import json
import os
import sys
import types
from pathlib import Path
import requests
def main() -> None:
if not os.getenv("app_id") or not os.getenv("app_secret"):
config_path = Path(__file__).with_name("mcp-server.json")
if config_path.exists():
config_data = json.loads(config_path.read_text(encoding="utf-8"))
servers = config_data.get("mcpServers", {})
env_data = (
servers.get("lzwcai-lark-mcp", {}).get("env", {})
or servers.get("lzwcai-mcpskills-lark-mcp", {}).get("env", {})
)
if env_data.get("app_id") and env_data.get("app_secret"):
os.environ["app_id"] = env_data["app_id"]
os.environ["app_secret"] = env_data["app_secret"]
if not os.getenv("app_id") or not os.getenv("app_secret"):
raise RuntimeError("missing app_id or app_secret")
if "mcp" not in sys.modules:
mcp_module = types.ModuleType("mcp")
types_module = types.ModuleType("mcp.types")
class Tool:
def __init__(self, *args, **kwargs):
pass
class TextContent:
def __init__(self, *args, **kwargs):
pass
types_module.Tool = Tool
types_module.TextContent = TextContent
mcp_module.types = types_module
sys.modules["mcp"] = mcp_module
sys.modules["mcp.types"] = types_module
from lzwcai_lark_mcp.tools import send_card_message, send_stranger_card
app_id = os.getenv("app_id", "")
app_secret = os.getenv("app_secret", "")
auth_url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
response = requests.post(
auth_url,
json={"app_id": app_id, "app_secret": app_secret},
headers={"Content-Type": "application/json"},
timeout=10
)
response.raise_for_status()
data = response.json()
if data.get("code") not in (0, None):
raise RuntimeError(f"lark auth failed: {data}")
token = data.get("tenant_access_token", "")
if not token:
raise RuntimeError(f"lark auth response missing token: {data}")
user_id = "gegg1d78"
receiver_id = os.getenv("receiver_id", user_id)
person_id = os.getenv("person_id", "")
image_key = os.getenv("image_key", "").strip()
if not image_key:
raise RuntimeError("missing image_key")
card_message_id = send_card_message(
token,
receiver_id,
person_id,
image_key
)
print(card_message_id)
result = send_stranger_card(
token,
user_id,
"CONF-20260301-001",
"2026-03-01 10:30:00",
[
{"华为手机": "huawei_phone"},
{"红米手机": "redmi_phone"}
],
face_cap="img_v3_02vj_b25b040f-b6c1-49f4-a29d-a02c99a13a9g",
user_ids=["347f5e71", "gegg1d78"],
remark="如有误报请点击反馈"
)
print(result)
if __name__ == "__main__":
main()