2017-03-23 2 views
-2

나는 C# 음성 응용 프로그램에 "Call Mark"라고 물으면 "Yes"라고 말하면 확인을 요청하고 전화 만하도록 방법을 알아낼 수 없습니다.C#에서 확인을 요청하는 방법은 무엇입니까?

case "Call Mark: 
    speak.SpeakAsync("Are you sure"); 

     break; 

내가 부울을 사용해야 할 것이라고 생각,하지만 난 당신이 말을하기 전에 "예"말을 가질 수 있도록 내가 그것을하지 않고 방법을 모른다 "마크를 호출합니다." 제가 시도한 또 다른 방법은 "예"라고했을 때 전화를 걸도록했습니다.

+2

단지 'speak.SpeakAsync'가 bool을 반환하도록하십시오. 그런 다음 실제로 전화를 걸기 전에 해당 값을 확인하십시오. –

+0

당면한 질문과는 관련이 없지만 가능한 모든 명령을 switch 문에 하드 코딩하는 것에 의문을 가질 것입니다 ... 어쨌든 테스트를 제외하고. –

+0

@DangerZone 그렇지 않으면 어떻게합니까? –

답변

0

명확성을 위해 상위 수준 알고리즘을 사용하여 답을 표현하겠습니다.

  1. 기다립니다 "당신이 확실합니까?"
  2. 말하기 "마크 전화"받을 수
  3. 대답이 "예"이면 Mark를 호출하십시오. 코드에서

:

if (speech = "CALL MARK) { 
    var string input = Api.DetectSpeech(Source.Microphone); 
    if (input = "YES") { 
     Phone.DialNumber(Contacts.Mark); 
    } 
} 
+0

고마워요! 코드 형식으로 입력 해주십시오. –

+0

@ ScottGibbard : 물론입니다. 추가 된 코드를 참조하십시오. – recursive

+0

두 가지 문제가 발생했습니다. 1.) "DetectSpeech"가 없습니다. 2) 그것은 "암시 적으로 'string'유형을 'bool'으로 변환 할 수 없습니다. –

1

가장 좋은 방법은 .SpeakAsync() 방법은 부울을 반환하는 것입니다. 그런 다음 실제 전화를 걸기 전에 결과를 확인합니다.

case "Call Mark": 
    bool confirmationResult = speak.SpeakAsync("Are you sure"); 
    if (confirmationResult) 
     MakeCall(); 
    break; 
+0

'speak.SpeakAsync'를 제외하고는 제대로 작동합니다. ("Are you sure");''System.Speech.Synthesis.Prompt '형식을 암시 적으로'bool. '으로 변환 할 수 없습니다. " –

+0

'SpeakAsync()'메서드가 타사 라이브러리에서 온 경우 도서관이 제공하는 아이디어를 활용해야합니다. –

관련 문제