Esempio n. 1
0
        static async Task Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile(appConfigName, optional: false, reloadOnChange: true);
            var configurations = builder.Build();
            var genesysConfig  = configurations.Get <GenesysConfig>();
            var pcIds          = configurations.Get <PurecloudDataIds>();
            var loggerFactory  = LoggerFactory.Create(builder => builder.AddConfiguration(configurations.GetSection("Logging")).AddConsole());

            var logger = loggerFactory.CreateLogger("Genesys");

            using (var topics = new GenesysTopics(genesysConfig, logger))
            {
                using (var notifications = await topics
                                           .Add <QueueConversationEmailEventTopicEmailConversation>("v2.routing.queues.{id}.conversations.emails", pcIds.Queues)
                                           .Add <NotificationData <PresenceEventUserPresence> >("v2.users.{id}.presence", pcIds.Users)
                                           .CreateAsync())
                {
                    notifications.Streams.Domain
                    .OfType <QueueConversationEmailEventTopicEmailConversation>()
                    .Subscribe(e =>
                    {
                        Console.WriteLine("[{0}] {1}", DateTime.Now, e.Id);
                        foreach (var item in e.Participants)
                        {
                            Console.WriteLine(item);
                        }
                    });

                    notifications.Streams.Domain
                    .OfType <NotificationData <PresenceEventUserPresence> >()
                    .Where(p => p.TopicName.Contains("b16b0516") && p.EventBody.PresenceDefinition?.SystemPresence == "AVAILABLE")
                    .Subscribe(p => Console.WriteLine("[{0}] Taras-{1} AVAILABLE with filtering.", DateTime.Now, p.UserId()));

                    notifications.Streams.Domain
                    .OfType <NotificationData <PresenceEventUserPresence> >()
                    .Select(p => new PurecloudUserPresence(p.UserId(), p.EventBody))
                    .Subscribe(up => Console.WriteLine("[{0}] User-{1} {2}", DateTime.Now, up.Id, up.Presence));

                    notifications.Streams.Pong
                    .Subscribe(_ => Console.WriteLine("Pong"));
                    notifications.Streams.Heartbeats
                    .Subscribe(_ => Console.WriteLine("Heart beat"));
                    notifications.Streams.SocketClosing
                    .Subscribe(_ => Console.WriteLine("Socket closing"));
                    notifications.Ping();
                    Console.ReadLine();
                }
            }
        }
Esempio n. 2
0
        static async Task Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile(appConfigName, optional: false, reloadOnChange: true);
            var configurations = builder.Build();
            var genesysConfig  = configurations.Get <GenesysConfig>();
            var pcIds          = configurations.Get <PurecloudDataIds>();
            var loggerFactory  = LoggerFactory.Create(builder => builder.AddConfiguration(configurations.GetSection("Logging")).AddConsole());

            var logger = loggerFactory.CreateLogger("Genesys");

            using (var topics = new GenesysTopics(genesysConfig, logger))
            {
                using (var notifications = await topics
                                           .Add <QueueConversationChatEventTopicChatConversation>("v2.routing.queues.{id}.conversations.emails", pcIds.Queues)
                                           .Add <PresenceEventUserPresence>("v2.users.{id}.presence", pcIds.Users)
                                           .CreateAsync())
                {
                    notifications.Streams.Domain
                    .OfType <QueueConversationChatEventTopicChatConversation>()
                    .Subscribe(e => Console.WriteLine("{0} {1}", e.Id, e.Participants.Count));
                    notifications.Streams.Domain
                    .OfType <PresenceEventUserPresence>()
                    .Subscribe(p => Console.WriteLine("Presence {0}", p?.PresenceDefinition?.SystemPresence));
                    notifications.Streams.Domain
                    .Subscribe(obj => Console.WriteLine(obj.ToString()));
                    notifications.Streams.Pong
                    .Subscribe(_ => Console.WriteLine("Pong"));
                    notifications.Streams.Heartbeats
                    .Subscribe(_ => Console.WriteLine("Heart beat"));
                    notifications.Streams.SocketClosing
                    .Subscribe(_ => Console.WriteLine("Socket closing"));
                    notifications.Ping();
                    Console.ReadLine();
                }
            }
        }