/// <summary> /// Replaces an existing activity. /// </summary> /// <param name="activity">New replacement activity.</param> /// <param name="cancellationToken">Cancellation token.</param> /// <returns>A task that represents the work queued to execute.</returns> /// <exception cref="Microsoft.Bot.Schema.ErrorResponseException"> /// The HTTP operation failed and the response contained additional information.</exception> /// <exception cref="System.AggregateException"> /// One or more exceptions occurred during the operation.</exception> /// <remarks>If the activity is successfully sent, the task result contains /// a <see cref="ResourceResponse"/> object containing the ID that the receiving /// channel assigned to the activity. /// <para>Before calling this, set the ID of the replacement activity to the ID /// of the activity to replace.</para></remarks> public async Task <ResourceResponse> UpdateActivityAsync(IActivity activity, CancellationToken cancellationToken = default) { BotAssert.ActivityNotNull(activity); var conversationReference = Activity.GetConversationReference(); var a = activity.ApplyConversationReference(conversationReference); async Task <ResourceResponse> ActuallyUpdateStuff() { return(await Adapter.UpdateActivityAsync(this, a, cancellationToken).ConfigureAwait(false)); } return(await UpdateActivityInternalAsync(a, _onUpdateActivity, ActuallyUpdateStuff, cancellationToken).ConfigureAwait(false)); }