private ServiceProvider BuildQueryControllerProvider( IBotInputQuery inputQuery, IBotInputChat inputChat, RouteValueDictionary matchedData ) => CollectBaseServiceCollection() .AddSingleton(inputQuery) .AddSingleton(matchedData) .AddSingleton(inputChat) .BuildServiceProvider();
private void RootQueryHandler(IBotInputQuery inputQuery, IBotInputChat inputChat) { var queryAction = FindQueryAction(inputQuery.Payload); var matchedData = queryAction.Metadata.Template.MatchRoute(inputQuery.Payload); using var provider = BuildQueryControllerProvider(inputQuery, inputChat, matchedData); Log(inputQuery); Log(inputChat); Log(queryAction.Metadata); Log(matchedData); EnsureChatSaved(provider, inputChat); CheckDisplayClearing(provider, queryAction, inputChat); HandleView(HandleQuery(provider, queryAction.Method), inputChat); UpdateLastExecutedQuery(provider, queryAction, inputChat); }
private void HandleQuery(IBotInputQuery inputQuery, IBotInputChat inputChat) => TryToExecute(() => RootQueryHandler(inputQuery, inputChat));