public async Task MessagesNotificationsReadReceipts_Async() { CommunicationIdentityClient communicationIdentityClient = new CommunicationIdentityClient(TestEnvironment.ConnectionString); Response <CommunicationUserIdentifier> threadCreatorIdentifier = await communicationIdentityClient.CreateUserAsync(); AccessToken communicationUserToken = await communicationIdentityClient.GetTokenAsync(threadCreatorIdentifier.Value, new[] { CommunicationTokenScope.Chat }); string userToken = communicationUserToken.Token; string endpoint = TestEnvironment.ChatApiUrl(); ChatClient chatClient = new ChatClient( new Uri(endpoint), new CommunicationTokenCredential(userToken)); CreateChatThreadResult createChatThreadResult = await chatClient.CreateChatThreadAsync(topic : "Hello world!", participants : new ChatParticipant[] { }); ChatThreadClient chatThreadClient = chatClient.GetChatThreadClient(createChatThreadResult.ChatThread.Id); #region Snippet:Azure_Communication_Chat_Tests_Samples_SendMessage_KeyConcepts string messageId = chatThreadClient.SendMessage("Let's meet at 11am"); #endregion Snippet:Azure_Communication_Chat_Tests_Samples_SendMessage_KeyConcepts #region Snippet:Azure_Communication_Chat_Tests_Samples_GetMessage_KeyConcepts ChatMessage message = chatThreadClient.GetMessage(messageId); #endregion Snippet:Azure_Communication_Chat_Tests_Samples_GetMessage_KeyConcepts #region Snippet:Azure_Communication_Chat_Tests_Samples_GetMessages_KeyConcepts Pageable <ChatMessage> messages = chatThreadClient.GetMessages(); #endregion Snippet:Azure_Communication_Chat_Tests_Samples_GetMessages_KeyConcepts #region Snippet:Azure_Communication_Chat_Tests_Samples_UpdateMessage_KeyConcepts chatThreadClient.UpdateMessage(messageId, content: "Instead of 11am, let's meet at 2pm"); #endregion Snippet:Azure_Communication_Chat_Tests_Samples_UpdateMessage_KeyConcepts #region Snippet:Azure_Communication_Chat_Tests_Samples_DeleteMessage_KeyConcepts chatThreadClient.DeleteMessage(messageId); #endregion Snippet:Azure_Communication_Chat_Tests_Samples_DeleteMessage_KeyConcepts #region Snippet:Azure_Communication_Chat_Tests_Samples_SendReadReceipt_KeyConcepts chatThreadClient.SendReadReceipt(messageId); #endregion Snippet:Azure_Communication_Chat_Tests_Samples_SendReadReceipt_KeyConcepts #region Snippet:Azure_Communication_Chat_Tests_Samples_GetReadReceipts_KeyConcepts Pageable <ChatMessageReadReceipt> readReceipts = chatThreadClient.GetReadReceipts(); #endregion Snippet:Azure_Communication_Chat_Tests_Samples_GetReadReceipts_KeyConcepts #region Snippet:Azure_Communication_Chat_Tests_Samples_SendTypingNotification_KeyConcepts chatThreadClient.SendTypingNotification(); #endregion Snippet:Azure_Communication_Chat_Tests_Samples_SendTypingNotification_KeyConcepts }
public void SendGetUpdateDeleteMessagesSendNotificationReadReceipts() { CommunicationIdentityClient communicationIdentityClient = new CommunicationIdentityClient(TestEnvironment.ConnectionString); Response <CommunicationUser> threadMember = communicationIdentityClient.CreateUser(); CommunicationUserToken communicationUserToken = communicationIdentityClient.IssueToken(threadMember.Value, new[] { CommunicationTokenScope.Chat }); string userToken = communicationUserToken.Token; string endpoint = TestEnvironment.ChatApiUrl(); string theadCreatorMemberId = communicationUserToken.User.Id; ChatClient chatClient = new ChatClient( new Uri(endpoint), new CommunicationUserCredential(userToken)); var chatThreadMember = new ChatThreadMember(new CommunicationUser(theadCreatorMemberId)) { DisplayName = "UserDisplayName", ShareHistoryTime = DateTime.MinValue }; ChatThreadClient chatThreadClient = chatClient.CreateChatThread(topic: "Hello world!", members: new[] { chatThreadMember }); string threadId = chatThreadClient.Id; var content = "hello world"; var priority = ChatMessagePriority.Normal; var senderDisplayName = "sender name"; SendChatMessageResult sendMessageResult = chatThreadClient.SendMessage(content, priority, senderDisplayName); var messageId = sendMessageResult.Id; ChatMessage chatMessage = chatThreadClient.GetMessage(messageId); Pageable <ChatMessage> allMessages = chatThreadClient.GetMessages(); foreach (ChatMessage message in allMessages) { Console.WriteLine($"{message.Id}:{message.Sender.Id}:{message.Content}"); } chatThreadClient.UpdateMessage(messageId, "updated message content"); chatThreadClient.SendReadReceipt(messageId); Pageable <ReadReceipt> allReadReceipts = chatThreadClient.GetReadReceipts(); foreach (ReadReceipt readReceipt in allReadReceipts) { Console.WriteLine($"{readReceipt.ChatMessageId}:{readReceipt.Sender.Id}:{readReceipt.ReadOn}"); } chatThreadClient.DeleteMessage(messageId); chatThreadClient.SendTypingNotification(); chatClient.DeleteChatThread(threadId); }
public void ReadReceiptGS() { //arr Console.WriteLine($"ReadReceiptGS Running on RecordedTestMode : {Mode}"); CommunicationIdentityClient communicationIdentityClient = CreateInstrumentedCommunicationIdentityClient(); (CommunicationUserIdentifier user1, string token1) = CreateUserAndToken(communicationIdentityClient); (CommunicationUserIdentifier user2, string token2) = CreateUserAndToken(communicationIdentityClient); string repeatabilityRequestId1 = "contoso-B0A747F1-6245-4307-8267-B974340677DB"; var participants = new List <ChatParticipant> { new ChatParticipant(user1), new ChatParticipant(user2) }; ChatClient chatClient = CreateInstrumentedChatClient(token1); ChatClient chatClient2 = CreateInstrumentedChatClient(token2); //act CreateChatThreadResult createChatThreadResult = chatClient.CreateChatThread("Thread topic - ReadReceipts Test", participants, repeatabilityRequestId1); ChatThreadClient chatThreadClient = GetInstrumentedChatThreadClient(chatClient, createChatThreadResult.ChatThread.Id); var threadId = chatThreadClient.Id; ChatThreadClient chatThreadClient2 = GetInstrumentedChatThreadClient(chatClient2, threadId); var messageId2 = chatThreadClient.SendMessage("This is message 1 content"); var messageId = chatThreadClient2.SendMessage("This is message 2 content"); #region Snippet:Azure_Communication_Chat_Tests_E2E_SendReadReceipt chatThreadClient.SendReadReceipt(messageId); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_SendReadReceipt chatThreadClient2.SendReadReceipt(messageId2); #region Snippet:Azure_Communication_Chat_Tests_E2E_GetReadReceipts Pageable <ChatMessageReadReceipt> readReceipts = chatThreadClient.GetReadReceipts(); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_GetReadReceipts Pageable <ChatMessageReadReceipt> readReceipts2 = chatThreadClient2.GetReadReceipts(); var readReceiptsCount = readReceipts.Count(); var readReceiptsCount2 = readReceipts2.Count(); chatClient.DeleteChatThread(threadId); //assert Assert.AreEqual(2, readReceiptsCount); Assert.AreEqual(2, readReceiptsCount2); }
public void E2E_ThreadCreateUpdateGetDelete_MemberAddUpdateRemove_MessageGetSendUpdate_NotificationTyping_ReadReceiptGetSend() { //arr CommunicationUser user1, user2, user3; string token1, token2, token3; CommunicationIdentityClient communicationIdentityClient = CreateInstrumentedCommunicationIdentityClient(); (user1, token1) = CreateUserAndToken(communicationIdentityClient); (user2, token2) = CreateUserAndToken(communicationIdentityClient); (user3, token3) = CreateUserAndToken(communicationIdentityClient); var topic = "Thread sync from C# sdk"; var messageContent = "This is message 1 content"; var updatedMessageContent = "This is message 1 content updated"; var displayNameMessage = "DisplayName sender message 1"; var updatedTopic = "Updated topic - C# sdk"; var members = new List <ChatThreadMember> { new ChatThreadMember(user1), new ChatThreadMember(user2) }; ChatClient chatClient = CreateInstrumentedChatClient(token1); ChatClient chatClient2 = CreateInstrumentedChatClient(token2); //act #region Snippet:Azure_Communication_Chat_Tests_E2E_InitializeChatThreadClient //@@ChatThreadClient chatThreadClient1 = chatClient.CreateChatThread("Thread topic", members); // Alternatively, if you have created a chat thread before and you have its threadId, you can create a ChatThreadClient instance using: //@@ChatThreadClient chatThreadClient2 = chatClient.GetChatThreadClient("threadId"); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_InitializeChatThreadClient ChatThreadClient chatThreadClient = CreateInstrumentedChatThreadClient(chatClient, topic, members); ChatThreadClient chatThreadClient2 = CreateInstrumentedChatThreadClient(chatClient, topic, members); #region Snippet:Azure_Communication_Chat_Tests_E2E_UpdateThread chatThreadClient.UpdateThread("Updated topic - C# sdk"); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_UpdateThread var threadId = chatThreadClient.Id; #region Snippet:Azure_Communication_Chat_Tests_E2E_GetChatThread ChatThread chatThread = chatClient.GetChatThread(threadId); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_GetChatThread #region Snippet:Azure_Communication_Chat_Tests_E2E_GetChatThreadsInfo Pageable <ChatThreadInfo> threads = chatClient.GetChatThreadsInfo(); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_GetChatThreadsInfo var threadsCount = threads.Count(); #region Snippet:Azure_Communication_Chat_Tests_E2E_SendMessage SendChatMessageResult sendChatMessageResult = chatThreadClient.SendMessage("This is message 1 content", ChatMessagePriority.High, displayNameMessage); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_SendMessage SendChatMessageResult sendChatMessageResult2 = chatThreadClient.SendMessage(messageContent, ChatMessagePriority.High, displayNameMessage); var messageId = sendChatMessageResult.Id; #region Snippet:Azure_Communication_Chat_Tests_E2E_GetMessage ChatMessage message = chatThreadClient.GetMessage(messageId); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_GetMessage #region Snippet:Azure_Communication_Chat_Tests_E2E_GetMessages Pageable <ChatMessage> messages = chatThreadClient.GetMessages(); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_GetMessages var getMessagesCount = messages.Count(); #region Snippet:Azure_Communication_Chat_Tests_E2E_UpdateMessage chatThreadClient.UpdateMessage(messageId, "This is message 1 content updated"); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_UpdateMessage Response <ChatMessage> actualUpdateMessage = chatThreadClient.GetMessage(messageId); #region Snippet:Azure_Communication_Chat_Tests_E2E_DeleteMessage chatThreadClient.DeleteMessage(messageId); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_DeleteMessage Pageable <ChatMessage> messagesAfterOneDeleted = chatThreadClient.GetMessages(); ChatMessage deletedChatMessage = messagesAfterOneDeleted.First(x => x.Id == messageId); #region Snippet:Azure_Communication_Chat_Tests_E2E_GetMembers Pageable <ChatThreadMember> chatThreadMembers = chatThreadClient.GetMembers(); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_GetMembers var chatThreadMembersCount = chatThreadMembers.Count(); var newMember = new ChatThreadMember(user3); #region Snippet:Azure_Communication_Chat_Tests_E2E_AddMembers chatThreadClient.AddMembers(members: new[] { newMember }); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_AddMembers Pageable <ChatThreadMember> chatThreadMembersAfterOneAdded = chatThreadClient.GetMembers(); var chatThreadMembersAfterOneAddedCount = chatThreadMembersAfterOneAdded.Count(); CommunicationUser memberToBeRemoved = user3; //Better name for the snippet #region Snippet:Azure_Communication_Chat_Tests_E2E_RemoveMember chatThreadClient.RemoveMember(user: memberToBeRemoved); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_RemoveMember Pageable <ChatThreadMember> chatThreadMembersAfterOneDeleted = chatThreadClient.GetMembers(); var chatThreadMembersAfterOneDeletedCount = chatThreadMembersAfterOneDeleted.Count(); Response typingNotificationResponse = chatThreadClient.SendTypingNotification(); #region Snippet:Azure_Communication_Chat_Tests_E2E_SendTypingNotification chatThreadClient.SendTypingNotification(); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_SendTypingNotification #region Snippet:Azure_Communication_Chat_Tests_E2E_SendReadReceipt chatThreadClient.SendReadReceipt(messageId); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_SendReadReceipt chatThreadClient.SendReadReceipt(sendChatMessageResult2.Id); #region Snippet:Azure_Communication_Chat_Tests_E2E_GetReadReceipts Pageable <ReadReceipt> readReceipts = chatThreadClient.GetReadReceipts(); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_GetReadReceipts var readReceiptsCount = readReceipts.Count(); #region Snippet:Azure_Communication_Chat_Tests_E2E_DeleteChatThread chatClient.DeleteChatThread(threadId); #endregion Snippet:Azure_Communication_Chat_Tests_E2E_DeleteChatThread //assert Assert.AreEqual(updatedTopic, chatThread.Topic); Assert.AreEqual(2, chatThread.Members.Count); Assert.AreEqual(messageContent, message.Content); Assert.AreEqual(displayNameMessage, message.SenderDisplayName); Assert.AreEqual(ChatMessagePriority.High, message.Priority); Assert.AreEqual(2, threadsCount); Assert.AreEqual(5, getMessagesCount); //Including all types Assert.AreEqual(updatedMessageContent, actualUpdateMessage.Value.Content); Assert.IsTrue(deletedChatMessage.DeletedOn.HasValue); Assert.AreEqual(2, chatThreadMembersCount); Assert.AreEqual(3, chatThreadMembersAfterOneAddedCount); Assert.AreEqual(2, chatThreadMembersAfterOneDeletedCount); Assert.AreEqual((int)HttpStatusCode.OK, typingNotificationResponse.Status); // TODO: Commenting out the assert below for now as it is flakey due to server-side delay; currently in investigation // Assert.AreEqual(1, readReceiptsCount); }