public ConversationCommand Generate(AVIMConversation conversation) { var attr = conversation.EncodeAttributes(); var cmd = new ConversationCommand().Attr(attr) .Members(conversation.MemberIds).Transient(conversation.IsTransient); return cmd; }
public Task TestCase() { return(AVRealtime.Instance.CreateClient("junwu").ContinueWith(t => { var client = t.Result; var conversation = AVIMConversation.CreateWithoutData("", t.Result); return t.Result.SendMessageAsync(conversation, new AVIMTextMessage("haha"), options: new AVIMSendOptions()); })); }
public Task <AVIMConversation> GetTestConversation(string clientId, string convId) { return(GetClient(clientId).ContinueWith(t => { MyWebSocketClient.ClientInstance = t.Result; var conversation = AVIMConversation.CreateWithoutData(convId, MyWebSocketClient.ClientInstance); return conversation; })); }
public Conversation() { InitializeComponent(); DataContext = App.ViewModel.SelectedConversationVM; conversation = App.ViewModel.SelectedConversationVM.AVConversation; messages = App.ViewModel.SelectedConversationVM.Messages; conversation.OnMessageReceived += AVConversation_OnMessageRecieved; conversation.OnTextMessageReceived += conversation_OnTextMessageReceived; conversation.OnImageMessageReceived += conversation_OnImageMessageReceived; }
public ConversationCommand Generate(AVIMConversation conversation) { var attr = conversation.EncodeAttributes(); var cmd = new ConversationCommand() .ConversationId(conversation.ConversationId) .Attr(attr) .Members(conversation.MemberIds). Transient(conversation.IsTransient); return(cmd); }
public void QueryMessageBeforeMessageIdTest() { this.realtime.CreateClientAsync("1001").ContinueWith(t => { client = t.Result; var conv = AVIMConversation.CreateWithoutData("5b1a40295b90c830ff7f2ec7", client); return(client.QueryMessageAsync(conv, "h3tXZM3rQa+goG7N6_DaKg")); }).Unwrap().ContinueWith(s => { var messages = s.Result; }).Wait(); }
public void Conversation_Join() { AVClient.Initialize("uay57kigwe0b6f5n0e1d4z4xhydsml3dor24bzwvzr57wdap", "kfgz7jjfsk55r5a8a3y4ttd3je1ko11bkibcikonk32oozww"); var client = new AVIMClient("John"); client.UseLeanEngineSignatureFactory(); client.ConnectAsync().ContinueWith(_ => { AVIMConversation consersation = AVIMConversation.CreateWithoutData("575e88521532bc0060995d32", client); consersation.JoinAsync().Wait(); }).Wait(); }
public async Task <IEnumerable <AVIMConversation> > LoadAllConversationsInTeamAsync(string teamId = null, Team team = null) { var wrappedTeam = wrapTeam(teamId, team); var query = new AVQuery <AVObject>("_Conversation") .WhereEqualTo("team", wrappedTeam).Limit(300); var result = await query.FindAsync(); return(result.Select(x => { return AVIMConversation.CreateWithData(x, client); })); }
private async void lls_contacts_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (lls_contacts.SelectedItem == null) { return; } var contact = e.AddedItems[0] as DemoContact; //选择的联系人 var conversations = await App.ViewModel.CurrentClient.GetQuery().WhereContains("m", contact.UserId).FindAsync(); //查询之前是否有过对话 AVIMConversation conversation = null; if (conversations.Count() > 0) { conversation = conversations.FirstOrDefault();//如果有就不用创建新的。 } else { conversation = await App.ViewModel.CurrentClient.CreateConversationAsync(contact.UserId, "xxxx", new Dictionary <string, object>() { { "type", "private" } });//创建新的对话,并且加上自定义的属性标识它为一个 私有的对话(私聊) } var existVMs = App.ViewModel.ConversationsListVM.Where(t => { if (t.AVConversation == null) { return(false); } return(t.AVConversation.ConversationId == conversation.ConversationId); } ); ConversationViewModel existVM = null; if (existVMs.Count() == 0) { existVM = new ConversationViewModel() { AVConversation = conversation }; App.ViewModel.ConversationsListVM.Add(existVM); } else { existVM = existVMs.FirstOrDefault(); } App.ViewModel.SelectedConversationVM = existVM; lls_contacts.SelectedItem = null; NavigationService.Navigate(new Uri("/Conversation.xaml", UriKind.RelativeOrAbsolute)); }
private void lbx_conversations_SelectedIndexChanged(object sender, EventArgs e) { var selection = (AVIMConversation)lbx_conversations.SelectedItem; currentConversation = selection; membersInConversation = new BindingList <string>(selection.MemberIds); lbx_members.DataSource = membersInConversation; if (!historyDictionary.ContainsKey(selection.ConversationId)) { historyDictionary.Add(selection.ConversationId, new BindingList <string>()); } lbx_history.DataSource = historyDictionary[selection.ConversationId]; Log("当前选择对话为: " + selection.Name + ",对话最后更新的时间为:" + selection.UpdatedAt.Value.ToShortTimeString()); }
private async void btn_join_Click(object sender, EventArgs e) { var convId = this.txb_convId.Text.Trim(); this.conversation = await client.GetConversationAsync(convId, true); await client.JoinAsync(this.conversation); //AVIMClient avIMClient = await realtime.CreateClientAsync("junwu"); //avIMClient.OnMessageReceived += Client_OnMessageReceived; //AVIMConversation avIMConversation = await avIMClient.GetConversationAsync("5940e71b8fd9c5cf89fb91b7", true); //if (avIMConversation != null) //{ // await avIMConversation.JoinAsync(); //} }
public ConversationSessionViewModel(AVIMConversation conversation) : this() { this.ConversationInSession = conversation; Name = this.ConversationInSession.Name; conversation.CurrentClient.OnMessageReceived += CurrentClient_OnMessageReceived; conversation.CurrentClient.OnMembersJoined += CurrentClient_OnMembersJoined; conversation.CurrentClient.OnInvited += CurrentClient_OnInvited; MessageQueue = new SnackbarMessageQueue(); }
//好友操作事件监听(好友邀请反馈事件:拒绝) private void OnMembersLeft(object sender, AVIMOnMembersLeftEventArgs e) { //排除自身引发的事件 if (e.LeftMembers.First() != AVUser.CurrentUser.ObjectId) { App.Current.Dispatcher.Invoke((Action)(async() => { AVIMConversation LeftConversation = await User.GetConversationAsync(e.ConversationId); AVUser LeftUser = await AVUser.Query.GetAsync(e.LeftMembers.First()); //好友邀请反馈事件:拒绝 if (LeftConversation.IsUnique) { new Tip("提醒", LeftUser.Username + "拒绝了您的好友请求"); } })); } }
public ConversationCommand Generate(AVIMConversation conversation) { var attr = conversation.EncodeAttributes(); var cmd = new ConversationCommand() .ConversationId(conversation.ConversationId) .Attr(attr) .Members(conversation.MemberIds) .Transient(conversation.IsTransient) .Temporary(conversation.IsTemporary); if (conversation.IsTemporary) { var ttl = (conversation.expiredAt.Value - DateTime.Now).TotalSeconds; cmd = cmd.TempConvTTL(ttl); } return(cmd); }
private async void btn_create_Click(object sender, EventArgs e) { //var isTransient = ckb_isTransient.Checked; //conversation = await client.CreateConversationAsync(txb_friend.Text.Trim()); conversation = AVIMConversation.CreateWithoutData(txb_convId.Text.Trim(), this.client); var messageInterator = conversation.GetMessagePager(); var lastestMessages = await messageInterator.PreviousAsync(); BindMessagesToUI(lastestMessages); //var lastestMessages2 = await messageInterator.PreviousAsync(); //BindMessagesToUI(lastestMessages2); //messageInterator.From = DateTime.Now.AddDays(-1); //var afterMessages = await messageInterator.NextAsync(); //BindMessagesToUI(afterMessages); //var afterMessages2 = await messageInterator.NextAsync(); //BindMessagesToUI(afterMessages2); }
Task <AVIMConversation> GetTestConversation(string clientId, string convId) { Func <Task <AVIMClient> > getClient = () => { if (MyWebSocketClient.ClientInstance != null) { return(Task.FromResult <AVIMClient>(MyWebSocketClient.ClientInstance)); } return(AVRealtime.Instance.CreateClient(clientId)); }; return(getClient().ContinueWith(t => { MyWebSocketClient.ClientInstance = t.Result; var conversation = AVIMConversation.CreateWithoutData(convId, MyWebSocketClient.ClientInstance); return conversation; })); }
public void Create_Conversation() { AVClient.Initialize("uay57kigwe0b6f5n0e1d4z4xhydsml3dor24bzwvzr57wdap", "kfgz7jjfsk55r5a8a3y4ttd3je1ko11bkibcikonk32oozww"); var client = new AVIMClient("Tom"); client.UseLeanEngineSignatureFactory(); AVIMConversation convseation = new AVIMConversation() { Name = "xman", IsTransient = false, }; convseation.MemberIds = new List <string>(); convseation.MemberIds.Add("Jerry"); client.ConnectAsync().ContinueWith(_ => { client.CreateConversationAsync(convseation, true).Wait(); }).Wait(); }
//右键快捷菜单“删除好友” private void ContextMenuDelete_Click(object sender, RoutedEventArgs e) { App.Current.Dispatcher.Invoke((Action)(async() => { UserList friend = MyFriendsList[friendlist.SelectedIndex]; if (MessageBox.Show("确定要删除" + friend.Name + "吗", "警告", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { //移除listitem,再重新绑定listitemsource MyFriendsList.RemoveAt(friendlist.SelectedIndex); friendlist.ItemsSource = null; friendlist.ItemsSource = MyFriendsList; new Tip("提示", "已成功解除与" + friend.Name + "的好友关系", 3).Show(); //将对方踢出自己的FriendsConversation,对方触发onkick事件 await User.KickAsync(FriendsConversation, member: friend.Friend.ObjectId); //再将双方单独的_Conversation删除 try { List <string> members = new List <string>(); members.Add(AVUser.CurrentUser.ObjectId); members.Add(friend.Friend.ObjectId); await(await AVObject.GetQuery("_Conversation").WhereEqualTo("m", members).FirstAsync()).DeleteAsync(); } catch { try { List <string> members = new List <string>(); members.Add(friend.Friend.ObjectId); members.Add(AVUser.CurrentUser.ObjectId); await(await AVObject.GetQuery("_Conversation").WhereEqualTo("m", members).FirstAsync()).DeleteAsync(); } catch { MessageBox.Show("你早就被人家拉黑了"); } } //重新获取FriendsConversation FriendsConversation = await User.GetConversationAsync(AVUser.CurrentUser.Get <string>("Friends")); } })); }
public void JoinLobby() { _avRealtime.CreateClientAsync(UserInfo.User).ContinueWith(t => _client = t.Result).ContinueWith(s => { _client.OnMessageReceived += OnMessageReceived; Debug.Log("Joining"); // 构建对话的时候需要指定一个 AVIMClient 实例做关联 _lobbyConversation = AVIMConversation.CreateWithoutData(ConversationId, _client); _client.JoinAsync(_lobbyConversation).ContinueWith(a => { if (a.IsFaulted) { _lobbyConversation = null; Debug.Log("Join failed"); return; } Debug.Log("Joined and sending message"); }); }); }
public async Task InitChatSDK() { string userid = string.Empty; string roomid = string.Empty; try { userid = VenueRtcCLI.VenueRTC.Instance.getUserId(); roomid = VenueRtcCLI.VenueRTC.Instance.getRoomId(); } catch (Exception ex) { App.LogError(ex); } AVClient.Initialize("Q2BQPmQMCARUy2LY6pqc8Tk3-gzGzoHsz", "5jl51fyVTMUhHt6ddghrXNTa"); AVRealtime realtime = new AVRealtime("Q2BQPmQMCARUy2LY6pqc8Tk3-gzGzoHsz", "5jl51fyVTMUhHt6ddghrXNTa"); Websockets.Net.WebsocketConnection.Link(); vIMClient = await realtime.CreateClientAsync(userid); AVIMConversationQuery query = vIMClient.GetChatRoomQuery().WhereEqualTo("name", roomid); List <AVIMConversation> conversations = (List <AVIMConversation>)(await query.FindAsync()); if (conversations == null || conversations.Count == 0) { conversation = await vIMClient.CreateChatRoomAsync(roomid); } else { conversation = conversations[0]; } await vIMClient.JoinAsync(conversation); await getHistoryMessage(); vIMClient.OnMessageReceived += VIMClient_OnMessageReceived; }
private async void selfClient_OnMessageReceieved(object sender, AVIMOnMessageReceivedEventArgs e) { var flag = currentConversation != null; await e.Conversation.FetchAsync(); currentConversation = await selfClient.GetQuery().GetAsync(e.Conversation.ConversationId); if (flag) { flag = e.Conversation.ConversationId == currentConversation.ConversationId; } if (flag) { RefreshUI(() => { CacheMessage(e.Conversation, e.Message); }); } else { CacheMessage(e.Conversation, e.Message); } }
private void CacheMessage(AVIMConversation conversation, AVIMMessage message) { if (historyDictionary == null) { historyDictionary = new Dictionary <string, BindingList <string> >(); } var record = message.FromClientId + ": " + EscapedMessage(message); if (historyDictionary.ContainsKey(conversation.ConversationId)) { historyDictionary[conversation.ConversationId].Add(record); } else { var history = new BindingList <string>(); history.Add(record); historyDictionary.Add(conversation.ConversationId, history); } RefreshUI(() => { Log("收到 " + message.FromClientId + " 发送的消息;"); }); }
//添加好友事件监听(好友邀请事件:同意,拒绝,好友邀请反馈事件:同意) private void OnInvited(object sender, AVIMOnInvitedEventArgs e) { //排除自身引发的事件 if (e.InvitedBy != AVUser.CurrentUser.ObjectId) { App.Current.Dispatcher.Invoke((Action)(async() => { AVIMConversation InvitedConversation = await User.GetConversationAsync(e.ConversationId); AVUser InvitedUser = await AVUser.Query.GetAsync(e.InvitedBy); //好友邀请事件 if (InvitedConversation.IsUnique) { //同意 if (MessageBox.Show(InvitedUser.Username + "请求添加您为好友,是否通过?", "添加好友请求", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { //将对方加入自己的FriendsConversation await User.InviteAsync(FriendsConversation, e.InvitedBy); //重新获取FriendsConversation==》不必要 FriendsConversation = await User.GetConversationAsync(AVUser.CurrentUser.Get <string>("Friends")); //重新绑定listbox数据 BindingFriendListSrouce(e.InvitedBy); } //拒绝 else { //拒绝即为删除邀请者创建的Conversation try { List <string> members = new List <string>(); members.Add(AVUser.CurrentUser.ObjectId); members.Add(InvitedUser.ObjectId); await(await AVObject.GetQuery("_Conversation").WhereEqualTo("m", members).FirstAsync()).DeleteAsync(); } catch { try { List <string> members = new List <string>(); members.Add(InvitedUser.ObjectId); members.Add(AVUser.CurrentUser.ObjectId); await(await AVObject.GetQuery("_Conversation").WhereEqualTo("m", members).FirstAsync()).DeleteAsync(); } catch { MessageBox.Show("给舔狗一条活路吧"); } } finally { new Tip("提醒", "已拒绝 " + InvitedUser.Username + "的好友邀请", 3); } } } //好友邀请反馈事件:同意 if (!InvitedConversation.IsUnique) { //将对方加入自己的FriendsConversation if (!FriendsConversation.MemberIds.Contains(e.InvitedBy)) { new Tip("提醒", "已成功添加 " + InvitedUser.Username); await User.InviteAsync(FriendsConversation, e.InvitedBy); //重新获取FriendsConversation==》不必要 FriendsConversation = await User.GetConversationAsync(AVUser.CurrentUser.Get <string>("Friends")); //重新绑定listbox数据 BindingFriendListSrouce(e.InvitedBy); } } })); } }
static void Test() { //var appId = "nb4egfMaDOj6jzqRhBuWpk5m-gzGzoHsz"; //var appKey = "zJ4aUsCraV6eBE6dGHWYE57z"; var appId = "Eohx7L4EMfe4xmairXeT7q1w-gzGzoHsz"; var appKey = "GSBSGpYH9FsRdCss8TGQed0F"; AVIMConversation conv = null; Console.WriteLine($"test at {Thread.CurrentThread.ManagedThreadId}"); AVClient.Initialize(appId, appKey); AVRealtime realtime = new AVRealtime(new AVRealtime.Configuration { ApplicationId = appId, ApplicationKey = appKey, //RealtimeServer = new Uri("wss://rtm51.leancloud.cn/"), }); realtime.CreateClientAsync("lean").ContinueWith(t => { if (t.IsFaulted) { Console.WriteLine($"create client failed at {Thread.CurrentThread.ManagedThreadId}"); throw t.Exception; } Console.WriteLine($"create client at {Thread.CurrentThread.ManagedThreadId}"); AVIMClient client = t.Result; client.OnMessageReceived += (sender, e) => { Console.WriteLine($"{e.Message.Id} is received at {Thread.CurrentThread.ManagedThreadId}"); }; client.OnMessageRecalled += (sender, e) => { Console.WriteLine($"{e.Message} is recall at {Thread.CurrentThread.ManagedThreadId}"); }; client.OnMessageUpdated += (sender, e) => { Console.WriteLine($"{e.Message} is updated at {Thread.CurrentThread.ManagedThreadId}"); }; realtime.OnDisconnected += (sender, e) => { Console.WriteLine($"{client.ClientId} is disconnected"); try { conv.SendTextAsync("I am disconnected"); } catch (Exception err) { Console.WriteLine($"send error: {err.Message}"); } }; realtime.OnReconnecting += (sender, e) => { Console.WriteLine($"{client.ClientId} is reconnecting"); }; realtime.OnReconnected += (sender, e) => { Console.WriteLine($"{client.ClientId} is reconnected"); conv.SendTextAsync("I am reconnected"); }; //realtime.CreateClient("aaa").ContinueWith(xxx => { // if (xxx.IsFaulted) { // Console.WriteLine($"create xxx error: {xxx.Exception.Message} at {Thread.CurrentThread.ManagedThreadId}"); // } else { // Console.WriteLine($"create xxx at {Thread.CurrentThread.ManagedThreadId}"); // } //}); return(client.CreateConversationAsync(members: new string[] { "xxx", "zzz" })); }).Unwrap().ContinueWith(t => { if (t.IsFaulted) { throw t.Exception; } Console.WriteLine($"create conversation at {Thread.CurrentThread.ManagedThreadId}"); conv = t.Result; return(conv.SendTextAsync("无码种子")); }).Unwrap().ContinueWith(t => { if (t.IsFaulted) { throw t.Exception; } Console.WriteLine($"send message at {Thread.CurrentThread.ManagedThreadId}"); Console.WriteLine("send success"); }); //await client.CloseAsync(); //client = await realtime.CreateClientAsync("leancloud"); //await client.CloseAsync(); //var newMsg = new AVIMTextMessage("大家好"); //var timer = new Timer { // Interval = 1000, //}; //timer.Elapsed += async (sender, e) => { // timer.Stop(); // try { // var modifiedMsg = await conv.UpdateAsync(msg, newMsg); // Console.WriteLine($"{modifiedMsg.Id} 修改成功"); // } catch (Exception exception) { // Console.WriteLine(exception.Message); // } // //try { // // var recalledMsg = await conv.RecallAsync(msg); // // Console.WriteLine($"{recalledMsg.Id} is recalled"); // //} catch (Exception exception) { // // Console.WriteLine(exception.Message); // //} //}; //timer.Start(); }
public async void CreateConversation() { conversation = await client.CreateConversationAsync("Jerry", name : "Tom 和 Jerry 的私聊对话"); }
public Addfriend(AVIMClient user, AVIMConversation conversation) : this() { User = user; Conversation = conversation; }
private async void btn_create_Click(object sender, EventArgs e) { //var isTransient = ckb_isTransient.Checked; conversation = await client.CreateConversationAsync(txb_friend.Text.Trim()); }