Delen via


Gebruikersinvoer verzamelen met de actie Recognize

Deze handleiding helpt u aan de slag te gaan met het herkennen van DTMF-invoer die door deelnemers wordt geleverd via azure Communication Services Call Automation SDK.

Vereisten

Voor AI-functies

Technische specificaties

De volgende parameters zijn beschikbaar om de functie Recognize aan te passen:

Parameter Type Standaard (indien niet opgegeven) Beschrijving Vereist of optioneel
Prompt

(Zie voor meer informatie Stemprompts aanpassen aan gebruikers met de actie Afspelen)
FileSource, TextSource Niet ingesteld Het bericht dat moet worden afgespeeld voordat invoer wordt herkend. Optioneel
InterToneTimeout TimeSpan 2 seconden

Min: 1 seconde
Max: 60 seconden
Beperk in seconden dat Azure Communication Services wacht totdat de beller op een ander cijfer (time-out tussen cijfers) drukt. Optioneel
InitialSegmentationSilenceTimeoutInSeconds Geheel getal 0,5 seconde Hoe lang de actie wacht op invoer voordat deze een time-out overweegt. Zie Spraak herkennen. Optioneel
RecognizeInputsType Enum Dtmf Type invoer dat wordt herkend. Opties zijndtmf, choices, en speechspeechordtmf. Vereist
InitialSilenceTimeout TimeSpan 5 seconden

Min: 0 seconden
Max: 300 seconden (DTMF)
Max: 20 seconden (Keuzes)
Max: 20 seconden (spraak)
Met de initiële time-out voor stilte wordt aangepast hoeveel niet-peech-audio is toegestaan voordat een woordgroep wordt beëindigd voordat de herkenningspoging eindigt in het resultaat 'geen overeenkomst'. Zie Spraak herkennen. Optioneel
MaxTonesToCollect Geheel getal Geen standaardwaarde

Min. 1
Het aantal cijfers dat een ontwikkelaar verwacht als invoer van de deelnemer. Vereist
StopTones IEnumeration<DtmfTone> Niet ingesteld De cijferdeelnemers kunnen drukken om uit een batch-DTMF-gebeurtenis te ontsnappen. Optioneel
InterruptPrompt Bool Waar Als de deelnemer de playMessage kan onderbreken door op een cijfer te drukken. Optioneel
InterruptCallMediaOperation Bool Waar Als deze vlag is ingesteld, wordt de huidige oproepmediabewerking onderbroken. Als er bijvoorbeeld audio wordt afgespeeld, wordt die bewerking onderbroken en wordt herkend. Optioneel
OperationContext String Niet ingesteld Tekenreeks die ontwikkelaars mid action kunnen doorgeven, handig om ontwikkelaars in staat te stellen context op te slaan over de gebeurtenissen die ze ontvangen. Optioneel
Phrases String Niet ingesteld Lijst met woordgroepen die aan het label zijn gekoppeld. Het horen van een van deze zinnen resulteert in een geslaagde herkenning. Vereist
Tone String Niet ingesteld De toon die moet worden herkend als de gebruiker besluit om op een getal te drukken in plaats van spraak te gebruiken. Optioneel
Label String Niet ingesteld De sleutelwaarde voor herkenning. Vereist
Language String En-us De taal die wordt gebruikt voor het herkennen van spraak. Optioneel
EndSilenceTimeout TimeSpan 0,5 seconde De laatste pauze van de spreker die wordt gebruikt om het uiteindelijke resultaat te detecteren dat wordt gegenereerd als spraak. Optioneel

Notitie

In situaties waarin zowel DTMF als spraak zich in de recognizeInputsTypeactie herkennen bevindt, handelt de herkenningsactie op het eerste ontvangen invoertype. Als de gebruiker bijvoorbeeld eerst op een toetsenbloknummer drukt, beschouwt de recognize-actie het als een DTMF-gebeurtenis en blijft luisteren naar DTMF-tonen. Als de gebruiker eerst spreekt, beschouwt de recognize-actie het als een spraakherkenningsevenement en luistert naar spraakinvoer.

Een nieuwe C#-toepassing maken

Gebruik in het consolevenster van uw besturingssysteem de dotnet opdracht om een nieuwe webtoepassing te maken.

dotnet new web -n MyApplication

Installeer het NuGet-pakket van

Het NuGet-pakket ophalen uit De NuGet-galerie | Azure.Communication.CallAutomation. Volg de instructies om het pakket te installeren.

Een oproep tot stand brengen

Op dit punt moet u bekend zijn met het starten van oproepen. Zie quickstart: Bellen en uitgaand bellen voor meer informatie over het maken van een oproep. U kunt ook het hier opgegeven codefragment gebruiken om te begrijpen hoe u een oproep beantwoordt.

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); 

De actie Herkennen aanroepen

Wanneer uw toepassing de oproep beantwoordt, kunt u informatie opgeven over het herkennen van deelnemersinvoer en het afspelen van een prompt.

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);

Voor spraak-naar-tekststromen ondersteunt de actie Oproepautomatisering herkennen ook het gebruik van aangepaste spraakmodellen. Functies zoals aangepaste spraakmodellen kunnen handig zijn wanneer u een toepassing bouwt die moet luisteren naar complexe woorden die de standaardmodellen voor spraak-naar-tekst mogelijk niet begrijpen. Een voorbeeld is wanneer u een toepassing bouwt voor de telemedicale industrie en uw virtuele agent medische termen moet kunnen herkennen. Meer informatie vindt u in Een aangepast spraakproject maken.

Opties voor spraak-naar-tekst

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);

Speech to 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);

Spraak-naar-tekst of 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); 

Notitie

Als parameters niet zijn ingesteld, worden de standaardinstellingen waar mogelijk toegepast.

Gebeurtenisupdates herkennen ontvangen

Ontwikkelaars kunnen zich abonneren op RecognizeCompleted en RecognizeFailed gebeurtenissen op de geregistreerde webhook callback. Gebruik deze callback met bedrijfslogica in uw toepassing om de volgende stappen te bepalen wanneer een van de gebeurtenissen plaatsvindt.

Voorbeeld van hoe u de gebeurtenis RecognizeCompleted kunt deserialiseren:

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; 
    } 
} 

Voorbeeld van hoe u de recognizeFailed-gebeurtenis kunt deserialiseren:

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); 
    } 
} 

Voorbeeld van hoe u deserialiseren van de gebeurtenis RecognizeCanceled kunt deserialiseren :

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);
        }

Vereisten

Voor AI-functies

Technische specificaties

De volgende parameters zijn beschikbaar om de functie Recognize aan te passen:

Parameter Type Standaard (indien niet opgegeven) Beschrijving Vereist of optioneel
Prompt

(Zie voor meer informatie Stemprompts aanpassen aan gebruikers met de actie Afspelen)
FileSource, TextSource Niet ingesteld Het bericht dat moet worden afgespeeld voordat invoer wordt herkend. Optioneel
InterToneTimeout TimeSpan 2 seconden

Min: 1 seconde
Max: 60 seconden
Beperk in seconden dat Azure Communication Services wacht totdat de beller op een ander cijfer (time-out tussen cijfers) drukt. Optioneel
InitialSegmentationSilenceTimeoutInSeconds Geheel getal 0,5 seconde Hoe lang de actie wacht op invoer voordat deze een time-out overweegt. Zie Spraak herkennen. Optioneel
RecognizeInputsType Enum Dtmf Type invoer dat wordt herkend. Opties zijndtmf, choices, en speechspeechordtmf. Vereist
InitialSilenceTimeout TimeSpan 5 seconden

Min: 0 seconden
Max: 300 seconden (DTMF)
Max: 20 seconden (Keuzes)
Max: 20 seconden (spraak)
Met de initiële time-out voor stilte wordt aangepast hoeveel niet-peech-audio is toegestaan voordat een woordgroep wordt beëindigd voordat de herkenningspoging eindigt in het resultaat 'geen overeenkomst'. Zie Spraak herkennen. Optioneel
MaxTonesToCollect Geheel getal Geen standaardwaarde

Min. 1
Het aantal cijfers dat een ontwikkelaar verwacht als invoer van de deelnemer. Vereist
StopTones IEnumeration<DtmfTone> Niet ingesteld De cijferdeelnemers kunnen drukken om uit een batch-DTMF-gebeurtenis te ontsnappen. Optioneel
InterruptPrompt Bool Waar Als de deelnemer de playMessage kan onderbreken door op een cijfer te drukken. Optioneel
InterruptCallMediaOperation Bool Waar Als deze vlag is ingesteld, wordt de huidige oproepmediabewerking onderbroken. Als er bijvoorbeeld audio wordt afgespeeld, wordt die bewerking onderbroken en wordt herkend. Optioneel
OperationContext String Niet ingesteld Tekenreeks die ontwikkelaars mid action kunnen doorgeven, handig om ontwikkelaars in staat te stellen context op te slaan over de gebeurtenissen die ze ontvangen. Optioneel
Phrases String Niet ingesteld Lijst met woordgroepen die aan het label zijn gekoppeld. Het horen van een van deze zinnen resulteert in een geslaagde herkenning. Vereist
Tone String Niet ingesteld De toon die moet worden herkend als de gebruiker besluit om op een getal te drukken in plaats van spraak te gebruiken. Optioneel
Label String Niet ingesteld De sleutelwaarde voor herkenning. Vereist
Language String En-us De taal die wordt gebruikt voor het herkennen van spraak. Optioneel
EndSilenceTimeout TimeSpan 0,5 seconde De laatste pauze van de spreker die wordt gebruikt om het uiteindelijke resultaat te detecteren dat wordt gegenereerd als spraak. Optioneel

Notitie

In situaties waarin zowel DTMF als spraak zich in de recognizeInputsTypeactie herkennen bevindt, handelt de herkenningsactie op het eerste ontvangen invoertype. Als de gebruiker bijvoorbeeld eerst op een toetsenbloknummer drukt, beschouwt de recognize-actie het als een DTMF-gebeurtenis en blijft luisteren naar DTMF-tonen. Als de gebruiker eerst spreekt, beschouwt de recognize-actie het als een spraakherkenningsevenement en luistert naar spraakinvoer.

Een nieuwe Java-toepassing maken

Navigeer in het terminal- of opdrachtvenster naar de map waarin u uw Java-toepassing wilt maken. Voer de mvn opdracht uit om het Java-project te genereren op basis van de maven-archetype-quickstart-sjabloon.

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

Met mvn de opdracht maakt u een map met dezelfde naam als het artifactId argument. De src/main/java map bevat de broncode van het project. De src/test/java map bevat de testbron.

U ziet dat de generate stap een map met dezelfde naam als de artifactIdmap heeft gemaakt. De src/main/java map bevat broncode. De src/test/java map bevat tests. Het pom.xml bestand is het Project Object Model (POM) van het project.

Werk het POM-bestand van uw toepassingen bij om Java 8 of hoger te gebruiken.

<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>

Pakketverwijzingen toevoegen

Voeg in uw POM-bestand de volgende verwijzing toe voor het project:

azure-communication-callautomation

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

Een oproep tot stand brengen

Op dit punt moet u bekend zijn met het starten van oproepen. Zie quickstart: Bellen en uitgaand bellen voor meer informatie over het maken van een oproep. U kunt ook het hier opgegeven codefragment gebruiken om te begrijpen hoe u een oproep beantwoordt.

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();

De actie Herkennen aanroepen

Wanneer uw toepassing de oproep beantwoordt, kunt u informatie opgeven over het herkennen van deelnemersinvoer en het afspelen van een prompt.

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()); 

Voor spraak-naar-tekststromen ondersteunt de actie Oproepautomatisering herkennen ook het gebruik van aangepaste spraakmodellen. Functies zoals aangepaste spraakmodellen kunnen handig zijn wanneer u een toepassing bouwt die moet luisteren naar complexe woorden die de standaardmodellen voor spraak-naar-tekst mogelijk niet begrijpen. Een voorbeeld is wanneer u een toepassing bouwt voor de telemedicale industrie en uw virtuele agent medische termen moet kunnen herkennen. Meer informatie vindt u in Een aangepast spraakproject maken.

Opties voor spraak-naar-tekst

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();

Speech to 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(); 

Spraak-naar-tekst of 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(); 

Notitie

Als parameters niet zijn ingesteld, worden de standaardinstellingen waar mogelijk toegepast.

Gebeurtenisupdates herkennen ontvangen

Ontwikkelaars kunnen zich abonneren op RecognizeCompleted en RecognizeFailed gebeurtenissen op de geregistreerde webhook callback. Gebruik deze callback met bedrijfslogica in uw toepassing om de volgende stappen te bepalen wanneer een van de gebeurtenissen plaatsvindt.

Voorbeeld van hoe u de gebeurtenis RecognizeCompleted kunt deserialiseren:

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()); 
    } 
} 

Voorbeeld van hoe u de recognizeFailed-gebeurtenis kunt deserialiseren:

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()); 
    } 
} 

Voorbeeld van hoe u deserialiseren van de gebeurtenis RecognizeCanceled kunt deserialiseren :

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

Vereisten

Voor AI-functies

Technische specificaties

De volgende parameters zijn beschikbaar om de functie Recognize aan te passen:

Parameter Type Standaard (indien niet opgegeven) Beschrijving Vereist of optioneel
Prompt

(Zie voor meer informatie Stemprompts aanpassen aan gebruikers met de actie Afspelen)
FileSource, TextSource Niet ingesteld Het bericht dat moet worden afgespeeld voordat invoer wordt herkend. Optioneel
InterToneTimeout TimeSpan 2 seconden

Min: 1 seconde
Max: 60 seconden
Beperk in seconden dat Azure Communication Services wacht totdat de beller op een ander cijfer (time-out tussen cijfers) drukt. Optioneel
InitialSegmentationSilenceTimeoutInSeconds Geheel getal 0,5 seconde Hoe lang de actie wacht op invoer voordat deze een time-out overweegt. Zie Spraak herkennen. Optioneel
RecognizeInputsType Enum Dtmf Type invoer dat wordt herkend. Opties zijndtmf, choices, en speechspeechordtmf. Vereist
InitialSilenceTimeout TimeSpan 5 seconden

Min: 0 seconden
Max: 300 seconden (DTMF)
Max: 20 seconden (Keuzes)
Max: 20 seconden (spraak)
Met de initiële time-out voor stilte wordt aangepast hoeveel niet-peech-audio is toegestaan voordat een woordgroep wordt beëindigd voordat de herkenningspoging eindigt in het resultaat 'geen overeenkomst'. Zie Spraak herkennen. Optioneel
MaxTonesToCollect Geheel getal Geen standaardwaarde

Min. 1
Het aantal cijfers dat een ontwikkelaar verwacht als invoer van de deelnemer. Vereist
StopTones IEnumeration<DtmfTone> Niet ingesteld De cijferdeelnemers kunnen drukken om uit een batch-DTMF-gebeurtenis te ontsnappen. Optioneel
InterruptPrompt Bool Waar Als de deelnemer de playMessage kan onderbreken door op een cijfer te drukken. Optioneel
InterruptCallMediaOperation Bool Waar Als deze vlag is ingesteld, wordt de huidige oproepmediabewerking onderbroken. Als er bijvoorbeeld audio wordt afgespeeld, wordt die bewerking onderbroken en wordt herkend. Optioneel
OperationContext String Niet ingesteld Tekenreeks die ontwikkelaars mid action kunnen doorgeven, handig om ontwikkelaars in staat te stellen context op te slaan over de gebeurtenissen die ze ontvangen. Optioneel
Phrases String Niet ingesteld Lijst met woordgroepen die aan het label zijn gekoppeld. Het horen van een van deze zinnen resulteert in een geslaagde herkenning. Vereist
Tone String Niet ingesteld De toon die moet worden herkend als de gebruiker besluit om op een getal te drukken in plaats van spraak te gebruiken. Optioneel
Label String Niet ingesteld De sleutelwaarde voor herkenning. Vereist
Language String En-us De taal die wordt gebruikt voor het herkennen van spraak. Optioneel
EndSilenceTimeout TimeSpan 0,5 seconde De laatste pauze van de spreker die wordt gebruikt om het uiteindelijke resultaat te detecteren dat wordt gegenereerd als spraak. Optioneel

Notitie

In situaties waarin zowel DTMF als spraak zich in de recognizeInputsTypeactie herkennen bevindt, handelt de herkenningsactie op het eerste ontvangen invoertype. Als de gebruiker bijvoorbeeld eerst op een toetsenbloknummer drukt, beschouwt de recognize-actie het als een DTMF-gebeurtenis en blijft luisteren naar DTMF-tonen. Als de gebruiker eerst spreekt, beschouwt de recognize-actie het als een spraakherkenningsevenement en luistert naar spraakinvoer.

Een nieuwe JavaScript-toepassing maken

Maak een nieuwe JavaScript-toepassing in uw projectmap. Initialiseer een nieuw Node.js project met de volgende opdracht. Hiermee maakt u een package.json-bestand voor uw project, waarmee de afhankelijkheden van uw project worden beheerd.

npm init -y

Het Azure Communication Services Call Automation-pakket installeren

npm install @azure/communication-call-automation

Maak een nieuw JavaScript-bestand in uw projectmap, bijvoorbeeld een naam app.js. Schrijf uw JavaScript-code in dit bestand.

Voer uw toepassing uit met Node.js met de volgende opdracht.

node app.js

Een oproep tot stand brengen

Op dit punt moet u bekend zijn met het starten van oproepen. Zie quickstart: Bellen en uitgaand bellen voor meer informatie over het maken van een oproep.

De actie Herkennen aanroepen

Wanneer uw toepassing de oproep beantwoordt, kunt u informatie opgeven over het herkennen van deelnemersinvoer en het afspelen van een prompt.

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); 

Voor spraak-naar-tekststromen ondersteunt de actie Oproepautomatisering herkennen ook het gebruik van aangepaste spraakmodellen. Functies zoals aangepaste spraakmodellen kunnen handig zijn wanneer u een toepassing bouwt die moet luisteren naar complexe woorden die de standaardmodellen voor spraak-naar-tekst mogelijk niet begrijpen. Een voorbeeld is wanneer u een toepassing bouwt voor de telemedicale industrie en uw virtuele agent medische termen moet kunnen herkennen. Meer informatie vindt u in Een aangepast spraakproject maken.

Opties voor spraak-naar-tekst

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); 

Speech to 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); 

Spraak-naar-tekst of 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); 

Notitie

Als parameters niet zijn ingesteld, worden de standaardinstellingen waar mogelijk toegepast.

Gebeurtenisupdates herkennen ontvangen

Ontwikkelaars kunnen zich abonneren op RecognizeCompleted en RecognizeFailed gebeurtenissen op de geregistreerde webhook callback. Gebruik deze callback met bedrijfslogica in uw toepassing om de volgende stappen te bepalen wanneer een van de gebeurtenissen plaatsvindt.

Voorbeeld van hoe u de gebeurtenis RecognizeCompleted kunt deserialiseren:

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)); 
    } 
} 

Voorbeeld van hoe u de recognizeFailed-gebeurtenis kunt deserialiseren:

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

Voorbeeld van hoe u deserialiseren van de gebeurtenis RecognizeCanceled kunt deserialiseren :

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

Vereisten

Voor AI-functies

Technische specificaties

De volgende parameters zijn beschikbaar om de functie Recognize aan te passen:

Parameter Type Standaard (indien niet opgegeven) Beschrijving Vereist of optioneel
Prompt

(Zie voor meer informatie Stemprompts aanpassen aan gebruikers met de actie Afspelen)
FileSource, TextSource Niet ingesteld Het bericht dat moet worden afgespeeld voordat invoer wordt herkend. Optioneel
InterToneTimeout TimeSpan 2 seconden

Min: 1 seconde
Max: 60 seconden
Beperk in seconden dat Azure Communication Services wacht totdat de beller op een ander cijfer (time-out tussen cijfers) drukt. Optioneel
InitialSegmentationSilenceTimeoutInSeconds Geheel getal 0,5 seconde Hoe lang de actie wacht op invoer voordat deze een time-out overweegt. Zie Spraak herkennen. Optioneel
RecognizeInputsType Enum Dtmf Type invoer dat wordt herkend. Opties zijndtmf, choices, en speechspeechordtmf. Vereist
InitialSilenceTimeout TimeSpan 5 seconden

Min: 0 seconden
Max: 300 seconden (DTMF)
Max: 20 seconden (Keuzes)
Max: 20 seconden (spraak)
Met de initiële time-out voor stilte wordt aangepast hoeveel niet-peech-audio is toegestaan voordat een woordgroep wordt beëindigd voordat de herkenningspoging eindigt in het resultaat 'geen overeenkomst'. Zie Spraak herkennen. Optioneel
MaxTonesToCollect Geheel getal Geen standaardwaarde

Min. 1
Het aantal cijfers dat een ontwikkelaar verwacht als invoer van de deelnemer. Vereist
StopTones IEnumeration<DtmfTone> Niet ingesteld De cijferdeelnemers kunnen drukken om uit een batch-DTMF-gebeurtenis te ontsnappen. Optioneel
InterruptPrompt Bool Waar Als de deelnemer de playMessage kan onderbreken door op een cijfer te drukken. Optioneel
InterruptCallMediaOperation Bool Waar Als deze vlag is ingesteld, wordt de huidige oproepmediabewerking onderbroken. Als er bijvoorbeeld audio wordt afgespeeld, wordt die bewerking onderbroken en wordt herkend. Optioneel
OperationContext String Niet ingesteld Tekenreeks die ontwikkelaars mid action kunnen doorgeven, handig om ontwikkelaars in staat te stellen context op te slaan over de gebeurtenissen die ze ontvangen. Optioneel
Phrases String Niet ingesteld Lijst met woordgroepen die aan het label zijn gekoppeld. Het horen van een van deze zinnen resulteert in een geslaagde herkenning. Vereist
Tone String Niet ingesteld De toon die moet worden herkend als de gebruiker besluit om op een getal te drukken in plaats van spraak te gebruiken. Optioneel
Label String Niet ingesteld De sleutelwaarde voor herkenning. Vereist
Language String En-us De taal die wordt gebruikt voor het herkennen van spraak. Optioneel
EndSilenceTimeout TimeSpan 0,5 seconde De laatste pauze van de spreker die wordt gebruikt om het uiteindelijke resultaat te detecteren dat wordt gegenereerd als spraak. Optioneel

Notitie

In situaties waarin zowel DTMF als spraak zich in de recognizeInputsTypeactie herkennen bevindt, handelt de herkenningsactie op het eerste ontvangen invoertype. Als de gebruiker bijvoorbeeld eerst op een toetsenbloknummer drukt, beschouwt de recognize-actie het als een DTMF-gebeurtenis en blijft luisteren naar DTMF-tonen. Als de gebruiker eerst spreekt, beschouwt de recognize-actie het als een spraakherkenningsevenement en luistert naar spraakinvoer.

Een nieuwe Python-toepassing maken

Een virtuele Python-omgeving instellen voor uw project

python -m venv play-audio-app

Uw virtuele omgeving activeren

Gebruik in Windows de volgende opdracht:

.\ play-audio-quickstart \Scripts\activate

Gebruik in Unix de volgende opdracht:

source play-audio-quickstart /bin/activate

Het Azure Communication Services Call Automation-pakket installeren

pip install azure-communication-callautomation

Maak uw toepassingsbestand in uw projectmap, bijvoorbeeld een naam app.py. Schrijf uw Python-code in dit bestand.

Voer uw toepassing uit met behulp van Python met de volgende opdracht.

python app.py

Een oproep tot stand brengen

Op dit punt moet u bekend zijn met het starten van oproepen. Zie quickstart: Bellen en uitgaand bellen voor meer informatie over het maken van een oproep.

De actie Herkennen aanroepen

Wanneer uw toepassing de oproep beantwoordt, kunt u informatie opgeven over het herkennen van deelnemersinvoer en het afspelen van een prompt.

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 ]) 

Voor spraak-naar-tekststromen ondersteunt de actie Oproepautomatisering herkennen ook het gebruik van aangepaste spraakmodellen. Functies zoals aangepaste spraakmodellen kunnen handig zijn wanneer u een toepassing bouwt die moet luisteren naar complexe woorden die de standaardmodellen voor spraak-naar-tekst mogelijk niet begrijpen. Een voorbeeld is wanneer u een toepassing bouwt voor de telemedicale industrie en uw virtuele agent medische termen moet kunnen herkennen. Meer informatie vindt u in Een aangepast spraakproject maken.

Opties voor spraak-naar-tekst

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")  

Speech to 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") 

Spraak-naar-tekst of 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") 

Notitie

Als parameters niet zijn ingesteld, worden de standaardinstellingen waar mogelijk toegepast.

Gebeurtenisupdates herkennen ontvangen

Ontwikkelaars kunnen zich abonneren op RecognizeCompleted en RecognizeFailed gebeurtenissen op de geregistreerde webhook callback. Gebruik deze callback met bedrijfslogica in uw toepassing om de volgende stappen te bepalen wanneer een van de gebeurtenissen plaatsvindt.

Voorbeeld van hoe u de gebeurtenis RecognizeCompleted kunt deserialiseren:

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); 

Voorbeeld van hoe u de recognizeFailed-gebeurtenis kunt deserialiseren:

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

Voorbeeld van hoe u deserialiseren van de gebeurtenis RecognizeCanceled kunt deserialiseren :

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

Gebeurteniscodes

Status Code Subcode Bericht
RecognizeCompleted 200 8531 Actie voltooid, maximaal aantal ontvangen cijfers.
RecognizeCompleted 200 8514 Actie voltooid als stoptoon is gedetecteerd.
RecognizeCompleted 400 8508 De actie is mislukt, de bewerking is geannuleerd.
RecognizeCompleted 400 8532 De time-out voor stilte tussen cijfers is mislukt.
RecognizeCanceled 400 8508 De actie is mislukt, de bewerking is geannuleerd.
RecognizeFailed 400 8510 Actie is mislukt, time-out voor initiële stilte bereikt.
RecognizeFailed 500 8511 Er is een fout opgetreden tijdens het afspelen van de prompt.
RecognizeFailed 500 8512 Onbekende interne serverfout.
RecognizeFailed 400 8510 Actie mislukt, initiële time-out voor stilte bereikt
RecognizeFailed 400 8532 De time-out voor stilte tussen cijfers is mislukt.
RecognizeFailed 400 8565 Actie is mislukt, ongeldige aanvraag voor Azure AI-services. Controleer de invoerparameters.
RecognizeFailed 400 8565 Actie is mislukt, ongeldige aanvraag voor Azure AI-services. Kan de opgegeven nettolading niet verwerken. Controleer de invoer van de play-bron.
RecognizeFailed 401 8565 De actie is mislukt, verificatiefout in Azure AI-services.
RecognizeFailed 403 8565 Actie is mislukt, verboden aanvraag voor Azure AI-services, gratis abonnement dat door de aanvraag wordt gebruikt, heeft geen quotum meer.
RecognizeFailed 429 8565 Actie is mislukt, aanvragen hebben het aantal toegestane gelijktijdige aanvragen voor het Azure AI-servicesabonnement overschreden.
RecognizeFailed 408 8565 Er is een time-out opgetreden voor de actie van Azure AI-services.
RecognizeFailed 500 8511 Er is een fout opgetreden tijdens het afspelen van de prompt.
RecognizeFailed 500 8512 Onbekende interne serverfout.

Bekende beperkingen

  • In-band DTMF wordt niet ondersteund. Gebruik in plaats daarvan RFC 2833 DTMF.
  • Tekst-naar-spraak-tekstprompts ondersteunen maximaal 400 tekens, als uw prompt langer is dan dit, raden we u aan om SSML te gebruiken voor op tekst-naar-spraak gebaseerde afspeelacties.
  • Voor scenario's waarin u de quotumlimiet van de Speech-service overschrijdt, kunt u aanvragen om deze limiet te verhogen door de stappen te volgen die worden beschreven in quota en limieten voor Speech-services.

Resources opschonen

Als u een Communication Services-abonnement wilt opschonen en verwijderen, kunt u de resource of resourcegroep verwijderen. Als u de resourcegroep verwijdert, worden ook alle bijbehorende resources verwijderd. Meer informatie over het opschonen van resources.

Volgende stappen