#include #include "cJSON.h" #include "lisa_log.h" #include "mcp.h" #define TAG "mcp_call_device" int voice_livekit_bridge_request_call(const char *to_id); static cJSON *call_device_list(const char *name) { cJSON *tool = mcp_tool_list_info_create_default(name, "发起设备通话"); if (!tool) { return NULL; } mcp_tool_info_add_property(tool, "toId", "目标设备号", "string", true); return tool; } static cJSON *call_device_call(const char *id, const char *name, cJSON *args) { (void)id; const cJSON *to_id_json = mcp_tool_call_args_get(args, "toId"); const char *to_id = cJSON_GetStringValue(to_id_json); int ret = -1; if (!to_id || to_id[0] == '\0') { LOGE("mcp call_device missing toId"); } else { LOGI("mcp call_device received toId=%s", to_id); ret = voice_livekit_bridge_request_call(to_id); } cJSON *result = mcp_tool_call_result_create(name); if (!result) { return NULL; } cJSON_AddStringToObject(result, "content", ret == 0 ? "呼叫已发起" : "呼叫发起失败"); cJSON_AddNumberToObject(result, "ret", ret); return result; } MCP_TOOL_DEFINE(ls.built_in.call_device, call_device_list, call_device_call);