Beispiel #1
0
        public static IServiceCollection AddBotMvc(this IServiceCollection services)
        {
            // use your own implementation of ILogger ...
            var logger = new Logger();

            // use PerSecondScheduler to throttle the outgoing messages to 30 messages per second using a multi-level priority queue...
            var scheduler = new PerSecondScheduler(logger, tasksCount: 30, inSeconds: 1);

            // if your controllers are in a differant assembly change it here ...

            var controllersAssembly = Assembly.GetEntryAssembly();
            // var controllersAssembly = typeof(Controllers.HelloController).Assembly

            var router = new BotRouter(
                factory: new BotControllerFactory(scheduler),
                controllersAssembly: controllersAssembly);

            services.AddSingleton <ILogger>(logger);
            services.AddSingleton(router);
            services.AddSingleton(scheduler);

            // Key-value pair of botUsername : BotSession
            var tokens   = GetTokens();
            var sessions = new Dictionary <string, BotSession>();

            foreach (var token in tokens)
            {
                var session = new BotSession(new TelegramBotClient(token), router, logger, token);
                if (registerCertificate)
                {
                    session.RegisterCertificate(
                        certificateFilePath,
                        Path.Combine(publicBaseUrl, session.Username)).Wait();
                }
                sessions.Add(session.Username, session);
            }
            services.AddSingleton <IDictionary <string, BotSession> >(sessions);
            return(services);
        }
Beispiel #2
0
 /// <summary>
 /// Initial Steps
 /// </summary>
 /// <param name="stepContext"></param>
 /// <param name="cancellationToken"></param>
 /// <returns></returns>
 private async Task <DialogTurnResult> InitialStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
 {
     return(await BotRouter.Router(stepContext, _conversationStateAccessor, messagesService));
 }
Beispiel #3
0
 private void Awake()
 {
     instance = this; // make this class accessible from anywhere
 }