Example #1
0
        /// <summary>
        /// Recebe uma mensagem da Blip e envia para o Watson
        /// </summary>
        /// <param name="message">Padrão da mensagem que a Blip envia</param>
        /// <returns></returns>
        public async Task <string> PostAsync(MessageViewModel message)
        {
            message.Content = message.Content.Replace("\n", " ").Replace("\t", " ").Replace("\r", " ");

            //O Watson espera algumas variaveis de contexto que podemos informar para facilitar o fluxo da conversa.
            Dictionary <string, string> contextVariables = new Dictionary <string, string>
            {
                { "cpf_usuario", null },
                { "nome_usuario", null },
                { "telefone_usuario", null }
            };

            MessageRequestModel messageRequestWatson = new MessageRequestModel()
            {
                Text             = message.Content,
                UserId           = "UserId_" + message.From.Split('@')[0].TrimStart('5'),
                ContextVariables = contextVariables
            };

            var retorno = _watsonBot.SendMessage(messageRequestWatson);

            //Pausa no fluxo do Watson para buscar uma informação na API, depois volta para o Watson
            if (retorno.Output.Actions != null && retorno.Output.Actions.Any())
            {
                foreach (var item in retorno.Output.Actions)
                {
                    switch (item.Name)
                    {
                    case "actionNameABC":

                        break;

                    case "actionNameXYZ":
                        if (retorno.Output.Generic != null && retorno.Output.Generic.Any())
                        {
                            //Envia uma mensagem para a Blip (WhatsApp)
                            await SendMessageBlip(message, retorno);
                        }

                        contextVariables.Add("novaVariavel", "lorem ipsum");

                        messageRequestWatson.ContextVariables = contextVariables;
                        retorno = _watsonBot.SendMessage(messageRequestWatson);
                        break;
                    }
                }
            }

            await SendMessageBlip(message, retorno);

            return("");
        }
Example #2
0
        public async Task <string> PostAsync(MessageViewModel message)
        {
            var retorno = _watsonBot.SendMessage(message.Content, message.From);


            foreach (Generic resp in retorno.output.generic)
            {
                switch (resp.response_type)
                {
                case "text":

                    var messageObj = new
                    {
                        id      = Guid.NewGuid(),
                        to      = message.From,
                        type    = "text/plain",
                        content = resp.text
                    };
                    await _blipService.SendMessageAsync(messageObj);

                    break;

                case "option":
                    string content = resp.title;

                    content += "\n";

                    foreach (Option opt in resp.options)
                    {
                        content += opt.label + " - " + opt.value.input.text + "\n";
                    }

                    var messageObjNew = new
                    {
                        id   = Guid.NewGuid(),
                        to   = message.From,
                        type = "text/plain",
                        content
                    };

                    await _blipService.SendMessageAsync(messageObjNew);



                    break;
                }
            }



            return("");
        }