public override async Task DeleteActivityAsync(ITurnContext turnContext, ConversationReference reference, CancellationToken cancellationToken) { var requestPath = $"/activities/{reference.ActivityId}"; var request = StreamingRequest.CreateDelete(requestPath); _botTelemetryClient.TrackTrace($"Deleting activity. activity id: {reference.ActivityId}", Severity.Information, null); var stopWatch = new Diagnostics.Stopwatch(); try { stopWatch.Start(); await SendRequestAsync <ResourceResponse>(request, cancellationToken).ConfigureAwait(false); stopWatch.Stop(); } catch (Exception ex) { throw new SkillWebSocketCallbackException($"Callback failed. Verb: DELETE, Path: {requestPath}", ex); } _botTelemetryClient.TrackEvent("SkillWebSocketDeleteActivityLatency", null, new Dictionary <string, double> { { "Latency", stopWatch.ElapsedMilliseconds }, }); }
public void Request_Create_Delete_Success() { var r = StreamingRequest.CreateDelete(); Assert.AreEqual(StreamingRequest.DELETE, r.Verb); Assert.IsNull(r.Path); Assert.IsNull(r.Streams); }
/// <summary> /// Deletes an existing member in the conversation. /// Throws <see cref="ArgumentNullException"/> if conversationId or memberId is null, empty, or whitespace. /// </summary> /// <param name="conversationId">Conversation reference for the activity to delete.</param> /// <param name="memberId">The id of the member to be deleted.</param> /// <param name="cancellationToken">Optional cancellation token.</param> /// <returns>A task that represents the work queued to execute.</returns> public async Task <HttpOperationResponse> DeleteConversationMemberAsync(string conversationId, string memberId, CancellationToken cancellationToken = default(CancellationToken)) { if (string.IsNullOrWhiteSpace(conversationId)) { throw new ArgumentNullException(nameof(conversationId)); } if (string.IsNullOrWhiteSpace(memberId)) { throw new ArgumentNullException(nameof(memberId)); } var route = $"{StreamingChannelPrefix}{conversationId}/members/{memberId}"; var request = StreamingRequest.CreateDelete(route); return(await SendRequestAsync <HttpOperationResponse>(request, cancellationToken).ConfigureAwait(false)); }
/// <summary> /// Deletes an existing activity in the conversation. /// Throws <see cref="ArgumentNullException"/> if any required argument is null. /// </summary> /// <param name="turnContext">The context object for the turn.</param> /// <param name="reference">Conversation reference for the activity to delete.</param> /// <param name="cancellationToken">Cancellation token.</param> /// <returns>A task that represents the work queued to execute.</returns> /// <remarks>The <see cref="ConversationReference.ActivityId"/> of the conversation /// reference identifies the activity to delete.</remarks> /// <seealso cref="ITurnContext.OnDeleteActivity(DeleteActivityHandler)"/> public override async Task DeleteActivityAsync(ITurnContext turnContext, ConversationReference reference, CancellationToken cancellationToken = default(CancellationToken)) { if (turnContext == null) { throw new ArgumentNullException(nameof(turnContext)); } if (reference == null) { throw new ArgumentNullException(nameof(reference)); } var requestPath = $"{StreamingChannelPrefix}{reference.Conversation.Id}/activities/{reference.ActivityId}"; var request = StreamingRequest.CreateDelete(requestPath); await SendRequestAsync <ResourceResponse>(request, cancellationToken).ConfigureAwait(false); }