/// <summary> /// 注册机器人变更广播通知 /// </summary> /// <param name="cb"></param> /// <param name="data"></param> public static void RegRobotChangedCb(RobotChangedCallback cb, object data = null) { NimUtility.DelegateBaton <RobotChangedCallback> baton = new NimUtility.DelegateBaton <RobotChangedCallback>(); baton.Data = data; baton.Action = cb; var ptr = baton.ToIntPtr(); RobotNativeMethods.nim_robot_reg_changed_callback(null, RobotChangedCbFunc, ptr); }
/// <summary> /// 获取指定机器人信息(同步接口,堵塞NIM内部线程) /// </summary> /// <param name="accid"></param> /// <returns></returns> public static RobotInfo QueryRobotByAccid(string accid) { RobotInfo robot = null; var ptr = RobotNativeMethods.nim_robot_query_robot_by_accid_block(accid, null); var obj = NimUtility.Utf8StringMarshaler.GetInstance(null).MarshalNativeToManaged(ptr); var result = obj as string; if (!string.IsNullOrEmpty(result)) { robot = NimUtility.Json.JsonParser.Deserialize <RobotInfo>(result); } return(robot); }
/// <summary> /// 获取全部机器人信息(同步接口,堵塞NIM内部线程) /// </summary> /// <returns></returns> public static List <RobotInfo> QueryAllRobots() { List <RobotInfo> robots = null; var ptr = RobotNativeMethods.nim_robot_query_all_robots_block(null); var obj = NimUtility.Utf8StringMarshaler.GetInstance(null).MarshalNativeToManaged(ptr); var result = obj as string; if (!string.IsNullOrEmpty(result)) { var list = NimUtility.Json.JsonParser.Deserialize <List <string> >(result); if (list != null && list.Any()) { robots = new List <RobotInfo>(); foreach (var jstr in list) { var robot = RobotInfo.Deserialize(jstr); robots.Add(robot); } } } return(robots); }
/// <summary> /// 获取全部机器人信息 /// </summary> /// <param name="timetag">时间戳</param> /// <param name="cb"></param> public static void GetRobots(long timetag, GetRobotsDelegate cb) { var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb); RobotNativeMethods.nim_robot_get_robots_async(timetag, null, _getRobotsCallback, ptr); }