コード例 #1
0
        private async void InstantMessageReceived(object sender, MessageSentEventArgs e)
        {
            var    text = e.Text.Replace(Environment.NewLine, string.Empty);
            string myRemoteParticipantUri = (sender as InstantMessageModality).Endpoint.Uri.Replace("sip:", string.Empty);
            var    username_string        = (sender as InstantMessageModality).Participant.Contact.GetContactInformation(ContactInformationType.DisplayName);;

            try
            {
                //LogMessage(myRemoteParticipantUri, text);
                string strResult = "";
                apiAi = Get_apiai_object_from_username(myRemoteParticipantUri);

                List <AIContext> aicontext = new List <AIContext>();
                AIContext        user_info = new AIContext();
                user_info.Name = "skype_username="******"speech"].ToString();
                strResult = ret_text;

                (sender as InstantMessageModality).BeginSendMessage(strResult, null, null);
            }
            catch (Exception ex)
            {
                //LogMessage(myRemoteParticipantUri, ex.Message);
            }
        }
コード例 #2
0
        public override void StartListening(RequestExtras requestExtras = null)
        {
            if (!recognitionActive)
            {
                this.requestExtras = requestExtras;

                var sttIntent = new Intent(RecognizerIntent.ActionRecognizeSpeech);
                sttIntent.PutExtra(RecognizerIntent.ExtraLanguageModel,
                                   RecognizerIntent.LanguageModelFreeForm);

                var language = config.Language.code.Replace('-', '_');

                sttIntent.PutExtra(RecognizerIntent.ExtraLanguage, language);
                sttIntent.PutExtra(RecognizerIntent.ExtraLanguagePreference, language);

                // WORKAROUND for https://code.google.com/p/android/issues/detail?id=75347
                // TODO Must be removed after fix in Android
                sttIntent.PutExtra("android.speech.extra.EXTRA_ADDITIONAL_LANGUAGES", new String[] { });

                RunInUIThread(() =>
                {
                    InitializeRecognizer();
                    speechRecognizer.StartListening(sttIntent);
                    recognitionActive = true;
                });
            }
            else
            {
                Log.Warn(TAG, "Trying to start recognition while another recognition active");
            }
        }
コード例 #3
0
 public AIRequest (string text, RequestExtras requestExtras):this(text)
 {
     if (requestExtras != null)
     {
         requestExtras.CopyTo(this);
     }
 }
コード例 #4
0
        public AIResponse VoiceRequest(Stream voiceStream, RequestExtras requestExtras = null)
        {
            var request = new AIRequest();

            request.Language  = config.Language.code;
            request.Timezone  = TimeZone.CurrentTimeZone.StandardName;
            request.SessionId = SessionId;

            if (requestExtras != null)
            {
                requestExtras.CopyTo(request);
            }

            try
            {
                var httpRequest = (HttpWebRequest)WebRequest.Create(config.RequestUrl);
                httpRequest.Method = "POST";
                httpRequest.Accept = "application/json";

                httpRequest.Headers.Add("Authorization", "Bearer " + config.ClientAccessToken);

                var jsonSettings = new JsonSerializerSettings
                {
                    NullValueHandling = NullValueHandling.Ignore
                };

                var jsonRequest = JsonConvert.SerializeObject(request, Formatting.None, jsonSettings);

                if (config.DebugLog)
                {
                    Debug.WriteLine("Request: " + jsonRequest);
                }

                var multipartClient = new MultipartHttpClient(httpRequest);
                multipartClient.connect();

                multipartClient.addStringPart("request", jsonRequest);
                multipartClient.addFilePart("voiceData", "voice.wav", voiceStream);

                multipartClient.finish();

                var responseJsonString = multipartClient.getResponse();

                if (config.DebugLog)
                {
                    Debug.WriteLine("Response: " + responseJsonString);
                }

                var aiResponse = JsonConvert.DeserializeObject <AIResponse>(responseJsonString);

                CheckForErrors(aiResponse);

                return(aiResponse);
            }
            catch (Exception e)
            {
                throw new AIServiceException(e);
            }
        }
コード例 #5
0
        public ActionResult SendTextMessage(String text, List <AIContext> contexts)
        {
            if (HomeController.apiAi == null)
            {
                var config = new AIConfiguration("2fe096a4e267427c9d3443810a7b82e2", SupportedLanguage.English);
                HomeController.apiAi = new ApiAi(config);
            }

            RequestExtras re = new RequestExtras();

            // TODO: Get the context
            //re.Contexts = (List<AIContext>)HttpContext.Session["Contexts"];
            re.Contexts = contexts;

            AIResponse response = HomeController.apiAi.TextRequest(text, re);

            if (response.IsError)
            {
                Console.Out.Write("There is an error");

                return(Json(new
                {
                    Response = "error"
                }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                Console.Out.Write(response.Result.Fulfillment.Speech);

                if (response.Result.Contexts != null)
                {
                    contexts = new List <AIContext>();

                    foreach (var aoc in response.Result.Contexts.ToList())
                    {
                        AIContext ac = new AIContext();

                        ac.Lifespan   = aoc.Lifespan;
                        ac.Name       = aoc.Name;
                        ac.Parameters = aoc.Parameters.ToDictionary(k => k.Key, k => k.Value.ToString());;

                        contexts.Add(ac);
                    }
                }
                else
                {
                    contexts = null;
                }

                return(Json(new
                {
                    Response = response.Result.Fulfillment.Speech,
                    contexts = contexts
                }));
            }
        }
コード例 #6
0
        static void WaitText()
        {
            string        text    = Console.ReadLine();
            RequestExtras extras  = new RequestExtras();
            AIRequest     request = new AIRequest(text);

            request.SessionId = _SessionId;
            AIResponse response = _ApiAi.TextRequest(request);

            HandleResponse(response);
        }
コード例 #7
0
ファイル: NLPProcessor.cs プロジェクト: noormahammad/MyBot
        public static string GetResponse(string inputMessage)
        {
            var   config = new AIConfiguration(ConfigurationManager.AppSettings["ApiAi-ClientAccessToken"], SupportedLanguage.English);
            ApiAi apiAi  = new ApiAi(config);

            RequestExtras extras      = new RequestExtras(contexts, entities);
            var           response    = apiAi.TextRequest(inputMessage, extras);
            var           outcontexts = response.Result.Contexts;

            var output = response.Result.Fulfillment.Speech;

            return(output);
        }
コード例 #8
0
 protected void ClearRecognizer()
 {
     if (speechRecognizer != null)
     {
         lock (speechRecognizerLock)
         {
             if (speechRecognizer != null)
             {
                 speechRecognizer.Destroy();
                 speechRecognizer = null;
                 requestExtras    = null;
             }
         }
     }
 }
コード例 #9
0
 public override void Cancel()
 {
     if (recognitionActive)
     {
         RunInUIThread(() =>
         {
             lock (speechRecognizerLock)
             {
                 if (recognitionActive)
                 {
                     speechRecognizer.Cancel();
                     recognitionActive = false;
                     requestExtras     = null;
                 }
             }
         });
     }
 }
コード例 #10
0
        private void test_function()
        {
            string username = "******";
            ApiAi  apiAi    = Get_apiai_object_from_username(username);

            List <AIContext> aicontext = new List <AIContext>();
            AIContext        user_info = new AIContext();

            user_info.Name = "skype_username=test";
            aicontext.Add(user_info);
            List <Entity> entity      = new List <Entity>();
            var           extras_info = new RequestExtras(aicontext, entity);
            var           response    = apiAi.TextRequest("I m cold, from someone says", extras_info);

            Newtonsoft.Json.Linq.JObject res_data = (Newtonsoft.Json.Linq.JObject)response.Result.Fulfillment.Messages[0];
            string ret_text = res_data["speech"].ToString();

            MessageBox.Show("for " + username + " : " + ret_text);


            username = "******";
            apiAi    = Get_apiai_object_from_username("user2");

            response = apiAi.TextRequest("yes", extras_info);
            res_data = (Newtonsoft.Json.Linq.JObject)response.Result.Fulfillment.Messages[0];
            ret_text = res_data["speech"].ToString();
            MessageBox.Show("for " + username + " : " + ret_text);


            username = "******";
            apiAi    = Get_apiai_object_from_username(username);

            response = apiAi.TextRequest("no", extras_info);
            res_data = (Newtonsoft.Json.Linq.JObject)response.Result.Fulfillment.Messages[0];
            ret_text = res_data["speech"].ToString();
            MessageBox.Show("for " + username + " : " + ret_text);

            username = "******";
            apiAi    = Get_apiai_object_from_username(username);
            response = apiAi.TextRequest("332", extras_info);
            res_data = (Newtonsoft.Json.Linq.JObject)response.Result.Fulfillment.Messages[0];
            ret_text = res_data["speech"].ToString();
            MessageBox.Show(ret_text);
        }
コード例 #11
0
 public virtual string getIntentApiAi(string str, string context)
 {
     try
     {
         RequestExtras exstra    = new RequestExtras();
         var           contextAI = new AIContext();
         contextAI.Name     = context;
         contextAI.Lifespan = 10;
         exstra.Contexts    = new List <AIContext>();
         exstra.Contexts.Add(contextAI);
         var response = apiAi.TextRequest(str, exstra);
         var intent   = response.Result.Metadata.IntentName;
         return(intent);
     }
     catch (Exception ex)
     {
         return(null);
     }
 }
コード例 #12
0
        public override void Cancel()
        {
            lock (audioRecordLock)
            {
                // cancel recording if necessary
                if (isRecording)
                {
                    StopRecording();
                    isRecording   = false;
                    requestExtras = null;

                    OnListeningFinished();
                }

                // cancel any operation
                var cts = cancellationTokenSource;
                if (cts != null && !cts.IsCancellationRequested)
                {
                    cts.Cancel();
                }
            }
        }
コード例 #13
0
 public static AIResponse TextRequest(this RasaAi rasa, string text, RequestExtras requestExtras)
 {
     return(rasa.TextRequest(new AIRequest(text, requestExtras)));
 }
コード例 #14
0
        public IActionResult GetResponseFromDialogFlow(string question, string context, string conversationId)
        {
            var config = new AIConfiguration("27a5dfa1bde94f2eb109717143748e78", SupportedLanguage.Italian);

            var apiAi = new ApiAiSDK.ApiAi(config);

            switch (context)
            {
            case "mail":
                try
                {
                    var addr = new System.Net.Mail.MailAddress(question);
                    question = "mailUtente";
                }
                catch (Exception)
                {
                    context  = "InvalidMail";
                    question = "mailUtenteNonValida";
                }
                break;

            case "seriale":

                question = "serialeUtente";

                var requests = _dbContext.Get <Freight>(Consts.FreightTable).FindAll().AsQueryable();

                var freight = requests.FirstOrDefault(x => x.FreightDescriptions == question);

                if (freight != null && freight.HasSupport)
                {
                    return(Ok(new
                    {
                        data = "I dati relativi al suo ticket sono : seriale : " + freight.FreightDescriptions +
                               "marca : " + freight.Brand + "modello :" + freight.Model,
                        context = ""
                    }));
                }
                else
                {
                    return(Ok(new
                    {
                        data = "Il suo ticket è stato rifiutato",
                        context = ""
                    }));
                }

            case "nomecognome":

                question = "nomeCognomeUtente";

                break;
            }

            var contexts = new List <AIContext> {
                new AIContext {
                    Name = context, Lifespan = 1
                }
            };

            var requestExtras = new RequestExtras
            {
                Contexts = contexts
            };

            var response = apiAi.TextRequest(question, requestExtras);

            var responseText = response.Result.Fulfillment.Speech;

            if (responseText.Contains("0") && responseText.Contains("#"))
            {
                var link = responseText.Substring(responseText.IndexOf("#", StringComparison.Ordinal) + 1);
                responseText = responseText.Remove(responseText.IndexOf("#", StringComparison.Ordinal));
                responseText = responseText.Replace("0", link);
            }

            var messageDescriptor = new MessageDescriptor
            {
                OpenTicket     = response.Result.Metadata.IntentName.Contains("ConfermaAperturaTicket"),
                Question       = question,
                Response       = responseText,
                SessionId      = response.SessionId,
                TimeStamp      = DateTime.Now,
                ConversationId = conversationId,
                TicketRefused  = response.Result.Metadata.IntentName.Contains("RifiutoAperturaTicket"),
                IntentName     = response.Result.Metadata.IntentName
            };

            _dbContext.Set(messageDescriptor, Consts.MessageDescriptorTable);

            return(Ok(new
            {
                data = responseText,
                context = response.Result.Contexts.FirstOrDefault()?.Name
            }));
        }
コード例 #15
0
 /// <summary>
 /// Starts the voice recording
 /// </summary>
 public abstract void StartListening(RequestExtras requestExtras = null);