internal static CallParticipantInternal DeserializeCallParticipantInternal(JsonElement element) { Optional <CommunicationIdentifierModel> identifier = default; Optional <string> participantId = default; bool isMuted = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("identifier")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } identifier = CommunicationIdentifierModel.DeserializeCommunicationIdentifierModel(property.Value); continue; } if (property.NameEquals("participantId")) { participantId = property.Value.GetString(); continue; } if (property.NameEquals("isMuted")) { isMuted = property.Value.GetBoolean(); continue; } } return(new CallParticipantInternal(identifier.Value, participantId.Value, isMuted)); }
internal static ChatMessageReadReceiptInternal DeserializeChatMessageReadReceiptInternal(JsonElement element) { CommunicationIdentifierModel senderCommunicationIdentifier = default; string chatMessageId = default; DateTimeOffset readOn = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("senderCommunicationIdentifier")) { senderCommunicationIdentifier = CommunicationIdentifierModel.DeserializeCommunicationIdentifierModel(property.Value); continue; } if (property.NameEquals("chatMessageId")) { chatMessageId = property.Value.GetString(); continue; } if (property.NameEquals("readOn")) { readOn = property.Value.GetDateTimeOffset("O"); continue; } } return(new ChatMessageReadReceiptInternal(senderCommunicationIdentifier, chatMessageId, readOn)); }
internal static ChatParticipantInternal DeserializeChatParticipantInternal(JsonElement element) { CommunicationIdentifierModel communicationIdentifier = default; Optional <string> displayName = default; Optional <DateTimeOffset> shareHistoryTime = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("communicationIdentifier")) { communicationIdentifier = CommunicationIdentifierModel.DeserializeCommunicationIdentifierModel(property.Value); continue; } if (property.NameEquals("displayName")) { displayName = property.Value.GetString(); continue; } if (property.NameEquals("shareHistoryTime")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } shareHistoryTime = property.Value.GetDateTimeOffset("O"); continue; } } return(new ChatParticipantInternal(communicationIdentifier, displayName.Value, Optional.ToNullable(shareHistoryTime))); }
internal HttpMessage CreateJoinCallRequest(string conversationId, CommunicationIdentifierModel source, string callbackUri, IEnumerable <CallModality> requestedModalities, IEnumerable <EventSubscriptionType> requestedCallEvents, string subject) { var message = _pipeline.CreateMessage(); var request = message.Request; request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); uri.AppendPath("/calling/conversations/", false); uri.AppendPath(conversationId, true); uri.AppendPath("/Join", false); uri.AppendQuery("api-version", apiVersion, true); request.Uri = uri; request.Headers.Add("Accept", "application/json"); request.Headers.Add("Content-Type", "application/json"); var model = new JoinCallRequestInternal(source, callbackUri, requestedModalities.ToList(), requestedCallEvents.ToList()) { Subject = subject }; var content = new Utf8JsonRequestContent(); content.JsonWriter.WriteObjectValue(model); request.Content = content; return(message); }
internal ChatMessageContentInternal(string message, string topic, IReadOnlyList <ChatParticipantInternal> participants, CommunicationIdentifierModel initiatorCommunicationIdentifier) { Message = message; Topic = topic; Participants = participants; InitiatorCommunicationIdentifier = initiatorCommunicationIdentifier; }
internal static ParticipantInput DeserializeParticipantInput(JsonElement element) { CommunicationIdentifierModel id = default; Optional <string> placeholderImageUri = default; string call = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("id")) { id = CommunicationIdentifierModel.DeserializeCommunicationIdentifierModel(property.Value); continue; } if (property.NameEquals("placeholderImageUri")) { placeholderImageUri = property.Value.GetString(); continue; } if (property.NameEquals("call")) { call = property.Value.GetString(); continue; } } return(new ParticipantInput(id, placeholderImageUri.Value, call)); }
public CreateCallRequestInternal(IEnumerable <CommunicationIdentifierModel> targets, CommunicationIdentifierModel source, string callbackUri, IEnumerable <CallModality> requestedModalities, IEnumerable <EventSubscriptionType> requestedCallEvents) { if (targets == null) { throw new ArgumentNullException(nameof(targets)); } if (source == null) { throw new ArgumentNullException(nameof(source)); } if (callbackUri == null) { throw new ArgumentNullException(nameof(callbackUri)); } if (requestedModalities == null) { throw new ArgumentNullException(nameof(requestedModalities)); } if (requestedCallEvents == null) { throw new ArgumentNullException(nameof(requestedCallEvents)); } Targets = targets.ToList(); Source = source; CallbackUri = callbackUri; RequestedModalities = requestedModalities.ToList(); RequestedCallEvents = requestedCallEvents.ToList(); }
internal ChatThreadPropertiesInternal(string id, string topic, DateTimeOffset createdOn, CommunicationIdentifierModel createdByCommunicationIdentifier, DateTimeOffset?deletedOn) { Id = id; Topic = topic; CreatedOn = createdOn; CreatedByCommunicationIdentifier = createdByCommunicationIdentifier; DeletedOn = deletedOn; }
public ChatParticipantInternal(CommunicationIdentifierModel communicationIdentifier) { if (communicationIdentifier == null) { throw new ArgumentNullException(nameof(communicationIdentifier)); } CommunicationIdentifier = communicationIdentifier; }
internal ChatMessageInternal(string id, ChatMessageType type, string sequenceId, string version, ChatMessageContentInternal content, string senderDisplayName, DateTimeOffset createdOn, CommunicationIdentifierModel senderCommunicationIdentifier, DateTimeOffset?deletedOn, DateTimeOffset?editedOn) { Id = id; Type = type; SequenceId = sequenceId; Version = version; Content = content; SenderDisplayName = senderDisplayName; CreatedOn = createdOn; SenderCommunicationIdentifier = senderCommunicationIdentifier; DeletedOn = deletedOn; EditedOn = editedOn; }
public ParticipantInput(CommunicationIdentifierModel id, string call) { if (id == null) { throw new ArgumentNullException(nameof(id)); } if (call == null) { throw new ArgumentNullException(nameof(call)); } Id = id; Call = call; }
internal ChatMessageReadReceiptInternal(CommunicationIdentifierModel senderCommunicationIdentifier, string chatMessageId, DateTimeOffset readOn) { if (senderCommunicationIdentifier == null) { throw new ArgumentNullException(nameof(senderCommunicationIdentifier)); } if (chatMessageId == null) { throw new ArgumentNullException(nameof(chatMessageId)); } SenderCommunicationIdentifier = senderCommunicationIdentifier; ChatMessageId = chatMessageId; ReadOn = readOn; }
public JoinCallRequestInternal(CommunicationIdentifierModel source, string callbackUri) { if (source == null) { throw new ArgumentNullException(nameof(source)); } if (callbackUri == null) { throw new ArgumentNullException(nameof(callbackUri)); } Source = source; CallbackUri = callbackUri; RequestedMediaTypes = new ChangeTrackingList <MediaType>(); RequestedCallEvents = new ChangeTrackingList <EventSubscriptionType>(); }
internal static ChatMessageContentInternal DeserializeChatMessageContentInternal(JsonElement element) { Optional <string> message = default; Optional <string> topic = default; Optional <IReadOnlyList <ChatParticipantInternal> > participants = default; Optional <CommunicationIdentifierModel> initiatorCommunicationIdentifier = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("message")) { message = property.Value.GetString(); continue; } if (property.NameEquals("topic")) { topic = property.Value.GetString(); continue; } if (property.NameEquals("participants")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } List <ChatParticipantInternal> array = new List <ChatParticipantInternal>(); foreach (var item in property.Value.EnumerateArray()) { array.Add(ChatParticipantInternal.DeserializeChatParticipantInternal(item)); } participants = array; continue; } if (property.NameEquals("initiatorCommunicationIdentifier")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } initiatorCommunicationIdentifier = CommunicationIdentifierModel.DeserializeCommunicationIdentifierModel(property.Value); continue; } } return(new ChatMessageContentInternal(message.Value, topic.Value, Optional.ToList(participants), initiatorCommunicationIdentifier.Value)); }
internal static ChatThreadPropertiesInternal DeserializeChatThreadPropertiesInternal(JsonElement element) { string id = default; string topic = default; DateTimeOffset createdOn = default; CommunicationIdentifierModel createdByCommunicationIdentifier = default; Optional <DateTimeOffset> deletedOn = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("id")) { id = property.Value.GetString(); continue; } if (property.NameEquals("topic")) { topic = property.Value.GetString(); continue; } if (property.NameEquals("createdOn")) { createdOn = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("createdByCommunicationIdentifier")) { createdByCommunicationIdentifier = CommunicationIdentifierModel.DeserializeCommunicationIdentifierModel(property.Value); continue; } if (property.NameEquals("deletedOn")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } deletedOn = property.Value.GetDateTimeOffset("O"); continue; } } return(new ChatThreadPropertiesInternal(id, topic, createdOn, createdByCommunicationIdentifier, Optional.ToNullable(deletedOn))); }
/// <summary> Remove a member from a thread .</summary> /// <param name="identifier"><see cref="CommunicationIdentifier" /> to be removed from the chat thread participants.</param> /// <param name="cancellationToken"> The cancellation token to use. </param> /// <exception cref="RequestFailedException">The server returned an error. See <see cref="Exception.Message"/> for details returned from the server.</exception> public virtual Response RemoveParticipant(CommunicationIdentifier identifier, CancellationToken cancellationToken = default) { using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(ChatThreadClient)}.{nameof(RemoveParticipant)}"); scope.Start(); try { CommunicationIdentifierModel communicationIdentifierModel = CommunicationIdentifierSerializer.Serialize(identifier); return(_chatThreadRestClient.RemoveChatParticipant(Id, communicationIdentifierModel.RawId, communicationIdentifierModel.CommunicationUser, communicationIdentifierModel.PhoneNumber, communicationIdentifierModel.MicrosoftTeamsUser, cancellationToken)); } catch (Exception ex) { scope.Failed(ex); throw; } }
internal ChatThreadPropertiesInternal(string id, string topic, DateTimeOffset createdOn, CommunicationIdentifierModel createdByCommunicationIdentifier) { if (id == null) { throw new ArgumentNullException(nameof(id)); } if (topic == null) { throw new ArgumentNullException(nameof(topic)); } if (createdByCommunicationIdentifier == null) { throw new ArgumentNullException(nameof(createdByCommunicationIdentifier)); } Id = id; Topic = topic; CreatedOn = createdOn; CreatedByCommunicationIdentifier = createdByCommunicationIdentifier; }
public CreateCallRequestInternal(IEnumerable <CommunicationIdentifierModel> targets, CommunicationIdentifierModel source, string callbackUri) { if (targets == null) { throw new ArgumentNullException(nameof(targets)); } if (source == null) { throw new ArgumentNullException(nameof(source)); } if (callbackUri == null) { throw new ArgumentNullException(nameof(callbackUri)); } Targets = targets.ToList(); Source = source; CallbackUri = callbackUri; RequestedMediaTypes = new ChangeTrackingList <MediaType>(); RequestedCallEvents = new ChangeTrackingList <EventSubscriptionType>(); }
public async Task <Response <CreateCallResponse> > CreateCallAsync(IEnumerable <CommunicationIdentifierModel> targets, CommunicationIdentifierModel source, string callbackUri, IEnumerable <CallModality> requestedModalities, IEnumerable <EventSubscriptionType> requestedCallEvents, PhoneNumberIdentifierModel sourceAlternateIdentity = null, string subject = null, CancellationToken cancellationToken = default) { if (targets == null) { throw new ArgumentNullException(nameof(targets)); } if (source == null) { throw new ArgumentNullException(nameof(source)); } if (callbackUri == null) { throw new ArgumentNullException(nameof(callbackUri)); } if (requestedModalities == null) { throw new ArgumentNullException(nameof(requestedModalities)); } if (requestedCallEvents == null) { throw new ArgumentNullException(nameof(requestedCallEvents)); } using var message = CreateCreateCallRequest(targets, source, callbackUri, requestedModalities, requestedCallEvents, sourceAlternateIdentity, subject); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { case 201: { CreateCallResponse value = default; using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); value = CreateCallResponse.DeserializeCreateCallResponse(document.RootElement); return(Response.FromValue(value, message.Response)); }
internal AcsChatThreadParticipantProperties(string displayName, CommunicationIdentifierModel participantCommunicationIdentifier) { DisplayName = displayName; ParticipantCommunicationIdentifier = participantCommunicationIdentifier; }
public static AcsChatMessageEditedEventData AcsChatMessageEditedEventData(CommunicationIdentifierModel recipientCommunicationIdentifier = null, string transactionId = null, string threadId = null, string messageId = null, CommunicationIdentifierModel senderCommunicationIdentifier = null, string senderDisplayName = null, DateTimeOffset?composeTime = null, string type = null, long?version = null, string messageBody = null, DateTimeOffset?editTime = null) { return(new AcsChatMessageEditedEventData(recipientCommunicationIdentifier, transactionId, threadId, messageId, senderCommunicationIdentifier, senderDisplayName, composeTime, type, version, messageBody, new ChangeTrackingDictionary <string, string>(), editTime)); }
public static AcsChatThreadCreatedWithUserEventData AcsChatThreadCreatedWithUserEventData(CommunicationIdentifierModel recipientCommunicationIdentifier = default, string transactionId = default, string threadId = default, DateTimeOffset?createTime = default, long?version = default, CommunicationIdentifierModel createdByCommunicationIdentifier = default, IReadOnlyDictionary <string, object> properties = default, IReadOnlyList <AcsChatThreadParticipantProperties> participants = default) { properties ??= new Dictionary <string, object>(); participants ??= new List <AcsChatThreadParticipantProperties>(); return(new AcsChatThreadCreatedWithUserEventData(recipientCommunicationIdentifier, transactionId, threadId, createTime, version, createdByCommunicationIdentifier, properties, participants)); }
public async Task <Response <AddParticipantResult> > AddParticipantAsync(string serverCallId, PhoneNumberIdentifierModel alternateCallerId = null, CommunicationIdentifierModel participant = null, string operationContext = null, string callbackUri = null, CancellationToken cancellationToken = default) { if (serverCallId == null) { throw new ArgumentNullException(nameof(serverCallId)); } using var message = CreateAddParticipantRequest(serverCallId, alternateCallerId, participant, operationContext, callbackUri); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { case 202: { AddParticipantResult value = default; using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); value = AddParticipantResult.DeserializeAddParticipantResult(document.RootElement); return(Response.FromValue(value, message.Response)); }
internal HttpMessage CreateAddParticipantRequest(string serverCallId, PhoneNumberIdentifierModel alternateCallerId, CommunicationIdentifierModel participant, string operationContext, string callbackUri) { var message = _pipeline.CreateMessage(); var request = message.Request; request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); uri.AppendPath("/calling/serverCalls/", false); uri.AppendPath(serverCallId, true); uri.AppendPath("/participants", false); uri.AppendQuery("api-version", apiVersion, true); request.Uri = uri; request.Headers.Add("Accept", "application/json"); request.Headers.Add("Content-Type", "application/json"); var model = new AddParticipantRequest() { AlternateCallerId = alternateCallerId, Participant = participant, OperationContext = operationContext, CallbackUri = callbackUri }; var content = new Utf8JsonRequestContent(); content.JsonWriter.WriteObjectValue(model); request.Content = content; return(message); }
internal CallParticipantInternal(CommunicationIdentifierModel identifier, string participantId, bool isMuted) { Identifier = identifier; ParticipantId = participantId; IsMuted = isMuted; }
public static AcsChatThreadCreatedWithUserEventData AcsChatThreadCreatedWithUserEventData(CommunicationIdentifierModel recipientCommunicationIdentifier, string transactionId, string threadId, DateTimeOffset?createTime, long?version, CommunicationIdentifierModel createdByCommunicationIdentifier, IReadOnlyDictionary <string, object> properties, IReadOnlyList <AcsChatThreadParticipantProperties> participants) { return(AcsChatThreadCreatedWithUserEventData(recipientCommunicationIdentifier, transactionId, threadId, createTime, version, createdByCommunicationIdentifier, properties, (IEnumerable <AcsChatThreadParticipantProperties>)participants)); }
public static AcsChatMessageEditedInThreadEventData AcsChatMessageEditedInThreadEventData(string transactionId, string threadId, string messageId, CommunicationIdentifierModel senderCommunicationIdentifier, string senderDisplayName, DateTimeOffset?composeTime, string type, long?version, string messageBody, DateTimeOffset?editTime) { return(AcsChatMessageEditedInThreadEventData(transactionId, threadId, messageId, senderCommunicationIdentifier, senderDisplayName, composeTime, type, version, messageBody, new ChangeTrackingDictionary <string, string>(), editTime)); }
public static AcsChatMessageReceivedEventData AcsChatMessageReceivedEventData(CommunicationIdentifierModel recipientCommunicationIdentifier, string transactionId, string threadId, string messageId, CommunicationIdentifierModel senderCommunicationIdentifier, string senderDisplayName, DateTimeOffset?composeTime, string type, long?version, string messageBody) { return(AcsChatMessageReceivedEventData(recipientCommunicationIdentifier, transactionId, threadId, messageId, senderCommunicationIdentifier, senderDisplayName, composeTime, type, version, messageBody, new ChangeTrackingDictionary <string, string>())); }
internal HttpMessage CreateCreateCallRequest(IEnumerable <CommunicationIdentifierModel> targets, CommunicationIdentifierModel source, string callbackUri, PhoneNumberIdentifierModel alternateCallerId, string subject, IEnumerable <MediaType> requestedMediaTypes, IEnumerable <EventSubscriptionType> requestedCallEvents) { var message = _pipeline.CreateMessage(); var request = message.Request; request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); uri.AppendPath("/calling/callConnections", false); uri.AppendQuery("api-version", apiVersion, true); request.Uri = uri; request.Headers.Add("Accept", "application/json"); request.Headers.Add("Content-Type", "application/json"); CreateCallRequestInternal createCallRequestInternal = new CreateCallRequestInternal(targets.ToList(), source, callbackUri) { AlternateCallerId = alternateCallerId, Subject = subject }; if (requestedMediaTypes != null) { foreach (var value in requestedMediaTypes) { createCallRequestInternal.RequestedMediaTypes.Add(value); } } if (requestedCallEvents != null) { foreach (var value in requestedCallEvents) { createCallRequestInternal.RequestedCallEvents.Add(value); } } var model = createCallRequestInternal; var content = new Utf8JsonRequestContent(); content.JsonWriter.WriteObjectValue(model); request.Content = content; return(message); }
internal static ChatMessageInternal DeserializeChatMessageInternal(JsonElement element) { string id = default; ChatMessageType type = default; string sequenceId = default; string version = default; Optional <ChatMessageContentInternal> content = default; Optional <string> senderDisplayName = default; DateTimeOffset createdOn = default; Optional <CommunicationIdentifierModel> senderCommunicationIdentifier = default; Optional <DateTimeOffset> deletedOn = default; Optional <DateTimeOffset> editedOn = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("id")) { id = property.Value.GetString(); continue; } if (property.NameEquals("type")) { type = new ChatMessageType(property.Value.GetString()); continue; } if (property.NameEquals("sequenceId")) { sequenceId = property.Value.GetString(); continue; } if (property.NameEquals("version")) { version = property.Value.GetString(); continue; } if (property.NameEquals("content")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } content = ChatMessageContentInternal.DeserializeChatMessageContentInternal(property.Value); continue; } if (property.NameEquals("senderDisplayName")) { senderDisplayName = property.Value.GetString(); continue; } if (property.NameEquals("createdOn")) { createdOn = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("senderCommunicationIdentifier")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } senderCommunicationIdentifier = CommunicationIdentifierModel.DeserializeCommunicationIdentifierModel(property.Value); continue; } if (property.NameEquals("deletedOn")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } deletedOn = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("editedOn")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } editedOn = property.Value.GetDateTimeOffset("O"); continue; } } return(new ChatMessageInternal(id, type, sequenceId, version, content.Value, senderDisplayName.Value, createdOn, senderCommunicationIdentifier.Value, Optional.ToNullable(deletedOn), Optional.ToNullable(editedOn))); }