feat(temi_mcp): 添加跳舞工具并修复卡片消息发送
为轮足机器人添加跳舞功能,包含新的 MCP 工具和服务器方法。同时修复 Lark MCP 中发送卡片消息时 person_id 处理的问题,避免在 person_id 为 None 时产生异常。更新两个包的版本号以反映变更。
This commit is contained in:
@@ -1618,8 +1618,9 @@ def send_card_message(token: str, receiver_id: str, person_id: str, image_key: s
|
|||||||
cst_now = utc_now + timedelta(hours=8)
|
cst_now = utc_now + timedelta(hours=8)
|
||||||
current_time = cst_now.strftime("%Y-%m-%d %H:%M:%S")
|
current_time = cst_now.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
|
||||||
if person_id:
|
normalized_person_id = str(person_id).strip() if person_id is not None else ""
|
||||||
person_content = f"<person id='{person_id}' show_name=true show_avatar=true style='normal'></person>"
|
if normalized_person_id:
|
||||||
|
person_content = f"<person id='{normalized_person_id}' show_name=true show_avatar=true style='normal'></person>"
|
||||||
else:
|
else:
|
||||||
person_content = "未知用户"
|
person_content = "未知用户"
|
||||||
|
|
||||||
@@ -1803,7 +1804,8 @@ async def handle_call_tool(name: str, arguments: Dict[str, object], token: str)
|
|||||||
elif name == "send_card_message":
|
elif name == "send_card_message":
|
||||||
image_key = str(arguments.get("image_key", "")).strip()
|
image_key = str(arguments.get("image_key", "")).strip()
|
||||||
receiver_id = str(arguments.get("receiver_id", "")).strip()
|
receiver_id = str(arguments.get("receiver_id", "")).strip()
|
||||||
person_id = str(arguments.get("person_id", "")).strip()
|
raw_person_id = arguments.get("person_id")
|
||||||
|
person_id = str(raw_person_id).strip() if raw_person_id is not None else ""
|
||||||
if not receiver_id:
|
if not receiver_id:
|
||||||
raise ValueError("missing receiver_id")
|
raise ValueError("missing receiver_id")
|
||||||
if not image_key:
|
if not image_key:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "lzwcai-lark-mcp"
|
name = "lzwcai-lark-mcp"
|
||||||
version = "0.1.13"
|
version = "0.1.15"
|
||||||
description = "Lark MCP server"
|
description = "Lark MCP server"
|
||||||
requires-python = ">=3.10"
|
requires-python = ">=3.10"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
|||||||
@@ -145,7 +145,16 @@ async def serve() -> None:
|
|||||||
},
|
},
|
||||||
"required": []
|
"required": []
|
||||||
}
|
}
|
||||||
)
|
),
|
||||||
|
Tool(
|
||||||
|
name="dance",
|
||||||
|
description="轮足机器人跳舞",
|
||||||
|
inputSchema={
|
||||||
|
"type": "object",
|
||||||
|
"properties": {},
|
||||||
|
"required": []
|
||||||
|
}
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
@server.call_tool()
|
@server.call_tool()
|
||||||
@@ -186,6 +195,8 @@ async def serve() -> None:
|
|||||||
)
|
)
|
||||||
elif name == "repose":
|
elif name == "repose":
|
||||||
result = await nav_server.repose()
|
result = await nav_server.repose()
|
||||||
|
elif name == "dance":
|
||||||
|
result = await nav_server.dance()
|
||||||
elif name == "patrol":
|
elif name == "patrol":
|
||||||
locations = arguments.get("locations", [])
|
locations = arguments.get("locations", [])
|
||||||
flag = arguments.get("flag", True if not locations else False)
|
flag = arguments.get("flag", True if not locations else False)
|
||||||
|
|||||||
@@ -117,9 +117,19 @@ class NavServer:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to call repose mcp-tool: {str(e)} ", exc_info=True)
|
logger.error(f"Failed to call repose mcp-tool: {str(e)} ", exc_info=True)
|
||||||
return f"Failed to call repose mcp-tool: {str(e)}"
|
return f"Failed to call repose mcp-tool: {str(e)}"
|
||||||
|
|
||||||
|
async def dance(self):
|
||||||
|
"""轮足机器人跳舞"""
|
||||||
|
try:
|
||||||
|
params = {}
|
||||||
|
return await self.pub_cmd("temi-test", "dance", params)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Failed to call dance mcp-tool: {str(e)} ", exc_info=True)
|
||||||
|
return f"Failed to call dance mcp-tool: {str(e)}"
|
||||||
|
|
||||||
|
|
||||||
async def patrol(self, locations: list = None, flag: bool = False):
|
async def patrol(self, locations: list = None, flag: bool = False):
|
||||||
"""轮足机器人巡逻 why !!! """
|
"""轮足机器人巡逻 """
|
||||||
try:
|
try:
|
||||||
params = {
|
params = {
|
||||||
"flag": True,
|
"flag": True,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "lzwcai_temi_mcp"
|
name = "lzwcai_temi_mcp"
|
||||||
version = "0.1.9"
|
version = "0.1.12"
|
||||||
description = "MQTT-based navigation server for robot"
|
description = "MQTT-based navigation server for robot"
|
||||||
requires-python = ">=3.10"
|
requires-python = ">=3.10"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
|||||||
Reference in New Issue
Block a user