Ejemplo n.º 1
0
        /// <summary>
        /// Called when the default topic is started
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task <bool> StartTopic(AlarmBotContext context)
        {
            switch (context.Activity.Type)
            {
            case ActivityTypes.ConversationUpdate:
            {
                // greet when added to conversation
                var activity = context.Activity.AsConversationUpdateActivity();
                if (activity.MembersAdded.Any(m => m.Id == activity.Recipient.Id))
                {
                    await DefaultResponses.ReplyWithGreeting(context);

                    await DefaultResponses.ReplyWithHelp(context);

                    this.Greeted = true;
                }
            }
            break;

            case ActivityTypes.Message:
                // greet on first message if we haven't already
                if (!Greeted)
                {
                    await DefaultResponses.ReplyWithGreeting(context);

                    this.Greeted = true;
                }
                return(await this.ContinueTopic(context));
            }

            return(true);
        }
Ejemplo n.º 2
0
        public Task <bool> ContinueTopic(MultiBotContext context)
        {
            switch (context.Activity.Type)
            {
            case ActivityTypes.Message:
                switch (context.RecognizedIntents.TopIntent?.Name)
                {
                case "demoCards":
                    // switch to card demos
                    context.ConversationState.ActiveTopic = new DemoCardsTopic();
                    return(context.ConversationState.ActiveTopic.StartTopic(context));

                case "luisDemo":
                    // switch to LUIS Demos
                    context.ConversationState.ActiveTopic = new DemoLUISTopic();
                    return(context.ConversationState.ActiveTopic.StartTopic(context));

                case "help":
                    // show help
                    DefaultResponses.ReplyWithHelp(context);
                    return(Task.FromResult(true));

                default:
                    // show our confusion
                    DefaultResponses.ReplyWithConfused(context);
                    return(Task.FromResult(true));
                }

            default:
                break;
            }
            return(Task.FromResult(true));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Method which is called when this topic is resumed after an interruption
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task <bool> ResumeTopic(AlarmBotContext context)
        {
            // just prompt the user to ask what they want to do
            await DefaultResponses.ReplyWithResumeTopic(context);

            return(true);
        }
Ejemplo n.º 4
0
        public Task <bool> StartTopic(MultiBotContext context)
        {
            switch (context.Activity.Type)
            {
            case ActivityTypes.ConversationUpdate:
            {
                // greet when added to conversation
                foreach (var newMember in context.Activity.MembersAdded)
                {
                    if (newMember.Id != context.Activity.Recipient.Id)
                    {
                        DefaultResponses.ReplyWithGreeting(context);
                        DefaultResponses.ReplyWithHelp(context);
                        DefaultResponses.ReplyWithResumeTopic(context);
                        this.Greeted = true;
                    }
                }
            }
            break;

            case ActivityTypes.Message:
                // greet on first message if we haven't already
                if (!Greeted)
                {
                    DefaultResponses.ReplyWithGreeting(context);
                    this.Greeted = true;
                }
                return(this.ContinueTopic(context));
            }
            return(Task.FromResult(true));
        }
Ejemplo n.º 5
0
        public OperationResponse OnOperationRequest(PeerBase peer, OperationRequest operationRequest, SendParameters sendParameters)
        {
            switch ((OperationCode)operationRequest.OperationCode)
            {
            case OperationCode.EnterWorld:
                return(DefaultResponses.CreateNegativeResponse(operationRequest, ReturnCode.OperationNotAllowed));

            case OperationCode.Move:
                return(OperationMove(peer, operationRequest));

            case OperationCode.CharacterAction:
                return(OperationCharacterAction(peer, operationRequest));

            case OperationCode.StartAiLoop:
                AILooper.Instance.Start();
                return(null);

            case OperationCode.ToggleAiLoop:
                AILooper.Instance.ToggleLoop();
                return(null);

            default:
                return(DefaultResponses.CreateNegativeResponse(operationRequest, ReturnCode.OperationNotSupported));
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Called when the default topic is started
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public Task <bool> StartTopic(IBotContext context)
        {
            switch (context.Request.Type)
            {
            case ActivityTypes.ConversationUpdate:
            {
                // greet when added to conversation
                var activity = context.Request.AsConversationUpdateActivity();
                if (activity.MembersAdded.Where(m => m.Id == activity.Recipient.Id).Any())
                {
                    DefaultResponses.ReplyWithGreeting(context);
                    DefaultResponses.ReplyWithHelp(context);
                    this.Greeted = true;
                }
            }
            break;

            case ActivityTypes.Message:
                // greet on first message if we haven't already
                if (!Greeted)
                {
                    DefaultResponses.ReplyWithGreeting(context);
                    this.Greeted = true;
                }
                return(this.ContinueTopic(context));
            }
            return(Task.FromResult(true));
        }
Ejemplo n.º 7
0
        public OperationResponse OnOperationRequest(PeerBase peer, OperationRequest operationRequest, SendParameters sendParameters)
        {
            switch ((OperationCode)operationRequest.OperationCode)
            {
            case OperationCode.EnterWorld:
                return(OperationEnterWorld(peer, operationRequest, sendParameters));

            default:
                return(DefaultResponses.CreateNegativeResponse(operationRequest, ReturnCode.OperationNotSupported));
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Continue the topic, method which is routed to while this topic is active
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public Task <bool> ContinueTopic(IBotContext context)
        {
            var activeTopic = (ITopic)context.State.ConversationProperties[ConversationProperties.ACTIVETOPIC];

            switch (context.Request.Type)
            {
            case ActivityTypes.Message:
                switch (context.TopIntent?.Name)
                {
                case "addAlarm":
                    // switch to addAlarm topic
                    activeTopic = new AddAlarmTopic();
                    context.State.ConversationProperties[ConversationProperties.ACTIVETOPIC] = activeTopic;
                    return(activeTopic.StartTopic(context));

                case "showAlarms":
                    // switch to show alarms topic
                    activeTopic = new ShowAlarmsTopic();
                    context.State.ConversationProperties[ConversationProperties.ACTIVETOPIC] = activeTopic;
                    return(activeTopic.StartTopic(context));

                case "deleteAlarm":
                    // switch to delete alarm topic
                    activeTopic = new DeleteAlarmTopic();
                    context.State.ConversationProperties[ConversationProperties.ACTIVETOPIC] = activeTopic;
                    return(activeTopic.StartTopic(context));

                case "help":
                    // show help
                    DefaultResponses.ReplyWithHelp(context);
                    return(Task.FromResult(true));

                default:
                    // show our confusion
                    DefaultResponses.ReplyWithConfused(context);
                    return(Task.FromResult(true));
                }

            default:
                break;
            }
            return(Task.FromResult(true));
        }
Ejemplo n.º 9
0
        private OperationResponse OperationCharacterAction(PeerBase peer, OperationRequest request)
        {
            log.DebugFormat("Received character action from {0}", m_Peer.Name);
            var actionObject = m_ActionObjectFactory.CreateActionObject(m_Peer.Name, peer.Protocol, request);

            if (actionObject == null)
            {
                return(DefaultResponses.CreateNegativeResponse(request, m_ActionObjectFactory.LastCreationFailReason));
            }

            if (!actionObject.CheckPrerequesite())
            {
                log.InfoFormat("Prerequisite check failed.");
                return(DefaultResponses.CreateActionRequestResponse(request, ReturnCode.Declined));
            }

            actionObject.StartAction();

            return(DefaultResponses.CreateActionRequestResponse(request, ReturnCode.OK));
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Continue the topic, method which is routed to while this topic is active
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task <bool> ContinueTopic(AlarmBotContext context)
        {
            switch (context.Activity.Type)
            {
            case ActivityTypes.Message:
                switch (context.RecognizedIntents.TopIntent?.Name)
                {
                case "addAlarm":
                    // switch to addAlarm topic
                    context.ConversationState.ActiveTopic = new AddAlarmTopic();
                    return(await context.ConversationState.ActiveTopic.StartTopic(context));

                case "showAlarms":
                    // switch to show alarms topic
                    context.ConversationState.ActiveTopic = new ShowAlarmsTopic();
                    return(await context.ConversationState.ActiveTopic.StartTopic(context));

                case "deleteAlarm":
                    // switch to delete alarm topic
                    context.ConversationState.ActiveTopic = new DeleteAlarmTopic();
                    return(await context.ConversationState.ActiveTopic.StartTopic(context));

                case "help":
                    // show help
                    await DefaultResponses.ReplyWithHelp(context);

                    return(true);

                default:
                    // show our confusion
                    await DefaultResponses.ReplyWithConfused(context);

                    return(true);
                }

            default:
                break;
            }

            return(true);
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Called when the default topic is started
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task <bool> StartTopic(NumberBotContext context)
        {
            switch (context.Activity.Type)
            {
            case ActivityTypes.ConversationUpdate:
            {
                // greet when added to conversation
                var activity = context.Activity.AsConversationUpdateActivity();
                if (activity.MembersAdded.Any(m => m.Id == activity.Recipient.Id))
                {
                    this.MinNumber = 1;
                    this.MaxNumber = 100;

                    Random rnd = new Random();
                    this.SecretNumber = rnd.Next(this.MinNumber, this.MaxNumber);
                    context.UserState.SecretNumber = this.SecretNumber;

                    await DefaultResponses.ReplyWithGreeting(context);

                    await DefaultResponses.ReplyWithHelp(context);

                    this.Greeted = true;
                }
            }
            break;

            case ActivityTypes.Message:
                // greet on first message if we haven't already
                if (!Greeted)
                {
                    await DefaultResponses.ReplyWithGreeting(context);

                    this.Greeted = true;
                }
                return(await this.ContinueTopic(context));
            }

            return(true);
        }
Ejemplo n.º 12
0
 public Task <bool> ResumeTopic(MultiBotContext context)
 {
     // just prompt the user to ask what they want to do
     DefaultResponses.ReplyWithResumeTopic(context);
     return(Task.FromResult(true));
 }