// TODO: oauth prompt support /// <summary> /// The implementation for continue conversation. /// </summary> /// <param name="claimsIdentity">A <see cref="ClaimsIdentity"/> for the conversation.</param> /// <param name="reference">A <see cref="ConversationReference"/> for the conversation.</param> /// <param name="audience">The audience for the call.</param> /// <param name="callback">The method to call for the resulting bot turn.</param> /// <param name="cancellationToken">Cancellation token.</param> /// <returns>A task that represents the work queued to execute.</returns> protected async Task ProcessProactiveAsync(ClaimsIdentity claimsIdentity, ConversationReference reference, string audience, BotCallbackHandler callback, CancellationToken cancellationToken) { // Use the cloud environment to create the credentials for proactive requests. var credentials = await _botFrameworkAuthentication.GetProactiveCredentialsAsync(claimsIdentity, audience, cancellationToken).ConfigureAwait(false); // Create the connector client to use for outbound requests. var connectorClient = new ConnectorClient(new Uri(reference.ServiceUrl), credentials, _httpClient); // Create a turn context and run the pipeline. using (var context = CreateTurnContext(reference.GetContinuationActivity(), claimsIdentity, audience, connectorClient, callback)) { // Run the pipeline. await RunPipelineAsync(context, callback, cancellationToken).ConfigureAwait(false); } }
// TODO: oauth prompt support /// <summary> /// The implementation for continue conversation. /// </summary> /// <param name="claimsIdentity">A <see cref="ClaimsIdentity"/> for the conversation.</param> /// <param name="reference">A <see cref="ConversationReference"/> for the conversation.</param> /// <param name="audience">The audience for the call.</param> /// <param name="callback">The method to call for the resulting bot turn.</param> /// <param name="cancellationToken">Cancellation token.</param> /// <returns>A task that represents the work queued to execute.</returns> protected async Task ProcessProactiveAsync(ClaimsIdentity claimsIdentity, ConversationReference reference, string audience, BotCallbackHandler callback, CancellationToken cancellationToken) { // Use the cloud environment to create the credentials for proactive requests. var proactiveCredentialsResult = await _botFrameworkAuthentication.GetProactiveCredentialsAsync(claimsIdentity, audience, cancellationToken).ConfigureAwait(false); // Create the connector client to use for outbound requests. using (var connectorClient = new ConnectorClient(new Uri(reference.ServiceUrl), proactiveCredentialsResult.Credentials, _httpClient, disposeHttpClient: _httpClient == null)) { // Create a turn context and run the pipeline. using (var context = CreateTurnContext(reference.GetContinuationActivity(), claimsIdentity, proactiveCredentialsResult.Scope, connectorClient, callback)) { // Run the pipeline. await RunPipelineAsync(context, callback, cancellationToken).ConfigureAwait(false); // Cleanup disposable resources in case other code kept a reference to it. context.TurnState.Set <IConnectorClient>(null); } } }
/// <inheritdoc/> public override Task <ServiceClientCredentials> GetProactiveCredentialsAsync(ClaimsIdentity claimsIdentity, string audience, CancellationToken cancellationToken) { return(_inner.GetProactiveCredentialsAsync(claimsIdentity, audience, cancellationToken)); }