コード例 #1
0
        // [START dialogflow_create_intent]
        public static int Create(string projectId,
                                 string displayName,
                                 string messageText,
                                 string[] trainingPhrasesParts)
        {
            var client = IntentsClient.Create();

            var text = new Intent.Types.Message.Types.Text();

            text.Text_.Add(messageText);

            var message = new Intent.Types.Message()
            {
                Text = text
            };

            var phraseParts = new List <Intent.Types.TrainingPhrase.Types.Part>();

            foreach (var part in trainingPhrasesParts)
            {
                phraseParts.Add(new Intent.Types.TrainingPhrase.Types.Part()
                {
                    Text = part
                });
            }

            var trainingPhrase = new Intent.Types.TrainingPhrase();

            trainingPhrase.Parts.AddRange(phraseParts);

            var intent = new Intent();

            intent.DisplayName = displayName;
            intent.Messages.Add(message);
            intent.TrainingPhrases.Add(trainingPhrase);

            var newIntent = client.CreateIntent(
                parent: new ProjectAgentName(projectId),
                intent: intent
                );

            Console.WriteLine($"Created Intent: {newIntent.Name}");

            return(0);
        }
コード例 #2
0
        /// <summary>Snippet for ListIntentsAsync</summary>
        public async Task ListIntentsAsync2()
        {
            // Snippet: ListIntentsAsync(ProjectAgentName,string,string,int?,CallSettings)
            // Create client
            IntentsClient intentsClient = await IntentsClient.CreateAsync();

            // Initialize request argument(s)
            ProjectAgentName parent       = new ProjectAgentName("[PROJECT]");
            string           languageCode = "";
            // Make the request
            PagedAsyncEnumerable <ListIntentsResponse, Intent> response =
                intentsClient.ListIntentsAsync(parent: parent, languageCode: languageCode);

            // Iterate over all response items, lazily performing RPCs as required
            await response.ForEachAsync((Intent item) =>
            {
                // Do something with each item
                Console.WriteLine(item);
            });

            // Or iterate over pages (of server-defined size), performing one RPC per page
            await response.AsRawResponses().ForEachAsync((ListIntentsResponse page) =>
            {
                // Do something with each page of items
                Console.WriteLine("A page of results:");
                foreach (Intent item in page)
                {
                    Console.WriteLine(item);
                }
            });

            // Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required
            int           pageSize   = 10;
            Page <Intent> singlePage = await response.ReadPageAsync(pageSize);

            // Do something with the page of items
            Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
            foreach (Intent item in singlePage)
            {
                Console.WriteLine(item);
            }
            // Store the pageToken, for when the next page is required.
            string nextPageToken = singlePage.NextPageToken;
            // End snippet
        }
コード例 #3
0
        /// <summary>Snippet for UpdateIntentAsync</summary>
        public async Task UpdateIntentAsync_RequestObject()
        {
            // Snippet: UpdateIntentAsync(UpdateIntentRequest,CallSettings)
            // Additional: UpdateIntentAsync(UpdateIntentRequest,CancellationToken)
            // Create client
            IntentsClient intentsClient = await IntentsClient.CreateAsync();

            // Initialize request argument(s)
            UpdateIntentRequest request = new UpdateIntentRequest
            {
                Intent       = new Intent(),
                LanguageCode = "",
            };
            // Make the request
            Intent response = await intentsClient.UpdateIntentAsync(request);

            // End snippet
        }
コード例 #4
0
        /// <summary>Snippet for CreateIntentAsync</summary>
        public async Task CreateIntentAsync_RequestObject()
        {
            // Snippet: CreateIntentAsync(CreateIntentRequest,CallSettings)
            // Additional: CreateIntentAsync(CreateIntentRequest,CancellationToken)
            // Create client
            IntentsClient intentsClient = await IntentsClient.CreateAsync();

            // Initialize request argument(s)
            CreateIntentRequest request = new CreateIntentRequest
            {
                ParentAsProjectAgentName = new ProjectAgentName("[PROJECT]"),
                Intent = new Intent(),
            };
            // Make the request
            Intent response = await intentsClient.CreateIntentAsync(request);

            // End snippet
        }
コード例 #5
0
        /// <summary>Snippet for GetIntentAsync</summary>
        public async Task GetIntentRequestObjectAsync()
        {
            // Snippet: GetIntentAsync(GetIntentRequest, CallSettings)
            // Additional: GetIntentAsync(GetIntentRequest, CancellationToken)
            // Create client
            IntentsClient intentsClient = await IntentsClient.CreateAsync();

            // Initialize request argument(s)
            GetIntentRequest request = new GetIntentRequest
            {
                IntentName   = IntentName.FromProjectLocationAgentIntent("[PROJECT]", "[LOCATION]", "[AGENT]", "[INTENT]"),
                LanguageCode = "",
            };
            // Make the request
            Intent response = await intentsClient.GetIntentAsync(request);

            // End snippet
        }
コード例 #6
0
        /// <summary>Snippet for ListIntents</summary>
        public void ListIntentsResourceNames()
        {
            // Snippet: ListIntents(AgentName, string, int?, CallSettings)
            // Create client
            IntentsClient intentsClient = IntentsClient.Create();
            // Initialize request argument(s)
            AgentName parent = AgentName.FromProjectLocationAgent("[PROJECT]", "[LOCATION]", "[AGENT]");
            // Make the request
            PagedEnumerable <ListIntentsResponse, Intent> response = intentsClient.ListIntents(parent);

            // Iterate over all response items, lazily performing RPCs as required
            foreach (Intent item in response)
            {
                // Do something with each item
                Console.WriteLine(item);
            }

            // Or iterate over pages (of server-defined size), performing one RPC per page
            foreach (ListIntentsResponse page in response.AsRawResponses())
            {
                // Do something with each page of items
                Console.WriteLine("A page of results:");
                foreach (Intent item in page)
                {
                    // Do something with each item
                    Console.WriteLine(item);
                }
            }

            // Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required
            int           pageSize   = 10;
            Page <Intent> singlePage = response.ReadPage(pageSize);

            // Do something with the page of items
            Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
            foreach (Intent item in singlePage)
            {
                // Do something with each item
                Console.WriteLine(item);
            }
            // Store the pageToken, for when the next page is required.
            string nextPageToken = singlePage.NextPageToken;
            // End snippet
        }
コード例 #7
0
        /// <summary>Snippet for BatchUpdateIntentsAsync</summary>
        public async Task BatchUpdateIntentsAsync_RequestObject()
        {
            // Snippet: BatchUpdateIntentsAsync(BatchUpdateIntentsRequest,CallSettings)
            // Create client
            IntentsClient intentsClient = await IntentsClient.CreateAsync();

            // Initialize request argument(s)
            BatchUpdateIntentsRequest request = new BatchUpdateIntentsRequest
            {
                ParentAsProjectAgentName = new ProjectAgentName("[PROJECT]"),
                LanguageCode             = "",
            };
            // Make the request
            Operation <BatchUpdateIntentsResponse, Struct> response =
                await intentsClient.BatchUpdateIntentsAsync(request);

            // Poll until the returned long-running operation is complete
            Operation <BatchUpdateIntentsResponse, Struct> completedResponse =
                await response.PollUntilCompletedAsync();

            // Retrieve the operation result
            BatchUpdateIntentsResponse result = completedResponse.Result;

            // Or get the name of the operation
            string operationName = response.Name;
            // This name can be stored, then the long-running operation retrieved later by name
            Operation <BatchUpdateIntentsResponse, Struct> retrievedResponse =
                await intentsClient.PollOnceBatchUpdateIntentsAsync(operationName);

            // Check if the retrieved long-running operation has completed
            if (retrievedResponse.IsCompleted)
            {
                // If it has completed, then access the result
                BatchUpdateIntentsResponse retrievedResult = retrievedResponse.Result;
            }
            // End snippet
        }
コード例 #8
0
        public async Task CreateAsync()
        {
            try
            {
                IEnumerable <Model.Intent> intentList =
                    (await _intentService.GetIntentsAsync()).GetMappedResponse <IEnumerable <Model.Intent>, IEnumerable <Model.Intent> >(_mapper);

                if (intentList.Any())
                {
                    IntentsClient client = IntentsClient.Create();
                    foreach (Model.Intent intentResponse in intentList)
                    {
                        Intent intent = new Intent();
                        intent.DefaultResponsePlatforms.Add(Platform.ActionsOnGoogle);
                        intent.DisplayName = intentResponse.DisplayName;
                        intent.Messages.Add(AddIntentDefault(intentResponse.Text));
                        intent.Messages.Add(AddCustomPayload(intentResponse.AllocatedTime));

                        if (intentResponse.ParentIntentId != null)
                        {
                            intent.ParentFollowupIntentName = intentList.Where(x => x.Id == intentResponse.ParentIntentId).FirstOrDefault().DialogflowGeneratedName;
                        }

                        if (intentResponse.InputContext != null)
                        {
                            foreach (string inputContext in intentResponse.InputContext.Split(','))
                            {
                                intent.InputContextNames.Add(AddIntentInputContext(inputContext));
                            }
                        }

                        if (intentResponse.OutputContext != null)
                        {
                            foreach (string outputContext in intentResponse.OutputContext.Split(','))
                            {
                                intent.OutputContexts.Add(AddIntentOutputContext(outputContext));
                            }
                        }

                        if (intentResponse.IntentTrainingPhrase.Any())
                        {
                            foreach (Model.IntentTrainingPhrase trainingPhrase in intentResponse.IntentTrainingPhrase)
                            {
                                intent.TrainingPhrases.Add(AddIntentTrainingPhrase(trainingPhrase));
                            }
                        }

                        if (intentResponse.IntentParameter.Any())
                        {
                            foreach (Model.IntentParameter parameter in intentResponse.IntentParameter)
                            {
                                intent.Parameters.Add(AddIntentParameter(parameter));
                            }
                        }

                        if (intentResponse.IntentSuggestion.Any())
                        {
                            intent.Messages.Add(AddIntentSuggestion(intentResponse.IntentSuggestion.Select(x => x.Title).ToList()));
                        }

                        intent = client.CreateIntent(parent: new ProjectAgentName("ht-interview-chatbot"), intent: intent);
                        intentResponse.DialogflowGeneratedIntentId = intent.IntentName.IntentId;
                        intentResponse.DialogflowGeneratedName     = intent.Name;
                        intentResponse.DialogflowGeneratedIntent   = JsonConvert.SerializeObject(intent);
                        await _intentService.UpdateIntentsAsync(_mapper.Map <Model.Intent>(intentResponse));
                    }
                }
            }
            catch (Exception ex)
            {
                string message = ex.Message;
            }
        }
コード例 #9
0
        public IntentoModel ObtenerIntentoDialogFlow(string nombreIntento)
        {
            var pIntento = new IntentoModel();

            try
            {
                var fileSavePath = System.Web.HttpContext.Current.Server.MapPath("~/Dialogflow.json/") + ConstantesWeb.DialogFlow.FilePrivateKeyIdJson;

                if ((System.IO.File.Exists(fileSavePath)))
                {
                    var cred = GoogleCredential.FromFile(fileSavePath);

                    var channel = new Channel(SessionsClient.DefaultEndpoint.Host, SessionsClient.DefaultEndpoint.Port, cred.ToChannelCredentials());

                    var client = IntentsClient.Create(channel);

                    ListIntentsRequest request = new ListIntentsRequest
                    {
                        ParentAsProjectAgentName = new ProjectAgentName(ConstantesWeb.DialogFlow.ProjectId),
                        IntentView = IntentView.Full
                    };

                    var intents = client.ListIntents(request);

                    foreach (var intent in intents)
                    {
                        var intento = new IntentoModel();
                        intento.Id     = intent.IntentName.IntentId;
                        intento.Nombre = intent.DisplayName;


                        if (intento.Nombre.ToUpper().Equals(nombreIntento.ToUpper()))
                        {
                            //Frases de Entrenamiento
                            var feId = 1;
                            foreach (var trainingPhrase in intent.TrainingPhrases)
                            {
                                var fraseEntrenamiento = new FraseEntrenamientoModel();
                                fraseEntrenamiento.Id    = feId++;
                                fraseEntrenamiento.StrId = trainingPhrase.Name;

                                foreach (var phrasePart in trainingPhrase.Parts)
                                {
                                    fraseEntrenamiento.Descripcion = phrasePart.Text;
                                }

                                intento.FrasesEntrenamiento.Add(fraseEntrenamiento);
                            }

                            //Respuestas
                            foreach (var message in intent.Messages)
                            {
                                if (message.Text != null)
                                {
                                    var idRespuesta = 0;
                                    foreach (var text in message.Text.Text_)
                                    {
                                        idRespuesta++;
                                        var respuesta = new RespuestaIntentoModel();
                                        respuesta.Id          = idRespuesta + string.Empty;
                                        respuesta.Descripcion = text;
                                        intento.Respuestas.Add(respuesta);
                                    }
                                }
                            }
                            pIntento = intento;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
            }

            return(pIntento);
        }
コード例 #10
0
        public AlertModel CreateIntent(Intencion intencion, List <FraseEntrenamientoModel> frases)
        {
            var intento   = new IntentoModel();
            var resultado = new AlertModel();

            try
            {
                var fileSavePath = System.Web.HttpContext.Current.Server.MapPath("~/Dialogflow.json/") + ConstantesWeb.DialogFlow.FilePrivateKeyIdJson;

                if ((System.IO.File.Exists(fileSavePath)))
                {
                    var cred    = GoogleCredential.FromFile(fileSavePath);
                    var channel = new Channel(SessionsClient.DefaultEndpoint.Host, SessionsClient.DefaultEndpoint.Port, cred.ToChannelCredentials());
                    var client  = IntentsClient.Create(channel);

                    var intent = new Intent();
                    intent.DisplayName = intencion.Nombre;


                    //Actualizar Frases de Entrenamiento
                    intent.TrainingPhrases.Clear();
                    foreach (var frase_ in frases)
                    {
                        var trainingPhrasesParts = new List <string>();
                        trainingPhrasesParts.Add(frase_.Descripcion);
                        var phraseParts = new List <Intent.Types.TrainingPhrase.Types.Part>();
                        foreach (var part in trainingPhrasesParts)
                        {
                            phraseParts.Add(new Intent.Types.TrainingPhrase.Types.Part()
                            {
                                Text = part
                            });
                        }
                        var trainingPhrase = new Intent.Types.TrainingPhrase();
                        trainingPhrase.Parts.AddRange(phraseParts);
                        intent.TrainingPhrases.Add(trainingPhrase);
                    }

                    //Actualizar Respuesta
                    intent.Messages.Clear();
                    var text = new Intent.Types.Message.Types.Text();
                    text.Text_.Add(intencion.Respuesta);
                    var message_ = new Intent.Types.Message()
                    {
                        Text = text
                    };
                    intent.Messages.Add(message_);


                    var newIntent = client.CreateIntent(
                        parent: new ProjectAgentName(ConstantesWeb.DialogFlow.ProjectId),
                        intent: intent
                        );

                    resultado.Id          = newIntent.IntentName.IntentId;
                    resultado.DisplayName = newIntent.DisplayName;
                    oIBLSolicitud.InsertarIntencionConsulta(newIntent.DisplayName, newIntent.IntentName.IntentId, ConvertidorUtil.GmtToPacific(DateTime.Now), intencion.IdIntencionPadre);
                    resultado.Mensaje = "INSERT-OK";
                }
            }
            catch (Exception ex)
            {
                resultado.MessageError = "ERROR: " + ex.Message;
                resultado.Mensaje      = "INSERT-ERROR";
            }

            return(resultado);
        }
コード例 #11
0
        public List <IntentoModel> ObtenerIntentos()
        {
            var intentos = new List <IntentoModel>();

            try
            {
                List <GSAV.Entity.Objects.Intencion> intenciones = oIBLSolicitud.ObtenerIntenciones().OneResult;


                var fileSavePath = System.Web.HttpContext.Current.Server.MapPath("~/Dialogflow.json/") + ConstantesWeb.DialogFlow.FilePrivateKeyIdJson;

                if ((System.IO.File.Exists(fileSavePath)))
                {
                    var cred = GoogleCredential.FromFile(fileSavePath);

                    var channel = new Channel(SessionsClient.DefaultEndpoint.Host, SessionsClient.DefaultEndpoint.Port, cred.ToChannelCredentials());

                    var client = IntentsClient.Create(channel);

                    ListIntentsRequest request = new ListIntentsRequest
                    {
                        ParentAsProjectAgentName = new ProjectAgentName(ConstantesWeb.DialogFlow.ProjectId),
                        IntentView = IntentView.Full
                    };

                    var intents       = client.ListIntents(request);
                    var intentoValido = false;

                    foreach (var intent in intents)
                    {
                        var intento = new IntentoModel();
                        intento.Id     = intent.IntentName.IntentId;
                        intento.Nombre = intent.DisplayName;
                        intentoValido  = false;

                        var row = intenciones.AsEnumerable().Where(q => q.IdDialogFlow.Equals(intento.Id)).FirstOrDefault();
                        if (row != null)
                        {
                            intento.IdIntencionConsulta = row.IdIntencionConsulta + string.Empty;
                            intento.FechaCreacion       = row.StrFechaCreacion;
                            intento.IdIntencionPadre    = row.IdPadreIntencion + string.Empty;
                            intentoValido = true;
                        }

                        if (intentoValido)
                        {
                            //Frases de Entrenamiento
                            var feId = 1;
                            foreach (var trainingPhrase in intent.TrainingPhrases)
                            {
                                var fraseEntrenamiento = new FraseEntrenamientoModel();
                                fraseEntrenamiento.Id    = feId++;
                                fraseEntrenamiento.StrId = trainingPhrase.Name;

                                foreach (var phrasePart in trainingPhrase.Parts)
                                {
                                    fraseEntrenamiento.Descripcion = phrasePart.Text;
                                }

                                intento.FrasesEntrenamiento.Add(fraseEntrenamiento);
                            }

                            //Respuestas
                            foreach (var message in intent.Messages)
                            {
                                if (message.Text != null)
                                {
                                    var idRespuesta = 0;
                                    foreach (var text in message.Text.Text_)
                                    {
                                        idRespuesta++;
                                        var respuesta = new RespuestaIntentoModel();
                                        respuesta.Id          = idRespuesta + string.Empty;
                                        respuesta.Descripcion = text;
                                        intento.Respuestas.Add(respuesta);
                                    }
                                }
                            }

                            intentos.Add(intento);
                        }
                    }

                    intentos = intentos.OrderBy(x => x.Nombre).ToList();
                }
            }
            catch (Exception ex)
            {
            }

            return(intentos);
        }
コード例 #12
0
        public AlertModel UpdateIntent(Intencion intencion, List <FraseEntrenamientoModel> frases)
        {
            var intento   = new IntentoModel();
            var resultado = new AlertModel();

            try
            {
                var fileSavePath = System.Web.HttpContext.Current.Server.MapPath("~/Dialogflow.json/") + ConstantesWeb.DialogFlow.FilePrivateKeyIdJson;

                if ((System.IO.File.Exists(fileSavePath)))
                {
                    var cred = GoogleCredential.FromFile(fileSavePath);

                    var channel = new Channel(SessionsClient.DefaultEndpoint.Host, SessionsClient.DefaultEndpoint.Port, cred.ToChannelCredentials());

                    var client = IntentsClient.Create(channel);

                    GetIntentRequest getRequest = new GetIntentRequest
                    {
                        IntentName = new IntentName(ConstantesWeb.DialogFlow.ProjectId, intencion.IdDialogFlow),
                        IntentView = IntentView.Full
                    };


                    var intent = client.GetIntent(getRequest);



                    //Actualizar Frases de Entrenamiento
                    intent.TrainingPhrases.Clear();
                    foreach (var frase_ in frases)
                    {
                        var trainingPhrasesParts = new List <string>();
                        trainingPhrasesParts.Add(frase_.Descripcion);
                        var phraseParts = new List <Intent.Types.TrainingPhrase.Types.Part>();
                        foreach (var part in trainingPhrasesParts)
                        {
                            phraseParts.Add(new Intent.Types.TrainingPhrase.Types.Part()
                            {
                                Text = part
                            });
                        }
                        var trainingPhrase = new Intent.Types.TrainingPhrase();
                        trainingPhrase.Parts.AddRange(phraseParts);
                        intent.TrainingPhrases.Add(trainingPhrase);
                    }

                    //Actualizar Respuesta
                    intent.Messages.Clear();
                    var text = new Intent.Types.Message.Types.Text();
                    text.Text_.Add(intencion.Respuesta);
                    var message_ = new Intent.Types.Message()
                    {
                        Text = text
                    };
                    intent.Messages.Add(message_);


                    UpdateIntentRequest updRequest = new UpdateIntentRequest
                    {
                        Intent = intent
                    };
                    Intent response = client.UpdateIntent(updRequest);


                    resultado.DisplayName = response.DisplayName;
                    resultado.Mensaje     = "UPDATE-OK";
                }
            }
            catch (Exception ex)
            {
                resultado.MessageError = "ERROR: " + ex.Message;
                resultado.Mensaje      = "UPDATE-ERROR";
            }

            return(resultado);
        }