Пример #1
0
        private void TriggerCaseOne(string recipientId)
        {
            var flow        = new DialogueFlow(recipientId);
            var messageData = flow.GetCaseOne();

            _messageSender.CallSendAPI(messageData);
        }
        public bool MessageHandled(dynamic message)
        {
            var result = message.account_linking != null;

            if (result)
            {
                string senderID    = message.sender.id;
                var    recipientID = message.recipient.id;

                string status   = message.account_linking.status;
                string authCode = message.account_linking.authorization_code;

                _logger.LogInformation(
                    string.Format("Received account link event with for user {0} with status {1} " +
                                  "and auth code {2} ", senderID, status, authCode));

                if (authCode == "1")
                {
                    var flow        = new DialogueFlow(senderID);
                    var messageData = flow.GetCaseThree();
                    _messageSender.CallSendAPI(messageData);
                }

                else if (authCode == "2")
                {
                    var flow        = new DialogueFlow(senderID);
                    var messageData = flow.GetSuccessCase();
                    _messageSender.CallSendAPI(messageData);
                }
            }
            return(result);
        }
Пример #3
0
        public bool MessageHandled(dynamic message)
        {
            var result = message.postback != null;

            if (result)
            {
                string senderID       = message.sender.id;
                string recipientID    = message.recipient.id;
                string timeOfPostback = message.timestamp;

                // The 'payload' param is a developer-defined field which is set in a postback
                // button for Structured Messages.
                var    payload  = message.postback.payload;
                string pyldText = payload.ToString();

                _logger.LogInformation(
                    string.Format("Received postback for user {0} and page {1} with payload '{2}' " +
                                  "at {3}", senderID, recipientID, pyldText, timeOfPostback));


                if (pyldText == "1")
                {
                    var flow        = new DialogueFlow(senderID);
                    var messageData = flow.GetCaseTwo();
                    _messageSender.CallSendAPI(messageData);
                }
                else if (pyldText == "5")
                {
                    var flow        = new DialogueFlow(senderID);
                    var messageData = flow.GetCaseThree();
                    _messageSender.CallSendAPI(messageData);
                }
                else if (pyldText == "6")
                {
                    _messageSender.SendTextMessage(senderID, "Thank you!");
                }
            }
            return(result);
        }
        public void OnTextChanged(DialogueFlow dialogue, TextData text, List <TextAnswerData> answers, SettingsData settings)
        {
            // Select and open a skin
            if (settings.Skin == "")
            {
                settings.Skin = (dialogue.DefaultSkin != "") ? dialogue.DefaultSkin : DefaultSkin;
            }

            DialogueSystemUISkin skin;

            if (!_activeSkins.TryGetValue(dialogue.Behaviour, out skin) || skin.Name != settings.Skin)
            {
                skin = ActivateSkin(dialogue.Behaviour, settings.Skin);
            }

            if (skin != null)
            {
                // Set the actor's name and portrait
                string name     = text.Name;
                Sprite portrait = text.Portrait;
                if (dialogue.Behaviour.ActorEnabled)
                {
                    if (name == "")
                    {
                        name = dialogue.Behaviour.ActorName;
                    }
                    if (portrait == null)
                    {
                        portrait = dialogue.Behaviour.ActorPortrait;
                    }
                }
                if (name == "")
                {
                    name = dialogue.Behaviour.gameObject.name;
                }

                skin.SetText(name, portrait, text.Text);
            }
        }
        public void OnTextChanged(DialogueFlow dialogue, TextData text, List <TextAnswerData> answers, SettingsData settings)
        {
            _behaviour = dialogue.Behaviour;

            // Select and open a skin
            if (settings.Skin == "")
            {
                settings.Skin = (dialogue.DefaultSkin != "") ? dialogue.DefaultSkin : DefaultSkin;
            }

            SelectSkin(settings.Skin);
            if (_activeSkin == null)
            {
                RunemarkDebug.Warning(settings.Skin + " skin doesn't exists in this canvas: " + gameObject.name);
                return;
            }

            // Stop the audio if currently playing
            if (_audioSource.isPlaying)
            {
                _audioSource.Stop();
            }

            // Set the actor's name and portrait
            string name     = text.Name;
            Sprite portrait = text.Portrait;

            _activeSkin.SetText(name, portrait, text.Text);
            _activeSkin.HideInputAnswer();

            _activeSkin.HideAnswers(0);

            // Set the answers
            int cnt = 0;

            foreach (var a in answers)
            {
                if (a.UseCustomUI)
                {
                    _activeSkin.SetCustomAnswer(a.UIElementName, a);
                }
                else if (answers.Count > cnt)
                {
                    _activeSkin.SetAnswer(cnt, a);
                    cnt++;
                }
            }
            // _activeSkin.HideAnswers(cnt);

            // Play Audio if any
            if (text.Audio != null)
            {
                _audioStopTime    = text.AudioEndTime;
                _audioSource.clip = text.Audio;
                _audioSource.time = text.AudioStartTime;

                if (text.AudioDelay > 0)
                {
                    _audioSource.PlayDelayed(text.AudioDelay);
                }
                else
                {
                    _audioSource.Play();
                }
            }

            // Set the timer
            if (_behaviour.Timer != null && cnt > 0)
            {
                _activeSkin.StartTimer(_behaviour.Timer.Seconds);
            }
            else
            {
                _activeSkin.HideTimer();
            }
        }