Sdílet prostřednictvím


Shromáždění uživatelského vstupu pomocí akce Rozpoznávání

Tato příručka vám pomůže začít rozpoznávat vstupY DTMF poskytované účastníky prostřednictvím sady SDK pro automatizaci volání ve službě Azure Communication Services.

Požadavky

  • Podrobnosti o vytvoření účtu Azure s aktivním předplatným najdete v tématu Vytvoření účtu zdarma.
  • Prostředek Azure Communication Services Viz Vytvoření prostředku Azure Communication Services. Poznamenejte si připojovací řetězec pro tento prostředek.
  • Vytvořte novou aplikaci webové služby pomocí sady SDK pro automatizaci volání.
  • Nejnovější knihovna .NET pro váš operační systém.
  • Nejnovější balíček NuGet.

Funkce AI

Technické specifikace

K dispozici jsou následující parametry pro přizpůsobení funkce Recognize:

Parametr Typ Výchozí (pokud není zadáno) Popis Povinné, nebo volitelné
Prompt

(Podrobnosti najdete v tématu Přizpůsobení hlasových výzev uživatelům pomocí akce Přehrát)
FileSource, TextSource Nenastaveno Zpráva, která se má přehrát před rozpoznáním vstupu. Volitelné
InterToneTimeout TimeSpan 2 sekundy

Min: 1 sekunda
Max: 60 sekund
Omezte v sekundách, po které služba Azure Communication Services čeká, než volající stiskne jinou číslici (časový limit mezi číslicemi). Volitelné
InitialSegmentationSilenceTimeoutInSeconds Celé číslo 0,5 sekundy Jak dlouho akce rozpoznává čekání na vstup před zvážením časového limitu. Podívejte se, jak rozpoznávat řeč. Volitelné
RecognizeInputsType Výčet Dtmf Typ rozpoznaného vstupu Možnosti jsou dtmf, choices, speecha speechordtmf. Požaduje se
InitialSilenceTimeout TimeSpan 5 sekund

Minimum: 0 sekund
Max: 300 sekund (DTMF)
Max: 20 sekund (Volby)
Max: 20 sekund (Řeč)
Počáteční časový limit ticha upraví, kolik zvuku není povoleno před frází před pokusem o rozpoznávání skončí ve výsledku "žádná shoda". Podívejte se, jak rozpoznávat řeč. Volitelné
MaxTonesToCollect Celé číslo Bez výchozího nastavení

Min: 1
Počet číslic, které vývojář očekává jako vstup od účastníka. Požaduje se
StopTones IEnumeration<DtmfTone> Nenastaveno Číslice účastníci mohou stisknout řídicí znak z dávkové události DTMF. Volitelné
InterruptPrompt Bool True Pokud má účastník možnost přerušit playMessage stisknutím číslice. Volitelné
InterruptCallMediaOperation Bool True Pokud je tento příznak nastavený, přeruší aktuální operaci média volání. Pokud se například přehrává jakýkoli zvuk, přeruší tuto operaci a zahájí rozpoznávání. Volitelné
OperationContext String Nenastaveno Řetězec, který můžou vývojáři předat střední akci, což je užitečné, když vývojářům umožní ukládat kontext o událostech, které obdrží. Volitelné
Phrases String Nenastaveno Seznam frází přidružených k popisku Když uslyšíte některou z těchto frází, výsledkem je úspěšné uznání. Požaduje se
Tone String Nenastaveno Tón, který se má rozpoznat, pokud se uživatel rozhodne místo použití řeči stisknout číslo. Volitelné
Label String Nenastaveno Hodnota klíče pro rozpoznávání. Požaduje se
Language String En-us Jazyk, který se používá k rozpoznávání řeči. Volitelné
EndSilenceTimeout TimeSpan 0,5 sekundy Poslední pozastavení mluvčího sloužícího ke zjištění konečného výsledku, který se vygeneruje jako řeč. Volitelné

Poznámka:

V situacích, kdy jsou recognizeInputsTypev DTMF i řeči, akce rozpoznávání funguje na prvním přijatém vstupním typu. Pokud například uživatel nejprve stiskne číslo klávesnice, akce rozpoznávání ji považuje za událost DTMF a pokračuje v naslouchání tónům DTMF. Pokud uživatel mluví jako první, akce rozpoznávání řeči ji považuje za událost rozpoznávání řeči a naslouchá hlasovému vstupu.

Vytvoření nové aplikace jazyka C#

V okně konzoly operačního systému pomocí dotnet příkazu vytvořte novou webovou aplikaci.

dotnet new web -n MyApplication

Instalace balíčku NuGet

Získání balíčku NuGet z galerie NuGet | Azure.Communication.CallAutomation. Podle pokynů nainstalujte balíček.

Vytvoření hovoru

V tomto okamžiku byste měli být obeznámeni se spouštěním volání. Další informace o volání najdete v tématu Rychlý start: Uskutečnění a odchozí volání. Můžete také použít fragment kódu, který je zde k dispozici, abyste pochopili, jak odpovědět na volání.

var callAutomationClient = new CallAutomationClient("<Azure Communication Services connection string>");

var answerCallOptions = new AnswerCallOptions("<Incoming call context once call is connected>", new Uri("<https://sample-callback-uri>"))  
{  
    CallIntelligenceOptions = new CallIntelligenceOptions() { CognitiveServicesEndpoint = new Uri("<Azure Cognitive Services Endpoint>") } 
};  

var answerCallResult = await callAutomationClient.AnswerCallAsync(answerCallOptions); 

Volání akce rozpoznávání

Když vaše aplikace odpoví na hovor, můžete zadat informace o rozpoznávání vstupu účastníka a přehrání výzvy.

DTMF

var maxTonesToCollect = 3;
String textToPlay = "Welcome to Contoso, please enter 3 DTMF.";
var playSource = new TextSource(textToPlay, "en-US-ElizabethNeural");
var recognizeOptions = new CallMediaRecognizeDtmfOptions(targetParticipant, maxTonesToCollect) {
  InitialSilenceTimeout = TimeSpan.FromSeconds(30),
    Prompt = playSource,
    InterToneTimeout = TimeSpan.FromSeconds(5),
    InterruptPrompt = true,
    StopTones = new DtmfTone[] {
      DtmfTone.Pound
    },
};
var recognizeResult = await callAutomationClient.GetCallConnection(callConnectionId)
  .GetCallMedia()
  .StartRecognizingAsync(recognizeOptions);

U toků řeči na text akce Rozpoznávání volání podporuje také použití vlastních modelů řeči. Funkce, jako jsou vlastní modely řeči, můžou být užitečné při vytváření aplikace, která potřebuje naslouchat složitým slovům, kterým výchozí modely převodu řeči na text nemusí rozumět. Jedním z příkladů je, že vytváříte aplikaci pro telemedický průmysl a váš virtuální agent musí být schopný rozpoznat lékařské termíny. Další informace najdete v článku Vytvoření vlastního projektu řeči.

Volby převodu řeči na text

var choices = new List < RecognitionChoice > {
  new RecognitionChoice("Confirm", new List < string > {
    "Confirm",
    "First",
    "One"
  }) {
    Tone = DtmfTone.One
  },
  new RecognitionChoice("Cancel", new List < string > {
    "Cancel",
    "Second",
    "Two"
  }) {
    Tone = DtmfTone.Two
  }
};
String textToPlay = "Hello, This is a reminder for your appointment at 2 PM, Say Confirm to confirm your appointment or Cancel to cancel the appointment. Thank you!";

var playSource = new TextSource(textToPlay, "en-US-ElizabethNeural");
var recognizeOptions = new CallMediaRecognizeChoiceOptions(targetParticipant, choices) {
  InterruptPrompt = true,
    InitialSilenceTimeout = TimeSpan.FromSeconds(30),
    Prompt = playSource,
    OperationContext = "AppointmentReminderMenu",
    //Only add the SpeechModelEndpointId if you have a custom speech model you would like to use
    SpeechModelEndpointId = "YourCustomSpeechModelEndpointId"
};
var recognizeResult = await callAutomationClient.GetCallConnection(callConnectionId)
  .GetCallMedia()
  .StartRecognizingAsync(recognizeOptions);

Převod řeči na text

String textToPlay = "Hi, how can I help you today?";
var playSource = new TextSource(textToPlay, "en-US-ElizabethNeural");
var recognizeOptions = new CallMediaRecognizeSpeechOptions(targetParticipant) {
  Prompt = playSource,
    EndSilenceTimeout = TimeSpan.FromMilliseconds(1000),
    OperationContext = "OpenQuestionSpeech",
    //Only add the SpeechModelEndpointId if you have a custom speech model you would like to use
    SpeechModelEndpointId = "YourCustomSpeechModelEndpointId"
};
var recognizeResult = await callAutomationClient.GetCallConnection(callConnectionId)
  .GetCallMedia()
  .StartRecognizingAsync(recognizeOptions);

Převod řeči na text nebo DTMF

var maxTonesToCollect = 1; 
String textToPlay = "Hi, how can I help you today, you can press 0 to speak to an agent?"; 
var playSource = new TextSource(textToPlay, "en-US-ElizabethNeural"); 
var recognizeOptions = new CallMediaRecognizeSpeechOrDtmfOptions(targetParticipant, maxTonesToCollect) 
{ 
    Prompt = playSource, 
    EndSilenceTimeout = TimeSpan.FromMilliseconds(1000), 
    InitialSilenceTimeout = TimeSpan.FromSeconds(30), 
    InterruptPrompt = true, 
    OperationContext = "OpenQuestionSpeechOrDtmf",
    //Only add the SpeechModelEndpointId if you have a custom speech model you would like to use
    SpeechModelEndpointId = "YourCustomSpeechModelEndpointId" 
}; 
var recognizeResult = await callAutomationClient.GetCallConnection(callConnectionId) 
    .GetCallMedia() 
    .StartRecognizingAsync(recognizeOptions); 

Poznámka:

Pokud parametry nejsou nastavené, použijí se výchozí hodnoty tam, kde je to možné.

Příjem aktualizací událostí rozpoznávání

Vývojáři se můžou přihlásit k odběru RecognizeCompleted a RecognizeFailed událostem v registrovaném zpětném volání webhooku. Pomocí tohoto zpětného volání s obchodní logikou v aplikaci můžete určit další kroky, kdy dojde k jedné z událostí.

Příklad, jak můžete deserializovat událost RecognizeCompleted :

if (acsEvent is RecognizeCompleted recognizeCompleted) 
{ 
    switch (recognizeCompleted.RecognizeResult) 
    { 
        case DtmfResult dtmfResult: 
            //Take action for Recognition through DTMF 
            var tones = dtmfResult.Tones; 
            logger.LogInformation("Recognize completed succesfully, tones={tones}", tones); 
            break; 
        case ChoiceResult choiceResult: 
            // Take action for Recognition through Choices 
            var labelDetected = choiceResult.Label; 
            var phraseDetected = choiceResult.RecognizedPhrase; 
            // If choice is detected by phrase, choiceResult.RecognizedPhrase will have the phrase detected, 
            // If choice is detected using dtmf tone, phrase will be null 
            logger.LogInformation("Recognize completed succesfully, labelDetected={labelDetected}, phraseDetected={phraseDetected}", labelDetected, phraseDetected);
            break; 
        case SpeechResult speechResult: 
            // Take action for Recognition through Choices 
            var text = speechResult.Speech; 
            logger.LogInformation("Recognize completed succesfully, text={text}", text); 
            break; 
        default: 
            logger.LogInformation("Recognize completed succesfully, recognizeResult={recognizeResult}", recognizeCompleted.RecognizeResult); 
            break; 
    } 
} 

Příklad, jak můžete deserializovat událost RecognizeFailed :

if (acsEvent is RecognizeFailed recognizeFailed) 
{ 
    if (MediaEventReasonCode.RecognizeInitialSilenceTimedOut.Equals(recognizeFailed.ReasonCode)) 
    { 
        // Take action for time out 
        logger.LogInformation("Recognition failed: initial silencev time out"); 
    } 
    else if (MediaEventReasonCode.RecognizeSpeechOptionNotMatched.Equals(recognizeFailed.ReasonCode)) 
    { 
        // Take action for option not matched 
        logger.LogInformation("Recognition failed: speech option not matched"); 
    } 
    else if (MediaEventReasonCode.RecognizeIncorrectToneDetected.Equals(recognizeFailed.ReasonCode)) 
    { 
        // Take action for incorrect tone 
        logger.LogInformation("Recognition failed: incorrect tone detected"); 
    } 
    else 
    { 
        logger.LogInformation("Recognition failed, result={result}, context={context}", recognizeFailed.ResultInformation?.Message, recognizeFailed.OperationContext); 
    } 
} 

Příklad, jak můžete deserializovat událost RecognizeCanceled :

if (acsEvent is RecognizeCanceled { OperationContext: "AppointmentReminderMenu" })
        {
            logger.LogInformation($"RecognizeCanceled event received for call connection id: {@event.CallConnectionId}");
            //Take action on recognize canceled operation
           await callConnection.HangUpAsync(forEveryone: true);
        }

Požadavky

Funkce AI

Technické specifikace

K dispozici jsou následující parametry pro přizpůsobení funkce Recognize:

Parametr Typ Výchozí (pokud není zadáno) Popis Povinné, nebo volitelné
Prompt

(Podrobnosti najdete v tématu Přizpůsobení hlasových výzev uživatelům pomocí akce Přehrát)
FileSource, TextSource Nenastaveno Zpráva, která se má přehrát před rozpoznáním vstupu. Volitelné
InterToneTimeout TimeSpan 2 sekundy

Min: 1 sekunda
Max: 60 sekund
Omezte v sekundách, po které služba Azure Communication Services čeká, než volající stiskne jinou číslici (časový limit mezi číslicemi). Volitelné
InitialSegmentationSilenceTimeoutInSeconds Celé číslo 0,5 sekundy Jak dlouho akce rozpoznává čekání na vstup před zvážením časového limitu. Podívejte se, jak rozpoznávat řeč. Volitelné
RecognizeInputsType Výčet Dtmf Typ rozpoznaného vstupu Možnosti jsou dtmf, choices, speecha speechordtmf. Požaduje se
InitialSilenceTimeout TimeSpan 5 sekund

Minimum: 0 sekund
Max: 300 sekund (DTMF)
Max: 20 sekund (Volby)
Max: 20 sekund (Řeč)
Počáteční časový limit ticha upraví, kolik zvuku není povoleno před frází před pokusem o rozpoznávání skončí ve výsledku "žádná shoda". Podívejte se, jak rozpoznávat řeč. Volitelné
MaxTonesToCollect Celé číslo Bez výchozího nastavení

Min: 1
Počet číslic, které vývojář očekává jako vstup od účastníka. Požaduje se
StopTones IEnumeration<DtmfTone> Nenastaveno Číslice účastníci mohou stisknout řídicí znak z dávkové události DTMF. Volitelné
InterruptPrompt Bool True Pokud má účastník možnost přerušit playMessage stisknutím číslice. Volitelné
InterruptCallMediaOperation Bool True Pokud je tento příznak nastavený, přeruší aktuální operaci média volání. Pokud se například přehrává jakýkoli zvuk, přeruší tuto operaci a zahájí rozpoznávání. Volitelné
OperationContext String Nenastaveno Řetězec, který můžou vývojáři předat střední akci, což je užitečné, když vývojářům umožní ukládat kontext o událostech, které obdrží. Volitelné
Phrases String Nenastaveno Seznam frází přidružených k popisku Když uslyšíte některou z těchto frází, výsledkem je úspěšné uznání. Požaduje se
Tone String Nenastaveno Tón, který se má rozpoznat, pokud se uživatel rozhodne místo použití řeči stisknout číslo. Volitelné
Label String Nenastaveno Hodnota klíče pro rozpoznávání. Požaduje se
Language String En-us Jazyk, který se používá k rozpoznávání řeči. Volitelné
EndSilenceTimeout TimeSpan 0,5 sekundy Poslední pozastavení mluvčího sloužícího ke zjištění konečného výsledku, který se vygeneruje jako řeč. Volitelné

Poznámka:

V situacích, kdy jsou recognizeInputsTypev DTMF i řeči, akce rozpoznávání funguje na prvním přijatém vstupním typu. Pokud například uživatel nejprve stiskne číslo klávesnice, akce rozpoznávání ji považuje za událost DTMF a pokračuje v naslouchání tónům DTMF. Pokud uživatel mluví jako první, akce rozpoznávání řeči ji považuje za událost rozpoznávání řeči a naslouchá hlasovému vstupu.

Vytvoření nové aplikace v Javě

V terminálu nebo příkazovém okně přejděte do adresáře, do kterého chcete vytvořit aplikaci v Javě. Spuštěním mvn příkazu vygenerujte projekt Java ze šablony maven-archetype-quickstart.

mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

Příkaz mvn vytvoří adresář se stejným názvem jako artifactId argument. Adresář src/main/java obsahuje zdrojový kód projektu. Adresář src/test/java obsahuje zdroj testu.

Všimněte si, že generate krok vytvořil adresář se stejným názvem jako .artifactId Adresář src/main/java obsahuje zdrojový kód. Adresář src/test/java obsahuje testy. Soubor pom.xml je projektový objektový model (POM).

Aktualizujte soubory POM aplikací tak, aby používaly Javu 8 nebo vyšší.

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Přidání odkazů na balíčky

Do souboru POM přidejte následující odkaz na projekt:

azure-communication-callautomation

<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-communication-callautomation</artifactId>
  <version>1.0.0</version>
</dependency>

Vytvoření hovoru

V tomto okamžiku byste měli být obeznámeni se spouštěním volání. Další informace o volání najdete v tématu Rychlý start: Uskutečnění a odchozí volání. Můžete také použít fragment kódu, který je zde k dispozici, abyste pochopili, jak odpovědět na volání.

CallIntelligenceOptions callIntelligenceOptions = new CallIntelligenceOptions().setCognitiveServicesEndpoint("https://sample-cognitive-service-resource.cognitiveservices.azure.com/"); 
answerCallOptions = new AnswerCallOptions("<Incoming call context>", "<https://sample-callback-uri>").setCallIntelligenceOptions(callIntelligenceOptions); 
Response < AnswerCallResult > answerCallResult = callAutomationClient
  .answerCallWithResponse(answerCallOptions)
  .block();

Volání akce rozpoznávání

Když vaše aplikace odpoví na hovor, můžete zadat informace o rozpoznávání vstupu účastníka a přehrání výzvy.

DTMF

var maxTonesToCollect = 3;
String textToPlay = "Welcome to Contoso, please enter 3 DTMF.";
var playSource = new TextSource() 
    .setText(textToPlay) 
    .setVoiceName("en-US-ElizabethNeural");

var recognizeOptions = new CallMediaRecognizeDtmfOptions(targetParticipant, maxTonesToCollect) 
    .setInitialSilenceTimeout(Duration.ofSeconds(30)) 
    .setPlayPrompt(playSource) 
    .setInterToneTimeout(Duration.ofSeconds(5)) 
    .setInterruptPrompt(true) 
    .setStopTones(Arrays.asList(DtmfTone.POUND));

var recognizeResponse = callAutomationClient.getCallConnectionAsync(callConnectionId) 
    .getCallMediaAsync() 
    .startRecognizingWithResponse(recognizeOptions) 
    .block(); 

log.info("Start recognizing result: " + recognizeResponse.getStatusCode()); 

U toků řeči na text akce Rozpoznávání volání podporuje také použití vlastních modelů řeči. Funkce, jako jsou vlastní modely řeči, můžou být užitečné při vytváření aplikace, která potřebuje naslouchat složitým slovům, kterým výchozí modely převodu řeči na text nemusí rozumět. Jedním z příkladů je, že vytváříte aplikaci pro telemedický průmysl a váš virtuální agent musí být schopný rozpoznat lékařské termíny. Další informace najdete v článku Vytvoření vlastního projektu řeči.

Volby převodu řeči na text

var choices = Arrays.asList(
  new RecognitionChoice()
  .setLabel("Confirm")
  .setPhrases(Arrays.asList("Confirm", "First", "One"))
  .setTone(DtmfTone.ONE),
  new RecognitionChoice()
  .setLabel("Cancel")
  .setPhrases(Arrays.asList("Cancel", "Second", "Two"))
  .setTone(DtmfTone.TWO)
);

String textToPlay = "Hello, This is a reminder for your appointment at 2 PM, Say Confirm to confirm your appointment or Cancel to cancel the appointment. Thank you!";
var playSource = new TextSource()
  .setText(textToPlay)
  .setVoiceName("en-US-ElizabethNeural");
var recognizeOptions = new CallMediaRecognizeChoiceOptions(targetParticipant, choices)
  .setInterruptPrompt(true)
  .setInitialSilenceTimeout(Duration.ofSeconds(30))
  .setPlayPrompt(playSource)
  .setOperationContext("AppointmentReminderMenu")
  //Only add the SpeechRecognitionModelEndpointId if you have a custom speech model you would like to use
  .setSpeechRecognitionModelEndpointId("YourCustomSpeechModelEndpointID"); 
var recognizeResponse = callAutomationClient.getCallConnectionAsync(callConnectionId)
  .getCallMediaAsync()
  .startRecognizingWithResponse(recognizeOptions)
  .block();

Převod řeči na text

String textToPlay = "Hi, how can I help you today?"; 
var playSource = new TextSource() 
    .setText(textToPlay) 
    .setVoiceName("en-US-ElizabethNeural"); 
var recognizeOptions = new CallMediaRecognizeSpeechOptions(targetParticipant, Duration.ofMillis(1000)) 
    .setPlayPrompt(playSource) 
    .setOperationContext("OpenQuestionSpeech")
    //Only add the SpeechRecognitionModelEndpointId if you have a custom speech model you would like to use
    .setSpeechRecognitionModelEndpointId("YourCustomSpeechModelEndpointID");  
var recognizeResponse = callAutomationClient.getCallConnectionAsync(callConnectionId) 
    .getCallMediaAsync() 
    .startRecognizingWithResponse(recognizeOptions) 
    .block(); 

Převod řeči na text nebo DTMF

var maxTonesToCollect = 1; 
String textToPlay = "Hi, how can I help you today, you can press 0 to speak to an agent?"; 
var playSource = new TextSource() 
    .setText(textToPlay) 
    .setVoiceName("en-US-ElizabethNeural"); 
var recognizeOptions = new CallMediaRecognizeSpeechOrDtmfOptions(targetParticipant, maxTonesToCollect, Duration.ofMillis(1000)) 
    .setPlayPrompt(playSource) 
    .setInitialSilenceTimeout(Duration.ofSeconds(30)) 
    .setInterruptPrompt(true) 
    .setOperationContext("OpenQuestionSpeechOrDtmf")
    //Only add the SpeechRecognitionModelEndpointId if you have a custom speech model you would like to use
    .setSpeechRecognitionModelEndpointId("YourCustomSpeechModelEndpointID");  
var recognizeResponse = callAutomationClient.getCallConnectionAsync(callConnectionId) 
    .getCallMediaAsync() 
    .startRecognizingWithResponse(recognizeOptions) 
    .block(); 

Poznámka:

Pokud parametry nejsou nastavené, použijí se výchozí hodnoty tam, kde je to možné.

Příjem aktualizací událostí rozpoznávání

Vývojáři se můžou přihlásit k odběru RecognizeCompleted a RecognizeFailed událostem v registrovaném zpětném volání webhooku. Pomocí tohoto zpětného volání s obchodní logikou v aplikaci můžete určit další kroky, kdy dojde k jedné z událostí.

Příklad, jak můžete deserializovat událost RecognizeCompleted :

if (acsEvent instanceof RecognizeCompleted) { 
    RecognizeCompleted event = (RecognizeCompleted) acsEvent; 
    RecognizeResult recognizeResult = event.getRecognizeResult().get(); 
    if (recognizeResult instanceof DtmfResult) { 
        // Take action on collect tones 
        DtmfResult dtmfResult = (DtmfResult) recognizeResult; 
        List<DtmfTone> tones = dtmfResult.getTones(); 
        log.info("Recognition completed, tones=" + tones + ", context=" + event.getOperationContext()); 
    } else if (recognizeResult instanceof ChoiceResult) { 
        ChoiceResult collectChoiceResult = (ChoiceResult) recognizeResult; 
        String labelDetected = collectChoiceResult.getLabel(); 
        String phraseDetected = collectChoiceResult.getRecognizedPhrase(); 
        log.info("Recognition completed, labelDetected=" + labelDetected + ", phraseDetected=" + phraseDetected + ", context=" + event.getOperationContext()); 
    } else if (recognizeResult instanceof SpeechResult) { 
        SpeechResult speechResult = (SpeechResult) recognizeResult; 
        String text = speechResult.getSpeech(); 
        log.info("Recognition completed, text=" + text + ", context=" + event.getOperationContext()); 
    } else { 
        log.info("Recognition completed, result=" + recognizeResult + ", context=" + event.getOperationContext()); 
    } 
} 

Příklad, jak můžete deserializovat událost RecognizeFailed :

if (acsEvent instanceof RecognizeFailed) { 
    RecognizeFailed event = (RecognizeFailed) acsEvent; 
    if (ReasonCode.Recognize.INITIAL_SILENCE_TIMEOUT.equals(event.getReasonCode())) { 
        // Take action for time out 
        log.info("Recognition failed: initial silence time out"); 
    } else if (ReasonCode.Recognize.SPEECH_OPTION_NOT_MATCHED.equals(event.getReasonCode())) { 
        // Take action for option not matched 
        log.info("Recognition failed: speech option not matched"); 
    } else if (ReasonCode.Recognize.DMTF_OPTION_MATCHED.equals(event.getReasonCode())) { 
        // Take action for incorrect tone 
        log.info("Recognition failed: incorrect tone detected"); 
    } else { 
        log.info("Recognition failed, result=" + event.getResultInformation().getMessage() + ", context=" + event.getOperationContext()); 
    } 
} 

Příklad, jak můžete deserializovat událost RecognizeCanceled :

if (acsEvent instanceof RecognizeCanceled) { 
    RecognizeCanceled event = (RecognizeCanceled) acsEvent; 
    log.info("Recognition canceled, context=" + event.getOperationContext()); 
}

Požadavky

  • Podrobnosti o účtu Azure s aktivním předplatným najdete v tématu Vytvoření účtu zdarma.
  • Prostředek Azure Communication Services Viz Vytvoření prostředku Azure Communication Services. Poznamenejte si připojovací řetězec pro tento prostředek.
  • Vytvořte novou aplikaci webové služby pomocí sady SDK pro automatizaci volání.
  • Máte nainstalované Node.js, můžete ho nainstalovat z oficiálních webových stránek.

Funkce AI

Technické specifikace

K dispozici jsou následující parametry pro přizpůsobení funkce Recognize:

Parametr Typ Výchozí (pokud není zadáno) Popis Povinné, nebo volitelné
Prompt

(Podrobnosti najdete v tématu Přizpůsobení hlasových výzev uživatelům pomocí akce Přehrát)
FileSource, TextSource Nenastaveno Zpráva, která se má přehrát před rozpoznáním vstupu. Volitelné
InterToneTimeout TimeSpan 2 sekundy

Min: 1 sekunda
Max: 60 sekund
Omezte v sekundách, po které služba Azure Communication Services čeká, než volající stiskne jinou číslici (časový limit mezi číslicemi). Volitelné
InitialSegmentationSilenceTimeoutInSeconds Celé číslo 0,5 sekundy Jak dlouho akce rozpoznává čekání na vstup před zvážením časového limitu. Podívejte se, jak rozpoznávat řeč. Volitelné
RecognizeInputsType Výčet Dtmf Typ rozpoznaného vstupu Možnosti jsou dtmf, choices, speecha speechordtmf. Požaduje se
InitialSilenceTimeout TimeSpan 5 sekund

Minimum: 0 sekund
Max: 300 sekund (DTMF)
Max: 20 sekund (Volby)
Max: 20 sekund (Řeč)
Počáteční časový limit ticha upraví, kolik zvuku není povoleno před frází před pokusem o rozpoznávání skončí ve výsledku "žádná shoda". Podívejte se, jak rozpoznávat řeč. Volitelné
MaxTonesToCollect Celé číslo Bez výchozího nastavení

Min: 1
Počet číslic, které vývojář očekává jako vstup od účastníka. Požaduje se
StopTones IEnumeration<DtmfTone> Nenastaveno Číslice účastníci mohou stisknout řídicí znak z dávkové události DTMF. Volitelné
InterruptPrompt Bool True Pokud má účastník možnost přerušit playMessage stisknutím číslice. Volitelné
InterruptCallMediaOperation Bool True Pokud je tento příznak nastavený, přeruší aktuální operaci média volání. Pokud se například přehrává jakýkoli zvuk, přeruší tuto operaci a zahájí rozpoznávání. Volitelné
OperationContext String Nenastaveno Řetězec, který můžou vývojáři předat střední akci, což je užitečné, když vývojářům umožní ukládat kontext o událostech, které obdrží. Volitelné
Phrases String Nenastaveno Seznam frází přidružených k popisku Když uslyšíte některou z těchto frází, výsledkem je úspěšné uznání. Požaduje se
Tone String Nenastaveno Tón, který se má rozpoznat, pokud se uživatel rozhodne místo použití řeči stisknout číslo. Volitelné
Label String Nenastaveno Hodnota klíče pro rozpoznávání. Požaduje se
Language String En-us Jazyk, který se používá k rozpoznávání řeči. Volitelné
EndSilenceTimeout TimeSpan 0,5 sekundy Poslední pozastavení mluvčího sloužícího ke zjištění konečného výsledku, který se vygeneruje jako řeč. Volitelné

Poznámka:

V situacích, kdy jsou recognizeInputsTypev DTMF i řeči, akce rozpoznávání funguje na prvním přijatém vstupním typu. Pokud například uživatel nejprve stiskne číslo klávesnice, akce rozpoznávání ji považuje za událost DTMF a pokračuje v naslouchání tónům DTMF. Pokud uživatel mluví jako první, akce rozpoznávání řeči ji považuje za událost rozpoznávání řeči a naslouchá hlasovému vstupu.

Vytvoření nové javascriptové aplikace

Vytvořte novou javascriptovou aplikaci v adresáři projektu. Inicializace nového projektu Node.js pomocí následujícího příkazu Tím se vytvoří soubor package.json pro váš projekt, který spravuje závislosti projektu.

npm init -y

Instalace balíčku Automatizace volání služby Azure Communication Services

npm install @azure/communication-call-automation

V adresáři projektu vytvořte nový soubor JavaScriptu, například ho app.jspojmenujte . Do tohoto souboru napište kód JavaScriptu.

Spusťte aplikaci pomocí Node.js pomocí následujícího příkazu.

node app.js

Vytvoření hovoru

V tomto okamžiku byste měli být obeznámeni se spouštěním volání. Další informace o volání najdete v tématu Rychlý start: Uskutečnění a odchozí volání.

Volání akce rozpoznávání

Když vaše aplikace odpoví na hovor, můžete zadat informace o rozpoznávání vstupu účastníka a přehrání výzvy.

DTMF

const maxTonesToCollect = 3; 
const textToPlay = "Welcome to Contoso, please enter 3 DTMF."; 
const playSource: TextSource = { text: textToPlay, voiceName: "en-US-ElizabethNeural", kind: "textSource" }; 
const recognizeOptions: CallMediaRecognizeDtmfOptions = { 
    maxTonesToCollect: maxTonesToCollect, 
    initialSilenceTimeoutInSeconds: 30, 
    playPrompt: playSource, 
    interToneTimeoutInSeconds: 5, 
    interruptPrompt: true, 
    stopDtmfTones: [ DtmfTone.Pound ], 
    kind: "callMediaRecognizeDtmfOptions" 
}; 

await callAutomationClient.getCallConnection(callConnectionId) 
    .getCallMedia() 
    .startRecognizing(targetParticipant, recognizeOptions); 

U toků řeči na text akce Rozpoznávání volání podporuje také použití vlastních modelů řeči. Funkce, jako jsou vlastní modely řeči, můžou být užitečné při vytváření aplikace, která potřebuje naslouchat složitým slovům, kterým výchozí modely převodu řeči na text nemusí rozumět. Jedním z příkladů je, že vytváříte aplikaci pro telemedický průmysl a váš virtuální agent musí být schopný rozpoznat lékařské termíny. Další informace najdete v článku Vytvoření vlastního projektu řeči.

Volby převodu řeči na text

const choices = [ 
    {  
        label: "Confirm", 
        phrases: [ "Confirm", "First", "One" ], 
        tone: DtmfTone.One 
    }, 
    { 
        label: "Cancel", 
        phrases: [ "Cancel", "Second", "Two" ], 
        tone: DtmfTone.Two 
    } 
]; 

const textToPlay = "Hello, This is a reminder for your appointment at 2 PM, Say Confirm to confirm your appointment or Cancel to cancel the appointment. Thank you!"; 
const playSource: TextSource = { text: textToPlay, voiceName: "en-US-ElizabethNeural", kind: "textSource" }; 
const recognizeOptions: CallMediaRecognizeChoiceOptions = { 
    choices: choices, 
    interruptPrompt: true, 
    initialSilenceTimeoutInSeconds: 30, 
    playPrompt: playSource, 
    operationContext: "AppointmentReminderMenu", 
    kind: "callMediaRecognizeChoiceOptions",
    //Only add the speechRecognitionModelEndpointId if you have a custom speech model you would like to use
    speechRecognitionModelEndpointId: "YourCustomSpeechEndpointId"
}; 

await callAutomationClient.getCallConnection(callConnectionId) 
    .getCallMedia() 
    .startRecognizing(targetParticipant, recognizeOptions); 

Převod řeči na text

const textToPlay = "Hi, how can I help you today?"; 
const playSource: TextSource = { text: textToPlay, voiceName: "en-US-ElizabethNeural", kind: "textSource" }; 
const recognizeOptions: CallMediaRecognizeSpeechOptions = { 
    endSilenceTimeoutInSeconds: 1, 
    playPrompt: playSource, 
    operationContext: "OpenQuestionSpeech", 
    kind: "callMediaRecognizeSpeechOptions",
    //Only add the speechRecognitionModelEndpointId if you have a custom speech model you would like to use
    speechRecognitionModelEndpointId: "YourCustomSpeechEndpointId"
}; 

await callAutomationClient.getCallConnection(callConnectionId) 
    .getCallMedia() 
    .startRecognizing(targetParticipant, recognizeOptions); 

Převod řeči na text nebo DTMF

const maxTonesToCollect = 1; 
const textToPlay = "Hi, how can I help you today, you can press 0 to speak to an agent?"; 
const playSource: TextSource = { text: textToPlay, voiceName: "en-US-ElizabethNeural", kind: "textSource" }; 
const recognizeOptions: CallMediaRecognizeSpeechOrDtmfOptions = { 
    maxTonesToCollect: maxTonesToCollect, 
    endSilenceTimeoutInSeconds: 1, 
    playPrompt: playSource, 
    initialSilenceTimeoutInSeconds: 30, 
    interruptPrompt: true, 
    operationContext: "OpenQuestionSpeechOrDtmf", 
    kind: "callMediaRecognizeSpeechOrDtmfOptions",
    //Only add the speechRecognitionModelEndpointId if you have a custom speech model you would like to use
    speechRecognitionModelEndpointId: "YourCustomSpeechEndpointId"
}; 

await callAutomationClient.getCallConnection(callConnectionId) 
    .getCallMedia() 
    .startRecognizing(targetParticipant, recognizeOptions); 

Poznámka:

Pokud parametry nejsou nastavené, použijí se výchozí hodnoty tam, kde je to možné.

Příjem aktualizací událostí rozpoznávání

Vývojáři se můžou přihlásit k odběru RecognizeCompleted a RecognizeFailed událostem v registrovaném zpětném volání webhooku. Pomocí tohoto zpětného volání s obchodní logikou v aplikaci můžete určit další kroky, kdy dojde k jedné z událostí.

Příklad, jak můžete deserializovat událost RecognizeCompleted :

if (event.type === "Microsoft.Communication.RecognizeCompleted") { 
    if (eventData.recognitionType === "dtmf") { 
        const tones = eventData.dtmfResult.tones; 
        console.log("Recognition completed, tones=%s, context=%s", tones, eventData.operationContext); 
    } else if (eventData.recognitionType === "choices") { 
        const labelDetected = eventData.choiceResult.label; 
        const phraseDetected = eventData.choiceResult.recognizedPhrase; 
        console.log("Recognition completed, labelDetected=%s, phraseDetected=%s, context=%s", labelDetected, phraseDetected, eventData.operationContext); 
    } else if (eventData.recognitionType === "speech") { 
        const text = eventData.speechResult.speech; 
        console.log("Recognition completed, text=%s, context=%s", text, eventData.operationContext); 
    } else { 
        console.log("Recognition completed: data=%s", JSON.stringify(eventData, null, 2)); 
    } 
} 

Příklad, jak můžete deserializovat událost RecognizeFailed :

if (event.type === "Microsoft.Communication.RecognizeFailed") {
    console.log("Recognize failed: data=%s", JSON.stringify(eventData, null, 2));
}

Příklad, jak můžete deserializovat událost RecognizeCanceled :

if (event.type === "Microsoft.Communication.RecognizeCanceled") {
    console.log("Recognize canceled, context=%s", eventData.operationContext);
}

Požadavky

  • Podrobnosti o účtu Azure s aktivním předplatným najdete v tématu Vytvoření účtu zdarma.
  • Prostředek Azure Communication Services Viz Vytvoření prostředku Azure Communication Services. Poznamenejte si připojovací řetězec pro tento prostředek.
  • Vytvořte novou aplikaci webové služby pomocí sady SDK pro automatizaci volání.
  • Nainstalujte Python z Python.org.

Funkce AI

Technické specifikace

K dispozici jsou následující parametry pro přizpůsobení funkce Recognize:

Parametr Typ Výchozí (pokud není zadáno) Popis Povinné, nebo volitelné
Prompt

(Podrobnosti najdete v tématu Přizpůsobení hlasových výzev uživatelům pomocí akce Přehrát)
FileSource, TextSource Nenastaveno Zpráva, která se má přehrát před rozpoznáním vstupu. Volitelné
InterToneTimeout TimeSpan 2 sekundy

Min: 1 sekunda
Max: 60 sekund
Omezte v sekundách, po které služba Azure Communication Services čeká, než volající stiskne jinou číslici (časový limit mezi číslicemi). Volitelné
InitialSegmentationSilenceTimeoutInSeconds Celé číslo 0,5 sekundy Jak dlouho akce rozpoznává čekání na vstup před zvážením časového limitu. Podívejte se, jak rozpoznávat řeč. Volitelné
RecognizeInputsType Výčet Dtmf Typ rozpoznaného vstupu Možnosti jsou dtmf, choices, speecha speechordtmf. Požaduje se
InitialSilenceTimeout TimeSpan 5 sekund

Minimum: 0 sekund
Max: 300 sekund (DTMF)
Max: 20 sekund (Volby)
Max: 20 sekund (Řeč)
Počáteční časový limit ticha upraví, kolik zvuku není povoleno před frází před pokusem o rozpoznávání skončí ve výsledku "žádná shoda". Podívejte se, jak rozpoznávat řeč. Volitelné
MaxTonesToCollect Celé číslo Bez výchozího nastavení

Min: 1
Počet číslic, které vývojář očekává jako vstup od účastníka. Požaduje se
StopTones IEnumeration<DtmfTone> Nenastaveno Číslice účastníci mohou stisknout řídicí znak z dávkové události DTMF. Volitelné
InterruptPrompt Bool True Pokud má účastník možnost přerušit playMessage stisknutím číslice. Volitelné
InterruptCallMediaOperation Bool True Pokud je tento příznak nastavený, přeruší aktuální operaci média volání. Pokud se například přehrává jakýkoli zvuk, přeruší tuto operaci a zahájí rozpoznávání. Volitelné
OperationContext String Nenastaveno Řetězec, který můžou vývojáři předat střední akci, což je užitečné, když vývojářům umožní ukládat kontext o událostech, které obdrží. Volitelné
Phrases String Nenastaveno Seznam frází přidružených k popisku Když uslyšíte některou z těchto frází, výsledkem je úspěšné uznání. Požaduje se
Tone String Nenastaveno Tón, který se má rozpoznat, pokud se uživatel rozhodne místo použití řeči stisknout číslo. Volitelné
Label String Nenastaveno Hodnota klíče pro rozpoznávání. Požaduje se
Language String En-us Jazyk, který se používá k rozpoznávání řeči. Volitelné
EndSilenceTimeout TimeSpan 0,5 sekundy Poslední pozastavení mluvčího sloužícího ke zjištění konečného výsledku, který se vygeneruje jako řeč. Volitelné

Poznámka:

V situacích, kdy jsou recognizeInputsTypev DTMF i řeči, akce rozpoznávání funguje na prvním přijatém vstupním typu. Pokud například uživatel nejprve stiskne číslo klávesnice, akce rozpoznávání ji považuje za událost DTMF a pokračuje v naslouchání tónům DTMF. Pokud uživatel mluví jako první, akce rozpoznávání řeči ji považuje za událost rozpoznávání řeči a naslouchá hlasovému vstupu.

Vytvoření nové aplikace v Pythonu

Nastavení virtuálního prostředí Pythonu pro váš projekt

python -m venv play-audio-app

Aktivace virtuálního prostředí

Ve Windows použijte následující příkaz:

.\ play-audio-quickstart \Scripts\activate

V systému Unix použijte následující příkaz:

source play-audio-quickstart /bin/activate

Instalace balíčku Automatizace volání služby Azure Communication Services

pip install azure-communication-callautomation

Vytvořte soubor aplikace v adresáři projektu, například ho app.pypojmenujte . Do tohoto souboru napište kód Pythonu.

Spusťte aplikaci pomocí Pythonu pomocí následujícího příkazu.

python app.py

Vytvoření hovoru

V tomto okamžiku byste měli být obeznámeni se spouštěním volání. Další informace o volání najdete v tématu Rychlý start: Uskutečnění a odchozí volání.

Volání akce rozpoznávání

Když vaše aplikace odpoví na hovor, můžete zadat informace o rozpoznávání vstupu účastníka a přehrání výzvy.

DTMF

max_tones_to_collect = 3 
text_to_play = "Welcome to Contoso, please enter 3 DTMF." 
play_source = TextSource(text=text_to_play, voice_name="en-US-ElizabethNeural") 
call_automation_client.get_call_connection(call_connection_id).start_recognizing_media( 
    dtmf_max_tones_to_collect=max_tones_to_collect, 
    input_type=RecognizeInputType.DTMF, 
    target_participant=target_participant, 
    initial_silence_timeout=30, 
    play_prompt=play_source, 
    dtmf_inter_tone_timeout=5, 
    interrupt_prompt=True, 
    dtmf_stop_tones=[ DtmfTone.Pound ]) 

U toků řeči na text akce Rozpoznávání volání podporuje také použití vlastních modelů řeči. Funkce, jako jsou vlastní modely řeči, můžou být užitečné při vytváření aplikace, která potřebuje naslouchat složitým slovům, kterým výchozí modely převodu řeči na text nemusí rozumět. Jedním z příkladů je, že vytváříte aplikaci pro telemedický průmysl a váš virtuální agent musí být schopný rozpoznat lékařské termíny. Další informace najdete v článku Vytvoření vlastního projektu řeči.

Volby převodu řeči na text

choices = [ 
    RecognitionChoice( 
        label="Confirm", 
        phrases=[ "Confirm", "First", "One" ], 
        tone=DtmfTone.ONE 
    ), 
    RecognitionChoice( 
        label="Cancel", 
        phrases=[ "Cancel", "Second", "Two" ], 
        tone=DtmfTone.TWO 
    ) 
] 
text_to_play = "Hello, This is a reminder for your appointment at 2 PM, Say Confirm to confirm your appointment or Cancel to cancel the appointment. Thank you!" 
play_source = TextSource(text=text_to_play, voice_name="en-US-ElizabethNeural") 
call_automation_client.get_call_connection(call_connection_id).start_recognizing_media( 
    input_type=RecognizeInputType.CHOICES, 
    target_participant=target_participant, 
    choices=choices, 
    interrupt_prompt=True, 
    initial_silence_timeout=30, 
    play_prompt=play_source, 
    operation_context="AppointmentReminderMenu",
    # Only add the speech_recognition_model_endpoint_id if you have a custom speech model you would like to use
    speech_recognition_model_endpoint_id="YourCustomSpeechModelEndpointId")  

Převod řeči na text

text_to_play = "Hi, how can I help you today?" 
play_source = TextSource(text=text_to_play, voice_name="en-US-ElizabethNeural") 
call_automation_client.get_call_connection(call_connection_id).start_recognizing_media( 
    input_type=RecognizeInputType.SPEECH, 
    target_participant=target_participant, 
    end_silence_timeout=1, 
    play_prompt=play_source, 
    operation_context="OpenQuestionSpeech",
    # Only add the speech_recognition_model_endpoint_id if you have a custom speech model you would like to use
    speech_recognition_model_endpoint_id="YourCustomSpeechModelEndpointId") 

Převod řeči na text nebo DTMF

max_tones_to_collect = 1 
text_to_play = "Hi, how can I help you today, you can also press 0 to speak to an agent." 
play_source = TextSource(text=text_to_play, voice_name="en-US-ElizabethNeural") 
call_automation_client.get_call_connection(call_connection_id).start_recognizing_media( 
    dtmf_max_tones_to_collect=max_tones_to_collect, 
    input_type=RecognizeInputType.SPEECH_OR_DTMF, 
    target_participant=target_participant, 
    end_silence_timeout=1, 
    play_prompt=play_source, 
    initial_silence_timeout=30, 
    interrupt_prompt=True, 
    operation_context="OpenQuestionSpeechOrDtmf",
    # Only add the speech_recognition_model_endpoint_id if you have a custom speech model you would like to use
    speech_recognition_model_endpoint_id="YourCustomSpeechModelEndpointId")  
app.logger.info("Start recognizing") 

Poznámka:

Pokud parametry nejsou nastavené, použijí se výchozí hodnoty tam, kde je to možné.

Příjem aktualizací událostí rozpoznávání

Vývojáři se můžou přihlásit k odběru RecognizeCompleted a RecognizeFailed událostem v registrovaném zpětném volání webhooku. Pomocí tohoto zpětného volání s obchodní logikou v aplikaci můžete určit další kroky, kdy dojde k jedné z událostí.

Příklad, jak můžete deserializovat událost RecognizeCompleted :

if event.type == "Microsoft.Communication.RecognizeCompleted": 
    app.logger.info("Recognize completed: data=%s", event.data) 
    if event.data['recognitionType'] == "dtmf": 
        tones = event.data['dtmfResult']['tones'] 
        app.logger.info("Recognition completed, tones=%s, context=%s", tones, event.data.get('operationContext')) 
    elif event.data['recognitionType'] == "choices": 
        labelDetected = event.data['choiceResult']['label']; 
        phraseDetected = event.data['choiceResult']['recognizedPhrase']; 
        app.logger.info("Recognition completed, labelDetected=%s, phraseDetected=%s, context=%s", labelDetected, phraseDetected, event.data.get('operationContext')); 
    elif event.data['recognitionType'] == "speech": 
        text = event.data['speechResult']['speech']; 
        app.logger.info("Recognition completed, text=%s, context=%s", text, event.data.get('operationContext')); 
    else: 
        app.logger.info("Recognition completed: data=%s", event.data); 

Příklad, jak můžete deserializovat událost RecognizeFailed :

if event.type == "Microsoft.Communication.RecognizeFailed": 
    app.logger.info("Recognize failed: data=%s", event.data); 

Příklad, jak můžete deserializovat událost RecognizeCanceled :

if event.type == "Microsoft.Communication.RecognizeCanceled":
    # Handle the RecognizeCanceled event according to your application logic

Kódy událostí

Stav Kód Podkód Zpráva
RecognizeCompleted 200 8531 Akce byla dokončena, byla přijata maximální počet číslic.
RecognizeCompleted 200 8514 Akce byla dokončena při zjištění tónu zastavení.
RecognizeCompleted 400 8508 Akce se nezdařila, operace byla zrušena.
RecognizeCompleted 400 8532 Akce selhala, došlo k dosažení časového limitu tichou mezi číslicemi.
RecognizeCanceled 400 8508 Akce se nezdařila, operace byla zrušena.
RecognizeFailed 400 8510 Akce se nezdařila, došlo k dosažení počátečního časového limitu ticha.
RecognizeFailed 500 8511 Akce se nezdařila, při pokusu o přehrání výzvy došlo k chybě.
RecognizeFailed 500 8512 Neznámá vnitřní chyba serveru.
RecognizeFailed 400 8510 Akce selhala, došlo k dosažení počátečního časového limitu ticha.
RecognizeFailed 400 8532 Akce selhala, došlo k dosažení časového limitu tichou mezi číslicemi.
RecognizeFailed 400 8565 Akce selhala, chybný požadavek na služby Azure AI. Zkontrolujte vstupní parametry.
RecognizeFailed 400 8565 Akce selhala, chybný požadavek na služby Azure AI. Nelze zpracovat zadanou datovou část, zkontrolujte vstup zdroje přehrávání.
RecognizeFailed 401 8565 Akce selhala, chyba ověřování služeb Azure AI
RecognizeFailed 403 8565 Akce selhala, zakázaná žádost o služby Azure AI, bezplatné předplatné používané žádostí o kvótu vypršelo.
RecognizeFailed 429 8565 Akce selhala, požadavky překročily počet povolených souběžných požadavků pro předplatné služby Azure AI.
RecognizeFailed 408 8565 Akce selhala, vypršel časový limit požadavku na služby Azure AI.
RecognizeFailed 500 8511 Akce se nezdařila, při pokusu o přehrání výzvy došlo k chybě.
RecognizeFailed 500 8512 Neznámá vnitřní chyba serveru.

Známá omezení

  • Nástroj DTMF v pásmu není podporován. Místo toho použijte RFC 2833 DTMF.
  • Výzvy k převodu textu na řeč podporují maximálně 400 znaků, pokud je výzva delší, než je tato možnost, doporučujeme použít SSML pro akce přehrávání založené na převodu textu na řeč.
  • V situacích, kdy překročíte limit kvóty služby Speech, můžete požádat o zvýšení tohoto limitu pomocí kroků uvedených v kvótách a omezeních služeb Speech.

Vyčištění prostředků

Pokud chcete vyčistit a odebrat předplatné služby Communication Services, můžete odstranit prostředek nebo skupinu prostředků. Odstraněním skupiny prostředků se odstraní také všechny ostatní prostředky, které jsou k ní přidružené. Přečtěte si další informace o čištění prostředků.

Další kroky