1 概述

本文档主要介绍Win-SDK 接口函数(API),主要针对FAE,测试人员和客户使用 。

2 功能性接口

2.1 初始化接口

  • 程序启动

    接口:int echat_win_on_load(void *arg)
    参数:arg 配置文件路径
    返回:成功 0;失败 -1
    注意:程序启动时调用此接口,如果调用了echat_win_on_unload, 想再次启动程序,必须调用echat_win_on_load
    
  • 程序退出

    接口:void echat_win_on_unload()
    

2 .2 登录配置接口

  • 登录

    接口:int echat_win_login(const char* account, const char* password, int role)
    参数:account  账号
      password 密码
      role  用户角色 普通用户 0 ; 调度员 2
    返回:成功 0;失败 -1
    
  • 使用配置文件中的账号信息登录

    接口:int echat_win_loginWithSaved()
    返回:成功 0;失败 -1
    
  • 注销

    接口:int echat_win_logout()
    返回:0
    
  • 配置文件是否存有账号配置

    接口:boolean echat_win_hasAccount()
    返回:有 True;无 False
    
  • 从配置文件获取账号配置信息

    接口:int echat_win_getSavedAccount(char*account,const char* password,int*role)
    参数:account  用于保存账号(必须分配内存)
      password  用于保存密码(必须分配内存)
      role  用于保存角色(必须分配内存)
    返回:成功 0;失败 -1
    
  • 保存账号配置

    接口:int echat_win_saveAccount(const char* account, const char* password, int role)
    参数:account  账号
      password 密码
      role  用户角色 普通用户 0 ; 调度员 2
    返回:成功 0;失败 -1
    
  • 清空账号配置

    接口:int echat_win_clearAccount()
    返回:0
    
  • 获取登录状态

    接口:ECHAT_ONLINE_STATUS echat_win_getOnlineStatus()
    返回:未知 0;不在线 1;登录中  2;在线  3
    

2.3 对讲接口

  • 开始讲话

    接口:int echat_win_startSpeak()
    返回:成功 0;失败 -1
    
  • 停止讲话

    接口:int echat_win_stopSpeak()
    返回:成功 0;失败 -1
    
  • 获取当前用户的讲话状态

    接口:boolean echat_win_isSpeaking()
    返回:正在讲话 True;其它 False
    
  • 是否有人在讲话

    接口:boolean echat_win_isListening()
    返回:有人讲话 True;其它 False
    
  • 获取正在播放声音的人的user信息

    接口:int echat_win_getPlayingSoundUser(win_user_t* user)
    参数:user  用于存放用户信息(必须分配内存)
    返回:成功 0;失败 -1
    
  • 获取正在讲话的人的个数

    接口:size_t echat_win_getSpeakingUsersSize()
    返回:正在讲话人的个数
    注意:监听时使用
    
  • 获取正在讲话的人的user信息

    接口:int echat_win_getSpeakingUsers(win_user_t* user, size_t size)
    参数:user  用于存放用户信息(必须分配内存)
      size  用户个数
    返回:成功  0;失败 -1;参数错误 -3
    注意:监听时使用
    

2.4 群组操作接口

  • 加入群组

    接口:int echat_win_joinGroup( gid_t gid)
    参数:gid  群组ID
    返回:成功 0;失败 -1
    
  • 离开当前群组

    接口:int echat_win_leaveGroup()
    返回:成功 0;失败 -1
    
  • 获取当前群组ID

    接口:gid_t echat_win_getCurrentGroup()
    返回:成功 群组ID;失败 0
    
  • 获取群组的个数

    接口:size_t echat_win_getGroupSize()
    返回:群组个数
    
  • 获取群组列表

    接口:int  echat_win_getGroupList(win_group_t* group,size_t size)
    参数:group  用于存放群组数据(必须分配内存)
      size  群组的个数
    返回:成功  获取群组的个数;错误  -1;内存不足  -2;参数错误  -3
    
  • 通过群组ID获取群组信息

    接口:int echat_win_getGroupByGid(win_group_t* group, gid_t gid)
    参数:group  用于存放群组信息(必须分配内存)
      gid  群组ID
    返回:成功 0;失败 -1
    
  • 建立临时群组

    接口:int echat_win_Call(const uid_t* uids,size_t size)
    参数:uids  用户ID列表
      size  用户ID个数
    返回:成功 0;失败 -1
    

2.5 用户操作接口

  • 修改用户名

    接口:int echat_win_changeName(const char* name)
    参数:name  新用户名
    返回:成功 0;失败 -1
    
  • 修改密码

    接口:int echat_win_changePassword(const char* oldpassword,const char* newpassword)
    参数:oldpassword  旧密码
      newpassword  新密码
    返回:成功 0;失败 -1
    
  • 获取当前用户ID

    接口:uid_t echat_win_getUid()
    返回:成功 用户ID;失败 0
    
  • 获取当前用户名

    接口:int echat_win_getName(char* name)
    参数:name  用于存放用户名(必须分配内存)
    返回:0
    
  • 查询用户是否被遥闭

    接口:boolean echat_win_hasAudioEnabled()
    返回:遥开 True;遥闭 False
    
  • 通过群组ID获取群组成员个数

    接口:size_t echat_win_getMemberSize(gid_t gid)
    参数:gid  群组ID
    返回:成员个数; 参数错误 -2
    
  • 获取群组成员列表

    接口:int echat_win_getMemberList(win_member_t* member, size_t size, gid_t gid)
    参数:member  用于存放成员数据(必须分配内存)
      size  成员的个数
      gid  群组ID
    返回:成功  获取成员的个数;错误  -1;内存不足  -2;参数错误  -3
    
  • 通过用户ID获取用户信息

    接口:int echat_win_getUser(win_user_t* user,uid_t uid)
    参数:user  用于存放用户信息(必须分配内存)
      uid  用户ID
    返回:成功 获取的用户信息个数;失败 -1;参数错误  -2
    
  • 通过用户ID列表获取多个用户信息

    接口:int echat_win_getUsers(win_user_t* user, uid_t* uids, size_t size)
    参数:user  用于存放用户信息(必须分配内存)
      uids  用户ID列表
      size  用户个数
    返回:成功 获取的用户信息个数;失败 -1;参数错误  -2
    
  • 获取所有用户个数

    接口:int echat_win_getAllUserSize()
    返回:用户个数
    
  • 获取所有用户ID

    接口:int echat_win_getAllUsersId(uid_t* uids, size_t size)
    参数:uids  用于存放用户ID列表(必须分配内存)
      size  用户个数
    返回:成功  获取的用户信息个数;失败 -1;参数错误 -2
    
  • 获取当前用户信息

    接口:int echat_win_getCurrentUser(win_user_t* user)
    参数:user  用于存放用户列表信息(必须分配内存)
    返回:成功 0;失败 -1
    

2.6 监听接口

  • 开始监听某个群组

    接口:int echat_win_startWatchGroup(gid_t gid)
    参数:gid  群组ID
    返回:成功 0;失败 -1
    
  • 停止监听某个群组

    接口:int echat_win_stopWatchGroup(gid_t gid)
    参数:gid  群组ID
    返回:成功 0;失败 -1
    
  • 获取已监听群组信息

    接口:int echat_win_getWatchGroups(win_group_t*watch_groups,size_t size)
    参数:watch_groups  存放监听群组的信息(必须分配内存)
      size  群组个数
    返回:成功  0;失败 -1;参数错误 -3
    

2.7 广播操作接口

  • 发送文字广播

    接口:int echat_win_broadcast_send_text(char* text,uid_t* uids,size_t size)
    参数:text  文字字符串
      uids  发给用户的ID列表
      size  用户个数
    返回:成功 0;失败 -1
    
  • 录制待广播的语音数据

    接口:int echat_win_broadcast_start_record()
    返回:成功 0;失败 -1
    
  • 停止录制待广播的语音数据

    接口:int echat_win_broadcast_stop_record()
    返回:成功 0;失败 -1
    
  • 播放已录制的待播放语音数据

    接口:int echat_win_broadcast_play_recordaudio(win_pfn_broadcast_play_async_stop pfn)
    参数:pfn  发送已录制的语音广播数据
    返回:成功 0;失败 -1
    
  • 发送已录制的语音广播数据

    接口:int echat_win_broadcast_send_recordaudio(uid_t* uids,size_t size)
    参数:uids  发给用户的ID列表
      size  用户个数
    返回:成功 0;失败 -1
    

2.8 调度操作接口

  • 临时加入组

    接口:int echat_win_schedule_temp_join_group(gid_t gid, uid_t* uids,size_t size)
    参数:gid  要加入的群组ID
      uids  用户ID列表
      size  用户个数
    返回:成功 0;失败 -1
    
  • 临时移除组

    接口:int echat_win_schedule_temp_leave_group(gid_t gid, uid_t* uids,size_t size)
    参数:gid  要加入群组ID(为0表示移出组)
      uids  用户ID列表
      size  用户个数
    返回:成功 0;失败 -1
    
  • 遥开摇闭

    接口:int echat_win_schedule_audioenable(uid_t* uids,size_t size, boolean audioenabled)
    参数:uids  用户ID列表
      size  用户个数
      audioenabled  遥开 True  摇闭  False
    返回:成功 0;失败 -1
    
  • 强拉,拉到调度员所在的群组

    接口:int echat_win_schedule_force_dispatch(uid_t* uids,size_t size)
    参数:uids  用户ID列表
      size  用户个数
    返回:成功 0;失败 -1
    
  • 强拆

    接口:int echat_win_schedule_takemic(uid_t* uids,size_t size)
    参数:uids  用户ID列表
      size  用户个数
    返回:成功 0;失败 -1
    
  • 开启/关闭定位

    接口:int echat_win_schedule_switch_location(uid_t* uids, size_t size, boolean enable, uint32_t period)
    参数:auids  用户ID列表
      size  用户个数
      enable  打开 True  关闭  False
      period  上报速度 (30~300s)
    返回:成功 0;失败 -1
    

2.9 本地录音操作接口

  • 本地录音开关

    接口:int echat_win_record_set_enabled(boolean record_enabled,char* pathDir)
    参数:record_enabled  打开 True   关闭 False
      pathDir  保存路径,例如:“D:/record_file”
    返回:成功 0;失败 -1
    注意:录音时自动保存在该路径,生成文件名是:时间+GID+UID.evrc
    
  • 本地录音播放

    接口:int echat_win_record_play_audio(char* path)
    参数:path  路径及文件名,例如:“D:/record_file/时间+GID+UID.evrc”
    返回:成功 0;失败 -1
    注意:播放已录音的文件,需要路径及文件名
    

3 消息通知回调接口

  • 设置在线状态回调

    接口:int echat_win_set_online_status_cb(win_pfn_notify_online_status cb)
    参数:cb 在线状态变化时通知函数
    返回:成功 0;失败 -1
    注意:当前用户上线或下线时触发通知在线状态
    
  • 设置消息通知回调

    接口:int echat_win_set_message_cb(win_pfn_notify_message cb)
    参数:cb 对外通知消息函数
    返回:成功 0;失败 -1
    注意:暂不可用
    
  • 设置错误消息回调

    接口:int echat_win_set_error_cb(win_pfn_notify_error cb)
    参数:cb错误消息通知函数
    返回:成功 0;失败 -1
    注意:有操作错误或异常错误触发通知错误信息(见 3 错误信息标识)
    
  • 设置遥开摇闭通知回调

    接口:int echat_win_set_audio_enabled_cb(win_pfn_notify_audio_enable cb)
    参数:cb被遥开、摇闭时回调函数
    返回:成功 0;失败 -1
    注意:当被遥开或摇闭时触发,通知当前状态
    
  • 设置修改用户名回调

    接口:int echat_win_set_change_name_cb(win_pfn_notify_change_name cb)
    参数:cb  用户名修改通知函数
    返回:成功 0;失败 -1
    注意:主动修改用户名时触发,通知结果
    
  • 设置修改密码回调

    接口:int echat_win_set_change_password_cb(win_pfn_notify_change_password cb)
    参数:cb密码修改通知函数
    返回:成功 0;失败 -1
    注意:主动修改用户密码时触发,通知结果
    
  • 设置用户列表回调

    接口:int echat_win_set_memberlist_cb(win_pfn_notify_memberlist cb)
    参数:cb 通知用户列表函数
    返回:成功 0;失败 -1
    注意:请求用户信息时,用户信息从服务器返回后触发,通知用户信息已更新
    
  • 设置成员改变回调

    接口:int echat_win_set_member_changed_cb(win_pfn_notify_members_changed cb)
    参数:cb 成员改变时通知函数
    返回:成功 0;失败 -1
    注意:当有成员信息改变时,通知改变结果(进组、离组等)
    
  • 设置用户角色改变回调

    接口:int echat_win_set_roles_changed_cb(win_pfn_notify_members_changed cb)
    参数:cb  用户角色改变时通知函数
    返回:成功 0;失败 -1
    注意:暂不可用
    
  • 设置群组列表回调

    接口:echat_win_set_grouplist_cb(win_pfn_notify_grouplist cb)
    参数:cb 通知群组列表时函数
    返回:成功 0;失败 -1
    注意:主动请求群组或群组改变时触发,通知群组列表信息(群组改变:进入群组、调度当前群组、群组列表改变时)
    
  • 设置用户开始讲话回调

    接口:int echat_win_set_user_start_speak_cb(win_pfn_notify_user_start_speak cb)
    参数:cb 用户开始讲话时通知函数
    返回:成功 0;失败 -1
    注意:其它成员开始讲话时触发,通知群组ID和讲话人ID
    
  • 设置用户停止讲话回调

    接口:int echat_win_set_user_stop_speak_cb(win_pfn_notify_user_stop_speak cb)
    参数:cb 用户停止讲话时通知函数
    返回:成功 0;失败 -1
    注意:其它成员结束讲话时触发,通知群组ID和讲话人ID
    
  • 设置开始讲话回调

    接口:int echat_win_set_start_speak_cb(win_pfn_notify_start_speak cb)
    参数:cb 开始讲话时通知函数
    返回:成功 0;失败 -1
    注意:自己开始讲话时触发,通知(0,0)
    
  • 设置停止讲话回调

    接口:int echat_win_set_stop_speak_cb(win_pfn_notify_stop_speak cb)
    参数:cb 停止讲话时通知函数
    返回:成功 0;失败 -1
    注意:自己结束讲话时触发,结束讲话包含:主动结束(通知0,0)、被摘MIC和获取MIC失败(通知群组ID和当前用户ID)等
    
  • 设置当前群组回调

    接口:int echat_win_set_current_group_cb(win_pfn_notify_current_group cb)
    参数:cb 当前群组通知函数
    返回:成功 0;失败 -1
    注意:当前群组变化时触发,当前群组变化包含:进组失败(通知0,0)、主动进组和调度进组(通知当前群组ID和0)
    
  • 设置用户改变回调

    接口:int echat_win_set_users_changed_cb(win_pfn_notify_users_changed cb)
    参数:cb 用户信息改变时通知函数
    返回:成功 0;失败 -1
    注意:当用户信息改变时触发,通知用户的信息,包含:用户角色、上下线、遥开摇闭、定位信息等
    
  • 设置监听群组回调

    接口:int echat_win_set_watchgrouplist_cb(win_pfn_notify_watchgrouplist cb)
    参数:cb 监听群组时通知函数
    返回:成功 0;失败 -1
    注意:当设置了监听群组时触发,登录时有默认监听群组或配置监听群组
    
  • 设置开始播放回调

    接口:int echat_win_set_start_playing_cb(win_pfn_notify_start_playing_sound cb)
    参数:cb 开始播放时通知函数
    返回:成功 0;失败 -1
    注意:其它成员开始讲话,自己开始播放音频时触发,通知群组ID和讲话人ID
    
  • 设置停止播放回调

    接口:int echat_win_set_stop_playing_cb(win_pfn_notify_stop_playing_sound cb)
    参数:cb 停止播放时通知函数
    返回:成功 0;失败 -1
    注意:当其它成员结束讲话,自己停止播放音频时触发,通知群组ID和讲话人ID
    
  • 设置调度回调

    接口:int echat_win_set_dispatcher_cb(win_pfn_notify_dispatcher cb)
    参数:cb 调度时通知函数
    返回:成功 0;失败 -1
    注意:当有调度(强拉/临时加入组/移除组)时触发,通知被调度的群组ID、用户ID列表
    
  • 设置强拆回调

    接口:int echat_win_set_take_mic_cb(win_pfn_notify_takemic cb)
    参数:cb 调度员拆掉用户MIC通知函数
    返回:成功 0;失败 -1
    注意:暂不可用
    
  • 设置开始录音回调

    接口:int echat_win_set_start_record_cb(win_pfn_notify_start_recordfile cb)
    参数:cb 获取MCI通知函数
    返回:成功 0;失败 -1
    注意:开始录音时触发,通知群组ID、讲话人ID和录音参数(文件名、当前时间、状态(成功/失败))
    
  • 设置录音结束回调

    接口:int echat_win_set_finish_record_cb(win_pfn_notify_end_recordfile cb)
    参数:cb 录音结束通知函数
    返回:成功 0;失败 -1
    注意:有停止录音时触发,通知群组ID、讲话人ID和录音参数(文件名、当前时间、状态(成功/失败))
    
  • 设置发送录音回调

    接口:int echat_win_set_send_cb(win_pfn_notify_send_callback cb)
    参数:cb 发送通知函数
    返回:成功 0;失败 -1
    注意:发送录音,服务器返回时触发,通知发送结果(成功  True;失败  False)
    
  • 设置播放录音文件结束回调

    接口:int echat_win_set_play_recordfile_end_cb(win_pfn_notify_play_recordfile_end cb)
    参数:cb 播放录音文件结束通知函数
    返回:成功 0;失败 -1
    注意:本地录音结束时触发,通知
    
  • 设置遥开摇闭回调

    接口:int echat_win_set_audio_enabledcall_cb(win_pfn_audio_enabled_callback cb)
    参数:cb 管理员设置用户的遥开摇闭时的通知函数
    返回:成功 0;失败 -1
    注意:管理员设置用户的遥开摇闭服务器返回时触发,通知结果(成功  True;失败  False)、状态(遥开 1;摇闭 0)、被摇闭的用户ID列表
    
  • 设置定位开启关闭回调

    接口:int echat_win_set_switch_location_cb(win_pfn_switch_location cb)
    参数:cb 管理员设置用户定位时的通知函数
    返回:成功 0;失败 -1
    注意:管理员设置用户定位服务器返回时触发,通知结果(成功  True;失败  False)、状态(开启 1;关闭 0)、被打开的用户ID列表
    
  • 设置多媒体消息回调

    接口:int echat_win_setmultimedia_message_cb(win_pfn_multimedia_message cb)
    参数:cb 收到多媒体消息的通知函数
    返回:成功 0;失败 -1
    注意:当服务器推送多媒体消息时触发,通知收到的消息
    

4 错误信息标识

ECHAT_ERR_ACCOUNT_ERROR             -1      //帐号密码错误
ECHAT_ERR_ACCOUNT_OUTSERVICE        -2      //帐号已欠费或已超出服务期
ECHAT_ERR_ACCOUNT_NOEXIST           -3      //帐号不存在
ECHAT_ERR_INVALID_LOGIN_PRIVILEGE   -4      //无效的帐号登录权限
ECHAT_ERR_ACCOUNT_NOCONFIG          -5      //没有配置帐号信息

ECHAT_ERR_KICKOUT                   -10     //帐号已在其他位置登录
ECHAT_ERR_LOGIN_TIMEOUT             -11     //帐号登录超时
ECHAT_ERR_LOGOUT                    -12     //帐号已注销

ECHAT_ERR_NETWORK_DISCONNECT        -20     //网络连接失败
ECHAT_ERR_NETWORK_RECONECTING       -21     //网络正在重连
ECHAT_ERR_CANNOT_CONNECT            -22     //无法连接服务器
ECHAT_ERR_NETWORK_CONECTING         -23     //正在连接服务器

ECHAT_ERR_JOIN_GROUP_FAILED         -30     //加入群组失败
ECHAT_ERR_JOIN_GROUP_TIMEOUT        -31     //加入群组请求超时

ECHAT_ERR_REQMIC_REFUSED            -40     //抢麦被拒绝
ECHAT_ERR_REQMIC_REPEATEDLY         -41     //短暂时间内多次抢麦,不允许
ECHAT_ERR_REQMIC_IN_AUDIOENABLE     -42     //遥闭状态抢麦,不允许
ECHAT_ERR_REQMIC_IN_ERR_SSTATE      -43     //内部会话状态错误
ECHAT_ERR_REQMIC_NO_AUDIOFOCUS      -44     //抢麦时申请音频焦点失败
ECHAT_ERR_REQMIC_IN_LOW_ROLE        -45     //以较低的角色值抢麦
ECHAT_ERR_REQMIC_TIMEOUT            -46     //接收抢麦回应超时

ECHAT_ERR_RECORD_DEVICE             -50     //打开录音设备失败

5 常用枚举定义

6 结构类型定义