/// <summary> /// Authenticate the request and add the service url in the activities to <see cref="MicrosoftAppCredentials.TrustedHostNames"/>. /// </summary> /// <param name="request">The incoming request.</param> /// <param name="activities">The incoming activities.</param> /// <param name="assembly">The assembly that should be resolved. <see cref="ResolveAssembly"/> for more information.</param> /// <param name="token">The cancellation token</param> /// <returns> The <see cref="BotServiceScope"/> that should be disposed when bot service operation is done for the request.</returns> public static async Task <BotServiceScope> AuthenticateAsync(HttpRequestMessage request, IEnumerable <Activity> activities, Assembly assembly = null, CancellationToken token = default(CancellationToken)) { if (await Authenticator.TryAuthenticateAsync(request, activities, token)) { var resolveAssembly = assembly ?? Assembly.GetCallingAssembly(); return(new BotServiceScope(ResolveAssembly.Create(resolveAssembly))); } throw new UnauthorizedAccessException("Bot authentication failed!"); }
/// <summary> /// Initialize bot service by updating the <see cref="Conversation.Container"/> with <see cref="AzureModule"/>. /// </summary> /// <param name="assembly"> The assembly that should be resolved.</param> /// <returns> The <see cref="BotServiceScope"/> that should be disposed when bot service operation is done for the request.</returns> public static BotServiceScope Initialize(Assembly assembly = null) { var resolveAssembly = assembly ?? Assembly.GetCallingAssembly(); // update the container with azure module components var builder = new ContainerBuilder(); builder.RegisterModule(new AzureModule(resolveAssembly)); builder.Update(Conversation.Container); return(new BotServiceScope(ResolveAssembly.Create(resolveAssembly))); }