50 lines
1.2 KiB
C
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);
|