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 s rozpoznáváním vstupu DTMF poskytovaného účastníky prostřednictvím sady SDK pro automatizaci volání služby Azure Communication Services.

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í.
  • Nejnovější knihovna .NET pro váš operační systém.
  • Získejte 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é
Výzva

(Podrobnosti o akci Přehrát najdete v tomto průvodci postupy)
FileSource, TextSource Nenastaveno Toto je zpráva, kterou chcete 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. Další informace najdete tady. Volitelné
RecognizeInputsType Výčet Dtmf Typ rozpoznaného vstupu Možnosti jsou dtmf, volby, řeč a 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". Další informace najdete tady. 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 volání média. 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é
Fráze String Nenastaveno Seznam frází, které přidruží k popisku, pokud se některý z těchto výrazů považuje za úspěšné uznání. Požaduje se
Tón String Nenastaveno Tón, který se má rozpoznat, pokud se uživatel rozhodne místo použití řeči stisknout číslo. Volitelné
Popisek String Nenastaveno Hodnota klíče pro rozpoznávání. Požaduje se
Jazyk 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 dtmf i řeč v objektu recognizeInputsType, akce rozpoznávání bude fungovat na prvním přijatém typu vstupu, tj. pokud uživatel nejprve stiskne číslo klávesnice, akce rozpoznávání ji bude považovat za událost dtmf a bude pokračovat v naslouchání tónům dtmf. Pokud uživatel mluví jako první, akce rozpoznávání bude považovat za rozpoznávání řeči a poslech hlasového 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

Balíček NuGet můžete získat odsud, pokud jste to ještě neudělali.

Vytvoření hovoru

V tomto okamžiku byste měli být obeznámeni se spouštěním volání, pokud potřebujete získat další informace o volání, postupujte podle našeho rychlého startu. 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 podporuje akce rozpoznávání automatizace volání 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á výchozí modely převodu řeči na text nemusí být schopny porozumět, dobrým příkladem může být, když vytváříte aplikaci pro telemedický průmysl a váš virtuální agent musí být schopný rozpoznat lékařské termíny. Další informace o vytváření a nasazování vlastních modelů řeči najdete tady.

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 událostí RecognizeCompleted a RecognizeFailed v zpětném volání webhooku, které zaregistrovali pro volání pro vytvoření obchodní logiky ve své aplikaci pro určení dalších kroků, kdy dojde k některé z dříve uvedených 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é
Výzva

(Podrobnosti o akci Přehrát najdete v tomto průvodci postupy)
FileSource, TextSource Nenastaveno Toto je zpráva, kterou chcete 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. Další informace najdete tady. Volitelné
RecognizeInputsType Výčet Dtmf Typ rozpoznaného vstupu Možnosti jsou dtmf, volby, řeč a 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". Další informace najdete tady. 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 volání média. 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é
Fráze String Nenastaveno Seznam frází, které přidruží k popisku, pokud se některý z těchto výrazů považuje za úspěšné uznání. Požaduje se
Tón String Nenastaveno Tón, který se má rozpoznat, pokud se uživatel rozhodne místo použití řeči stisknout číslo. Volitelné
Popisek String Nenastaveno Hodnota klíče pro rozpoznávání. Požaduje se
Jazyk 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 dtmf i řeč v objektu recognizeInputsType, akce rozpoznávání bude fungovat na prvním přijatém typu vstupu, tj. pokud uživatel nejprve stiskne číslo klávesnice, akce rozpoznávání ji bude považovat za událost dtmf a bude pokračovat v naslouchání tónům dtmf. Pokud uživatel mluví jako první, akce rozpoznávání bude považovat za rozpoznávání řeči a poslech hlasového 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. V tomto adresáři src/main/java adresář obsahuje zdrojový kód projektu, src/test/java adresář obsahuje zdroj testu.

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

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 pro 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í, pokud potřebujete získat další informace o volání, postupujte podle našeho rychlého startu. 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 podporuje akce rozpoznávání automatizace volání 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á výchozí modely převodu řeči na text nemusí být schopny porozumět, dobrým příkladem může být, když vytváříte aplikaci pro telemedický průmysl a váš virtuální agent musí být schopný rozpoznat lékařské termíny. Další informace o vytváření a nasazování vlastních modelů řeči najdete tady.

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 událostí RecognizeCompleted a RecognizeFailed v registrovaném zpětném volání webhooku. Toto zpětné volání lze použít s obchodní logikou ve vaší aplikaci k určení dalších kroků, 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é
Výzva

(Podrobnosti o akci Přehrát najdete v tomto průvodci postupy)
FileSource, TextSource Nenastaveno Toto je zpráva, kterou chcete 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. Další informace najdete tady. Volitelné
RecognizeInputsType Výčet Dtmf Typ rozpoznaného vstupu Možnosti jsou dtmf, volby, řeč a 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". Další informace najdete tady. 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 volání média. 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é
Fráze String Nenastaveno Seznam frází, které přidruží k popisku, pokud se některý z těchto výrazů považuje za úspěšné uznání. Požaduje se
Tón String Nenastaveno Tón, který se má rozpoznat, pokud se uživatel rozhodne místo použití řeči stisknout číslo. Volitelné
Popisek String Nenastaveno Hodnota klíče pro rozpoznávání. Požaduje se
Jazyk 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 dtmf i řeč v objektu recognizeInputsType, akce rozpoznávání bude fungovat na prvním přijatém typu vstupu, tj. pokud uživatel nejprve stiskne číslo klávesnice, akce rozpoznávání ji bude považovat za událost dtmf a bude pokračovat v naslouchání tónům dtmf. Pokud uživatel mluví jako první, akce rozpoznávání bude považovat za rozpoznávání řeči a poslech hlasového 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 pro váš projekt vytvoří soubor package.json, který slouží ke správě závislostí 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 pojmenujte app.js. Do tohoto souboru napíšete kód JavaScriptu. Spusťte aplikaci pomocí Node.js pomocí následujícího příkazu. Tím se spustí kód JavaScriptu, který jste napsali.

node app.js

Vytvoření hovoru

V tomto okamžiku byste měli být obeznámeni se spouštěním volání, pokud potřebujete získat další informace o volání, postupujte podle našeho rychlého startu. V tomto rychlém startu vytvoříme 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 podporuje akce rozpoznávání automatizace volání 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á výchozí modely převodu řeči na text nemusí být schopny porozumět, dobrým příkladem může být, když vytváříte aplikaci pro telemedický průmysl a váš virtuální agent musí být schopný rozpoznat lékařské termíny. Další informace o vytváření a nasazování vlastních modelů řeči najdete tady.

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 událostí RecognizeCompleted a RecognizeFailed v zpětném volání webhooku, které zaregistrovali pro volání pro vytvoření obchodní logiky ve své aplikaci pro určení dalších kroků, kdy dojde k některé z dříve uvedených 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í.
  • Máte nainstalovaný Python, můžete ho nainstalovat z oficiálního webu.

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é
Výzva

(Podrobnosti o akci Přehrát najdete v tomto průvodci postupy)
FileSource, TextSource Nenastaveno Toto je zpráva, kterou chcete 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. Další informace najdete tady. Volitelné
RecognizeInputsType Výčet Dtmf Typ rozpoznaného vstupu Možnosti jsou dtmf, volby, řeč a 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". Další informace najdete tady. 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 volání média. 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é
Fráze String Nenastaveno Seznam frází, které přidruží k popisku, pokud se některý z těchto výrazů považuje za úspěšné uznání. Požaduje se
Tón String Nenastaveno Tón, který se má rozpoznat, pokud se uživatel rozhodne místo použití řeči stisknout číslo. Volitelné
Popisek String Nenastaveno Hodnota klíče pro rozpoznávání. Požaduje se
Jazyk 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 dtmf i řeč v objektu recognizeInputsType, akce rozpoznávání bude fungovat na prvním přijatém typu vstupu, tj. pokud uživatel nejprve stiskne číslo klávesnice, akce rozpoznávání ji bude považovat za událost dtmf a bude pokračovat v naslouchání tónům dtmf. Pokud uživatel mluví jako první, akce rozpoznávání bude považovat za rozpoznávání řeči a poslech hlasového 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 pojmenujte app.py. Do tohoto souboru napíšete kód Pythonu.

Spusťte aplikaci pomocí Pythonu pomocí následujícího příkazu. Tím se spustí kód Pythonu, který jste napsali.

python app.py

Vytvoření hovoru

V tomto okamžiku byste měli být obeznámeni se spouštěním volání, pokud potřebujete získat další informace o volání, postupujte podle našeho rychlého startu. V tomto rychlém startu vytvoříme 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 podporuje akce rozpoznávání automatizace volání 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á výchozí modely převodu řeči na text nemusí být schopny porozumět, dobrým příkladem může být, když vytváříte aplikaci pro telemedický průmysl a váš virtuální agent musí být schopný rozpoznat lékařské termíny. Další informace o vytváření a nasazování vlastních modelů řeči najdete tady.

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 událostí RecognizeCompleted a RecognizeFailed v zpětném volání webhooku, které zaregistrovali pro volání pro vytvoření obchodní logiky ve své aplikaci pro určení dalších kroků, kdy dojde k některé z dříve uvedených 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.
Rozpoznávání selhalo 400 8510 Akce se nezdařila, došlo k dosažení počátečního časového limitu ticha.
Rozpoznávání selhalo 500 8511 Akce se nezdařila, při pokusu o přehrání výzvy došlo k chybě.
Rozpoznávání selhalo 500 8512 Neznámá vnitřní chyba serveru.
Rozpoznávání selhalo 400 8510 Akce selhala, došlo k dosažení počátečního časového limitu ticha.
Rozpoznávání selhalo 400 8532 Akce selhala, došlo k dosažení časového limitu tichou mezi číslicemi.
Rozpoznávání selhalo 400 8565 Akce selhala, chybný požadavek na služby Azure AI. Zkontrolujte vstupní parametry.
Rozpoznávání se nezdařilo. 400 8565 Akce selhala, chybný požadavek na služby Azure AI. Zadaná datová část nejde zpracovat, zkontrolujte vstup zdroje přehrávání.
Rozpoznávání selhalo 401 8565 Akce selhala, chyba ověřování služeb Azure AI
Rozpoznávání selhalo 403 8565 Akce selhala, zakázaná žádost o služby Azure AI, bezplatné předplatné používané žádostí o kvótu vypršelo.
Rozpoznávání selhalo 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.
Rozpoznávání selhalo 408 8565 Akce selhala, vypršel časový limit požadavku na služby Azure AI.
Rozpoznávání selhalo 500 8511 Akce se nezdařila, při pokusu o přehrání výzvy došlo k chybě.
Rozpoznávání selhalo 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 počtu lilmit pomocí zde uvedených kroků.

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