/// <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(""); }
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(""); }