Beispiel #1
0
        private static string GetUserName(EstablishedConversationModel converstion)
        {
            var username = (string)null;

            if (converstion != null)
            {
                username = converstion.Properties.Profile.ContainsKey(ContactTypes.FullName)
                    ? converstion.Properties.Profile[ContactTypes.FullName]
                    : "No name";
            }

            return(username);
        }
Beispiel #2
0
        private static bool EstablishConversation(HubsterAuthorizer authorizer, HubsterDirectClientCustomer client)
        {
            Console.WriteLine($"Enter a username:");
            var username = Console.ReadLine();

            if (string.IsNullOrWhiteSpace(username))
            {
                return(true);
            }

            var conversationResponse = client.Conversation.Establish(authorizer, GetCustomerConversationRequestModel(username, ChannelType.WebChat));

            if (conversationResponse.StatusCode != HttpStatusCode.OK)
            {
                Console.WriteLine();
                Display(conversationResponse);
                Console.WriteLine();
                return(false);
            }

            _lastConverstion = conversationResponse.Content;
            return(true);
        }
Beispiel #3
0
        /// <summary>
        /// Sends the specified authorizer.
        /// </summary>
        /// <param name="authorizer">The authorizer.</param>
        /// <param name="conversation">The conversation.</param>
        /// <param name="activity">The activity.</param>
        /// <returns></returns>
        public ApiResponse <DirectResponseModel> Send(IHubsterAuthorizer authorizer, EstablishedConversationModel conversation, DirectActivityModel activity)
        {
            var apiResponse = _engineAccess.Send(authorizer, conversation.ConversationId.Value, activity, "customer");

            return(apiResponse);
        }
Beispiel #4
0
        /// <summary>
        /// Gets the specified authorizer.
        /// </summary>
        /// <param name="authorizer">The authorizer.</param>
        /// <param name="conversation">The conversation.</param>
        /// <param name="lastEventId">The last event identifier.</param>
        /// <returns></returns>
        public ApiResponse <IEnumerable <DirectActivityModel> > Get(IHubsterAuthorizer authorizer, EstablishedConversationModel conversation, long lastEventId)
        {
            var apiResponse = _engineAccess.Get(authorizer, conversation.ConversationId.Value, lastEventId, IntegrationType.Customer);

            return(apiResponse);
        }
Beispiel #5
0
        private static void DisplayList(HubsterAuthorizer authorizer, HubsterDirectClientBusiness client, EstablishedConversationModel conversation)
        {
            var apiResponse = client.Activity.Get(authorizer, conversation.ConversationId.Value, 0, IntegrationType.Agent);

            if (apiResponse.StatusCode != HttpStatusCode.OK)
            {
                var issues = JsonConvert.SerializeObject(apiResponse.Errors, Formatting.Indented);
                Display(issues, ConsoleColor.Yellow);
                return;
            }

            Console.Clear();

            if (apiResponse.Content.Any())
            {
                foreach (var activity in apiResponse.Content)
                {
                    Display(activity);
                }
            }
            else
            {
                Display("There are no interactions to display.", ConsoleColor.Yellow);
            }
        }
Beispiel #6
0
        private static void ConversationLoop(HubsterAuthorizer authorizer, HubsterDirectClientBusiness client, EstablishedConversationModel conversation, string username)
        {
            while (true)
            {
                Console.Write($"Sending message to: [CUSTOMER - '{username}']: ");

                var message = Console.ReadLine();
                if (message.ToLower() == "q" ||
                    message.ToLower() == "quit")
                {
                    return;
                }

                if (message.ToLower() == "clear")
                {
                    Console.Clear();
                    continue;
                }

                if (string.IsNullOrWhiteSpace(message))
                {
                    continue;
                }

                var apiResponse = client.Activity.Send(authorizer, conversation.ConversationId.Value, new DirectActivityModel
                {
                    Sender = new DirectSourceModel
                    {
                        IntegrationId = _agentIntegrationId
                    },
                    Message = new DirectTextMessageModel
                    {
                        Text = message
                    },
                });

                if (apiResponse.StatusCode != HttpStatusCode.OK)
                {
                    Display(apiResponse);
                }
            }
        }
Beispiel #7
0
        private static bool PickAvailableConversaton(HubsterAuthorizer authorizer, HubsterDirectClientBusiness client)
        {
            var apiResponse = client.Conversation.GetAllEstablishedByHubId(authorizer, Guid.Parse(_agentHubId));

            if (apiResponse.StatusCode != HttpStatusCode.OK)
            {
                Console.WriteLine();
                Display(apiResponse);
                Console.WriteLine();
                return(false);
            }

            if (apiResponse.Content.Any())
            {
                while (true)
                {
                    Console.Clear();
                    Console.WriteLine("Pick one of the following established conversations:");

                    var i = 1;
                    foreach (var conversation in apiResponse.Content.OrderByDescending(x => x.OpenedDateTime))
                    {
                        Console.WriteLine($"{i++}. {conversation.ConversationId} - {GetUserName(conversation)}");
                    }

                    Console.WriteLine($"{i}. Clear Screen (clear)");
                    Console.WriteLine($"{i+1}. Quit (q or quit)");

                    var selection = Console.ReadLine().ToLower();

                    if (string.IsNullOrWhiteSpace(selection) ||
                        selection == i.ToString() ||
                        selection == "clear")
                    {
                        Console.Clear();
                        continue;
                    }

                    if (selection == (i + 1).ToString() ||
                        selection == "q" ||
                        selection == "quit")
                    {
                        Console.Clear();
                        return(false);
                    }

                    if (int.TryParse(selection, out int result) == false)
                    {
                        Console.Clear();
                        continue;
                    }

                    if (result < 0 || result > i)
                    {
                        Console.Clear();
                        continue;
                    }

                    _lastConverstion = apiResponse.Content.ToList()[result - 1];
                    return(true);
                }
            }
            else
            {
                Display("There are no established conversations to display.", ConsoleColor.Yellow);
                return(false);
            }
        }