Files
arcs/apps/arcs-mini/mcp-tools/mcp_tool_call_device.c
2026-08-13 16:50:52 +08:00

50 lines
1.2 KiB
C

#include <string.h>
#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);