/**
 * @file function_call_menu.h
 * @brief FC 菜单参考实现：menu_switch 参数提取模式
 */

#ifndef AIAGENT_FUNCTION_CALL_MENU_H
#define AIAGENT_FUNCTION_CALL_MENU_H

#include <stddef.h>

#include "aiagent_engine.h"

#ifdef __cplusplus
extern "C" {
#endif

/* 音色预设：显示名与云端音色 ID 的对应关系 */
typedef struct {
    const char *name;   /* 音色显示名，用于语音指令匹配 */
    const char *vcn;    /* 云端音色 ID */
} function_call_menu_voice_t;

typedef struct {
    aiagent_engine_t                  engine;
    const char *const                *characters;
    size_t                            character_count;
    const function_call_menu_voice_t *voices;
    size_t                            voice_count;
} function_call_menu_cfg_t;

int  function_call_menu_init(const function_call_menu_cfg_t *cfg);

void function_call_menu_deinit(void);

/**
 * @brief 派发一次 Function Call
 * @return 0 已处理，-1 未匹配
 */
int  function_call_menu_dispatch(const char *session_id,
                                 const char *name,
                                 const char *params);

#ifdef __cplusplus
}
#endif

#endif /* AIAGENT_FUNCTION_CALL_MENU_H */
