Shromáždění uživatelského vstupu pomocí akce Rozpoznávání
Tato příručka vám pomůže začít rozpoznávat vstupY DTMF poskytované účastníky prostřednictvím sady SDK pro automatizaci volání ve službě Azure Communication Services.
Požadavky
- Podrobnosti o vytvoření účtu Azure s aktivním předplatným najdete v tématu Vytvoření účtu zdarma.
- Prostředek Azure Communication Services Viz Vytvoření prostředku Azure Communication Services. Poznamenejte si připojovací řetězec pro tento prostředek.
- Vytvořte novou aplikaci webové služby pomocí sady SDK pro automatizaci volání.
- Nejnovější knihovna .NET pro váš operační systém.
- Nejnovější balíček NuGet.
Funkce AI
- Vytvořte a připojte služby Azure AI k prostředku Azure Communication Services.
- Vytvořte vlastní subdoménu pro prostředek služeb Azure AI.
Technické specifikace
K dispozici jsou následující parametry pro přizpůsobení funkce Recognize:
Parametr | Typ | Výchozí (pokud není zadáno) | Popis | Povinné, nebo volitelné |
---|---|---|---|---|
Prompt (Podrobnosti najdete v tématu Přizpůsobení hlasových výzev uživatelům pomocí akce Přehrát) |
FileSource, TextSource | Nenastaveno | Zpráva, která se má přehrát před rozpoznáním vstupu. | Volitelné |
InterToneTimeout |
TimeSpan | 2 sekundy Min: 1 sekunda Max: 60 sekund |
Omezte v sekundách, po které služba Azure Communication Services čeká, než volající stiskne jinou číslici (časový limit mezi číslicemi). | Volitelné |
InitialSegmentationSilenceTimeoutInSeconds |
Celé číslo | 0,5 sekundy | Jak dlouho akce rozpoznává čekání na vstup před zvážením časového limitu. Podívejte se, jak rozpoznávat řeč. | Volitelné |
RecognizeInputsType |
Výčet | Dtmf | Typ rozpoznaného vstupu Možnosti jsou dtmf , choices , speech 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". Podívejte se, jak rozpoznávat řeč. | Volitelné |
MaxTonesToCollect |
Celé číslo | Bez výchozího nastavení Min: 1 |
Počet číslic, které vývojář očekává jako vstup od účastníka. | Požaduje se |
StopTones |
IEnumeration<DtmfTone> | Nenastaveno | Číslice účastníci mohou stisknout řídicí znak z dávkové události DTMF. | Volitelné |
InterruptPrompt |
Bool | True | Pokud má účastník možnost přerušit playMessage stisknutím číslice. | Volitelné |
InterruptCallMediaOperation |
Bool | True | Pokud je tento příznak nastavený, přeruší aktuální operaci média volání. Pokud se například přehrává jakýkoli zvuk, přeruší tuto operaci a zahájí rozpoznávání. | Volitelné |
OperationContext |
String | Nenastaveno | Řetězec, který můžou vývojáři předat střední akci, což je užitečné, když vývojářům umožní ukládat kontext o událostech, které obdrží. | Volitelné |
Phrases |
String | Nenastaveno | Seznam frází přidružených k popisku Když uslyšíte některou z těchto frází, výsledkem je úspěšné uznání. | Požaduje se |
Tone |
String | Nenastaveno | Tón, který se má rozpoznat, pokud se uživatel rozhodne místo použití řeči stisknout číslo. | Volitelné |
Label |
String | Nenastaveno | Hodnota klíče pro rozpoznávání. | Požaduje se |
Language |
String | En-us | Jazyk, který se používá k rozpoznávání řeči. | Volitelné |
EndSilenceTimeout |
TimeSpan | 0,5 sekundy | Poslední pozastavení mluvčího sloužícího ke zjištění konečného výsledku, který se vygeneruje jako řeč. | Volitelné |
Poznámka:
V situacích, kdy jsou recognizeInputsType
v DTMF i řeči, akce rozpoznávání funguje na prvním přijatém vstupním typu. Pokud například uživatel nejprve stiskne číslo klávesnice, akce rozpoznávání ji považuje za událost DTMF a pokračuje v naslouchání tónům DTMF. Pokud uživatel mluví jako první, akce rozpoznávání řeči ji považuje za událost rozpoznávání řeči a naslouchá hlasovému vstupu.
Vytvoření nové aplikace jazyka C#
V okně konzoly operačního systému pomocí dotnet
příkazu vytvořte novou webovou aplikaci.
dotnet new web -n MyApplication
Instalace balíčku NuGet
Získání balíčku NuGet z galerie NuGet | Azure.Communication.CallAutomation. Podle pokynů nainstalujte balíček.
Vytvoření hovoru
V tomto okamžiku byste měli být obeznámeni se spouštěním volání. Další informace o volání najdete v tématu Rychlý start: Uskutečnění a odchozí volání. Můžete také použít fragment kódu, který je zde k dispozici, abyste pochopili, jak odpovědět na volání.
var callAutomationClient = new CallAutomationClient("<Azure Communication Services connection string>");
var answerCallOptions = new AnswerCallOptions("<Incoming call context once call is connected>", new Uri("<https://sample-callback-uri>"))
{
CallIntelligenceOptions = new CallIntelligenceOptions() { CognitiveServicesEndpoint = new Uri("<Azure Cognitive Services Endpoint>") }
};
var answerCallResult = await callAutomationClient.AnswerCallAsync(answerCallOptions);
Volání akce rozpoznávání
Když vaše aplikace odpoví na hovor, můžete zadat informace o rozpoznávání vstupu účastníka a přehrání výzvy.
DTMF
var maxTonesToCollect = 3;
String textToPlay = "Welcome to Contoso, please enter 3 DTMF.";
var playSource = new TextSource(textToPlay, "en-US-ElizabethNeural");
var recognizeOptions = new CallMediaRecognizeDtmfOptions(targetParticipant, maxTonesToCollect) {
InitialSilenceTimeout = TimeSpan.FromSeconds(30),
Prompt = playSource,
InterToneTimeout = TimeSpan.FromSeconds(5),
InterruptPrompt = true,
StopTones = new DtmfTone[] {
DtmfTone.Pound
},
};
var recognizeResult = await callAutomationClient.GetCallConnection(callConnectionId)
.GetCallMedia()
.StartRecognizingAsync(recognizeOptions);
U toků řeči na text akce Rozpoznávání volání podporuje také použití vlastních modelů řeči. Funkce, jako jsou vlastní modely řeči, můžou být užitečné při vytváření aplikace, která potřebuje naslouchat složitým slovům, kterým výchozí modely převodu řeči na text nemusí rozumět. Jedním z příkladů je, že vytváříte aplikaci pro telemedický průmysl a váš virtuální agent musí být schopný rozpoznat lékařské termíny. Další informace najdete v článku Vytvoření vlastního projektu řeči.
Volby převodu řeči na text
var choices = new List < RecognitionChoice > {
new RecognitionChoice("Confirm", new List < string > {
"Confirm",
"First",
"One"
}) {
Tone = DtmfTone.One
},
new RecognitionChoice("Cancel", new List < string > {
"Cancel",
"Second",
"Two"
}) {
Tone = DtmfTone.Two
}
};
String textToPlay = "Hello, This is a reminder for your appointment at 2 PM, Say Confirm to confirm your appointment or Cancel to cancel the appointment. Thank you!";
var playSource = new TextSource(textToPlay, "en-US-ElizabethNeural");
var recognizeOptions = new CallMediaRecognizeChoiceOptions(targetParticipant, choices) {
InterruptPrompt = true,
InitialSilenceTimeout = TimeSpan.FromSeconds(30),
Prompt = playSource,
OperationContext = "AppointmentReminderMenu",
//Only add the SpeechModelEndpointId if you have a custom speech model you would like to use
SpeechModelEndpointId = "YourCustomSpeechModelEndpointId"
};
var recognizeResult = await callAutomationClient.GetCallConnection(callConnectionId)
.GetCallMedia()
.StartRecognizingAsync(recognizeOptions);
Převod řeči na text
String textToPlay = "Hi, how can I help you today?";
var playSource = new TextSource(textToPlay, "en-US-ElizabethNeural");
var recognizeOptions = new CallMediaRecognizeSpeechOptions(targetParticipant) {
Prompt = playSource,
EndSilenceTimeout = TimeSpan.FromMilliseconds(1000),
OperationContext = "OpenQuestionSpeech",
//Only add the SpeechModelEndpointId if you have a custom speech model you would like to use
SpeechModelEndpointId = "YourCustomSpeechModelEndpointId"
};
var recognizeResult = await callAutomationClient.GetCallConnection(callConnectionId)
.GetCallMedia()
.StartRecognizingAsync(recognizeOptions);
Převod řeči na text nebo DTMF
var maxTonesToCollect = 1;
String textToPlay = "Hi, how can I help you today, you can press 0 to speak to an agent?";
var playSource = new TextSource(textToPlay, "en-US-ElizabethNeural");
var recognizeOptions = new CallMediaRecognizeSpeechOrDtmfOptions(targetParticipant, maxTonesToCollect)
{
Prompt = playSource,
EndSilenceTimeout = TimeSpan.FromMilliseconds(1000),
InitialSilenceTimeout = TimeSpan.FromSeconds(30),
InterruptPrompt = true,
OperationContext = "OpenQuestionSpeechOrDtmf",
//Only add the SpeechModelEndpointId if you have a custom speech model you would like to use
SpeechModelEndpointId = "YourCustomSpeechModelEndpointId"
};
var recognizeResult = await callAutomationClient.GetCallConnection(callConnectionId)
.GetCallMedia()
.StartRecognizingAsync(recognizeOptions);
Poznámka:
Pokud parametry nejsou nastavené, použijí se výchozí hodnoty tam, kde je to možné.
Příjem aktualizací událostí rozpoznávání
Vývojáři se můžou přihlásit k odběru RecognizeCompleted
a RecognizeFailed
událostem v registrovaném zpětném volání webhooku. Pomocí tohoto zpětného volání s obchodní logikou v aplikaci můžete určit další kroky, kdy dojde k jedné z událostí.
Příklad, jak můžete deserializovat událost RecognizeCompleted :
if (acsEvent is RecognizeCompleted recognizeCompleted)
{
switch (recognizeCompleted.RecognizeResult)
{
case DtmfResult dtmfResult:
//Take action for Recognition through DTMF
var tones = dtmfResult.Tones;
logger.LogInformation("Recognize completed succesfully, tones={tones}", tones);
break;
case ChoiceResult choiceResult:
// Take action for Recognition through Choices
var labelDetected = choiceResult.Label;
var phraseDetected = choiceResult.RecognizedPhrase;
// If choice is detected by phrase, choiceResult.RecognizedPhrase will have the phrase detected,
// If choice is detected using dtmf tone, phrase will be null
logger.LogInformation("Recognize completed succesfully, labelDetected={labelDetected}, phraseDetected={phraseDetected}", labelDetected, phraseDetected);
break;
case SpeechResult speechResult:
// Take action for Recognition through Choices
var text = speechResult.Speech;
logger.LogInformation("Recognize completed succesfully, text={text}", text);
break;
default:
logger.LogInformation("Recognize completed succesfully, recognizeResult={recognizeResult}", recognizeCompleted.RecognizeResult);
break;
}
}
Příklad, jak můžete deserializovat událost RecognizeFailed :
if (acsEvent is RecognizeFailed recognizeFailed)
{
if (MediaEventReasonCode.RecognizeInitialSilenceTimedOut.Equals(recognizeFailed.ReasonCode))
{
// Take action for time out
logger.LogInformation("Recognition failed: initial silencev time out");
}
else if (MediaEventReasonCode.RecognizeSpeechOptionNotMatched.Equals(recognizeFailed.ReasonCode))
{
// Take action for option not matched
logger.LogInformation("Recognition failed: speech option not matched");
}
else if (MediaEventReasonCode.RecognizeIncorrectToneDetected.Equals(recognizeFailed.ReasonCode))
{
// Take action for incorrect tone
logger.LogInformation("Recognition failed: incorrect tone detected");
}
else
{
logger.LogInformation("Recognition failed, result={result}, context={context}", recognizeFailed.ResultInformation?.Message, recognizeFailed.OperationContext);
}
}
Příklad, jak můžete deserializovat událost RecognizeCanceled :
if (acsEvent is RecognizeCanceled { OperationContext: "AppointmentReminderMenu" })
{
logger.LogInformation($"RecognizeCanceled event received for call connection id: {@event.CallConnectionId}");
//Take action on recognize canceled operation
await callConnection.HangUpAsync(forEveryone: true);
}
Požadavky
- Podrobnosti o vytvoření účtu Azure s aktivním předplatným najdete v tématu Vytvoření účtu zdarma.
- Prostředek Azure Communication Services Viz Vytvoření prostředku Azure Communication Services
- Vytvořte novou aplikaci webové služby pomocí sady SDK pro automatizaci volání.
- Java Development Kit verze 8 nebo novější.
- Apache Maven
Funkce AI
- Vytvořte a připojte služby Azure AI k prostředku Azure Communication Services.
- Vytvořte vlastní subdoménu pro prostředek služeb Azure AI.
Technické specifikace
K dispozici jsou následující parametry pro přizpůsobení funkce Recognize:
Parametr | Typ | Výchozí (pokud není zadáno) | Popis | Povinné, nebo volitelné |
---|---|---|---|---|
Prompt (Podrobnosti najdete v tématu Přizpůsobení hlasových výzev uživatelům pomocí akce Přehrát) |
FileSource, TextSource | Nenastaveno | Zpráva, která se má přehrát před rozpoznáním vstupu. | Volitelné |
InterToneTimeout |
TimeSpan | 2 sekundy Min: 1 sekunda Max: 60 sekund |
Omezte v sekundách, po které služba Azure Communication Services čeká, než volající stiskne jinou číslici (časový limit mezi číslicemi). | Volitelné |
InitialSegmentationSilenceTimeoutInSeconds |
Celé číslo | 0,5 sekundy | Jak dlouho akce rozpoznává čekání na vstup před zvážením časového limitu. Podívejte se, jak rozpoznávat řeč. | Volitelné |
RecognizeInputsType |
Výčet | Dtmf | Typ rozpoznaného vstupu Možnosti jsou dtmf , choices , speech 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". Podívejte se, jak rozpoznávat řeč. | Volitelné |
MaxTonesToCollect |
Celé číslo | Bez výchozího nastavení Min: 1 |
Počet číslic, které vývojář očekává jako vstup od účastníka. | Požaduje se |
StopTones |
IEnumeration<DtmfTone> | Nenastaveno | Číslice účastníci mohou stisknout řídicí znak z dávkové události DTMF. | Volitelné |
InterruptPrompt |
Bool | True | Pokud má účastník možnost přerušit playMessage stisknutím číslice. | Volitelné |
InterruptCallMediaOperation |
Bool | True | Pokud je tento příznak nastavený, přeruší aktuální operaci média volání. Pokud se například přehrává jakýkoli zvuk, přeruší tuto operaci a zahájí rozpoznávání. | Volitelné |
OperationContext |
String | Nenastaveno | Řetězec, který můžou vývojáři předat střední akci, což je užitečné, když vývojářům umožní ukládat kontext o událostech, které obdrží. | Volitelné |
Phrases |
String | Nenastaveno | Seznam frází přidružených k popisku Když uslyšíte některou z těchto frází, výsledkem je úspěšné uznání. | Požaduje se |
Tone |
String | Nenastaveno | Tón, který se má rozpoznat, pokud se uživatel rozhodne místo použití řeči stisknout číslo. | Volitelné |
Label |
String | Nenastaveno | Hodnota klíče pro rozpoznávání. | Požaduje se |
Language |
String | En-us | Jazyk, který se používá k rozpoznávání řeči. | Volitelné |
EndSilenceTimeout |
TimeSpan | 0,5 sekundy | Poslední pozastavení mluvčího sloužícího ke zjištění konečného výsledku, který se vygeneruje jako řeč. | Volitelné |
Poznámka:
V situacích, kdy jsou recognizeInputsType
v DTMF i řeči, akce rozpoznávání funguje na prvním přijatém vstupním typu. Pokud například uživatel nejprve stiskne číslo klávesnice, akce rozpoznávání ji považuje za událost DTMF a pokračuje v naslouchání tónům DTMF. Pokud uživatel mluví jako první, akce rozpoznávání řeči ji považuje za událost rozpoznávání řeči a naslouchá hlasovému vstupu.
Vytvoření nové aplikace v Javě
V terminálu nebo příkazovém okně přejděte do adresáře, do kterého chcete vytvořit aplikaci v Javě. Spuštěním mvn
příkazu vygenerujte projekt Java ze šablony maven-archetype-quickstart.
mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
Příkaz mvn
vytvoří adresář se stejným názvem jako artifactId
argument. Adresář src/main/java
obsahuje zdrojový kód projektu. Adresář src/test/java
obsahuje zdroj testu.
Všimněte si, že generate
krok vytvořil adresář se stejným názvem jako .artifactId
Adresář src/main/java
obsahuje zdrojový kód. Adresář src/test/java
obsahuje testy. Soubor pom.xml
je projektový objektový model (POM).
Aktualizujte soubory POM aplikací tak, aby používaly Javu 8 nebo vyšší.
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
Přidání odkazů na balíčky
Do souboru POM přidejte následující odkaz na projekt:
azure-communication-callautomation
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-communication-callautomation</artifactId>
<version>1.0.0</version>
</dependency>
Vytvoření hovoru
V tomto okamžiku byste měli být obeznámeni se spouštěním volání. Další informace o volání najdete v tématu Rychlý start: Uskutečnění a odchozí volání. Můžete také použít fragment kódu, který je zde k dispozici, abyste pochopili, jak odpovědět na volání.
CallIntelligenceOptions callIntelligenceOptions = new CallIntelligenceOptions().setCognitiveServicesEndpoint("https://sample-cognitive-service-resource.cognitiveservices.azure.com/");
answerCallOptions = new AnswerCallOptions("<Incoming call context>", "<https://sample-callback-uri>").setCallIntelligenceOptions(callIntelligenceOptions);
Response < AnswerCallResult > answerCallResult = callAutomationClient
.answerCallWithResponse(answerCallOptions)
.block();
Volání akce rozpoznávání
Když vaše aplikace odpoví na hovor, můžete zadat informace o rozpoznávání vstupu účastníka a přehrání výzvy.
DTMF
var maxTonesToCollect = 3;
String textToPlay = "Welcome to Contoso, please enter 3 DTMF.";
var playSource = new TextSource()
.setText(textToPlay)
.setVoiceName("en-US-ElizabethNeural");
var recognizeOptions = new CallMediaRecognizeDtmfOptions(targetParticipant, maxTonesToCollect)
.setInitialSilenceTimeout(Duration.ofSeconds(30))
.setPlayPrompt(playSource)
.setInterToneTimeout(Duration.ofSeconds(5))
.setInterruptPrompt(true)
.setStopTones(Arrays.asList(DtmfTone.POUND));
var recognizeResponse = callAutomationClient.getCallConnectionAsync(callConnectionId)
.getCallMediaAsync()
.startRecognizingWithResponse(recognizeOptions)
.block();
log.info("Start recognizing result: " + recognizeResponse.getStatusCode());
U toků řeči na text akce Rozpoznávání volání podporuje také použití vlastních modelů řeči. Funkce, jako jsou vlastní modely řeči, můžou být užitečné při vytváření aplikace, která potřebuje naslouchat složitým slovům, kterým výchozí modely převodu řeči na text nemusí rozumět. Jedním z příkladů je, že vytváříte aplikaci pro telemedický průmysl a váš virtuální agent musí být schopný rozpoznat lékařské termíny. Další informace najdete v článku Vytvoření vlastního projektu řeči.
Volby převodu řeči na text
var choices = Arrays.asList(
new RecognitionChoice()
.setLabel("Confirm")
.setPhrases(Arrays.asList("Confirm", "First", "One"))
.setTone(DtmfTone.ONE),
new RecognitionChoice()
.setLabel("Cancel")
.setPhrases(Arrays.asList("Cancel", "Second", "Two"))
.setTone(DtmfTone.TWO)
);
String textToPlay = "Hello, This is a reminder for your appointment at 2 PM, Say Confirm to confirm your appointment or Cancel to cancel the appointment. Thank you!";
var playSource = new TextSource()
.setText(textToPlay)
.setVoiceName("en-US-ElizabethNeural");
var recognizeOptions = new CallMediaRecognizeChoiceOptions(targetParticipant, choices)
.setInterruptPrompt(true)
.setInitialSilenceTimeout(Duration.ofSeconds(30))
.setPlayPrompt(playSource)
.setOperationContext("AppointmentReminderMenu")
//Only add the SpeechRecognitionModelEndpointId if you have a custom speech model you would like to use
.setSpeechRecognitionModelEndpointId("YourCustomSpeechModelEndpointID");
var recognizeResponse = callAutomationClient.getCallConnectionAsync(callConnectionId)
.getCallMediaAsync()
.startRecognizingWithResponse(recognizeOptions)
.block();
Převod řeči na text
String textToPlay = "Hi, how can I help you today?";
var playSource = new TextSource()
.setText(textToPlay)
.setVoiceName("en-US-ElizabethNeural");
var recognizeOptions = new CallMediaRecognizeSpeechOptions(targetParticipant, Duration.ofMillis(1000))
.setPlayPrompt(playSource)
.setOperationContext("OpenQuestionSpeech")
//Only add the SpeechRecognitionModelEndpointId if you have a custom speech model you would like to use
.setSpeechRecognitionModelEndpointId("YourCustomSpeechModelEndpointID");
var recognizeResponse = callAutomationClient.getCallConnectionAsync(callConnectionId)
.getCallMediaAsync()
.startRecognizingWithResponse(recognizeOptions)
.block();
Převod řeči na text nebo DTMF
var maxTonesToCollect = 1;
String textToPlay = "Hi, how can I help you today, you can press 0 to speak to an agent?";
var playSource = new TextSource()
.setText(textToPlay)
.setVoiceName("en-US-ElizabethNeural");
var recognizeOptions = new CallMediaRecognizeSpeechOrDtmfOptions(targetParticipant, maxTonesToCollect, Duration.ofMillis(1000))
.setPlayPrompt(playSource)
.setInitialSilenceTimeout(Duration.ofSeconds(30))
.setInterruptPrompt(true)
.setOperationContext("OpenQuestionSpeechOrDtmf")
//Only add the SpeechRecognitionModelEndpointId if you have a custom speech model you would like to use
.setSpeechRecognitionModelEndpointId("YourCustomSpeechModelEndpointID");
var recognizeResponse = callAutomationClient.getCallConnectionAsync(callConnectionId)
.getCallMediaAsync()
.startRecognizingWithResponse(recognizeOptions)
.block();
Poznámka:
Pokud parametry nejsou nastavené, použijí se výchozí hodnoty tam, kde je to možné.
Příjem aktualizací událostí rozpoznávání
Vývojáři se můžou přihlásit k odběru RecognizeCompleted
a RecognizeFailed
událostem v registrovaném zpětném volání webhooku. Pomocí tohoto zpětného volání s obchodní logikou v aplikaci můžete určit další kroky, kdy dojde k jedné z událostí.
Příklad, jak můžete deserializovat událost RecognizeCompleted :
if (acsEvent instanceof RecognizeCompleted) {
RecognizeCompleted event = (RecognizeCompleted) acsEvent;
RecognizeResult recognizeResult = event.getRecognizeResult().get();
if (recognizeResult instanceof DtmfResult) {
// Take action on collect tones
DtmfResult dtmfResult = (DtmfResult) recognizeResult;
List<DtmfTone> tones = dtmfResult.getTones();
log.info("Recognition completed, tones=" + tones + ", context=" + event.getOperationContext());
} else if (recognizeResult instanceof ChoiceResult) {
ChoiceResult collectChoiceResult = (ChoiceResult) recognizeResult;
String labelDetected = collectChoiceResult.getLabel();
String phraseDetected = collectChoiceResult.getRecognizedPhrase();
log.info("Recognition completed, labelDetected=" + labelDetected + ", phraseDetected=" + phraseDetected + ", context=" + event.getOperationContext());
} else if (recognizeResult instanceof SpeechResult) {
SpeechResult speechResult = (SpeechResult) recognizeResult;
String text = speechResult.getSpeech();
log.info("Recognition completed, text=" + text + ", context=" + event.getOperationContext());
} else {
log.info("Recognition completed, result=" + recognizeResult + ", context=" + event.getOperationContext());
}
}
Příklad, jak můžete deserializovat událost RecognizeFailed :
if (acsEvent instanceof RecognizeFailed) {
RecognizeFailed event = (RecognizeFailed) acsEvent;
if (ReasonCode.Recognize.INITIAL_SILENCE_TIMEOUT.equals(event.getReasonCode())) {
// Take action for time out
log.info("Recognition failed: initial silence time out");
} else if (ReasonCode.Recognize.SPEECH_OPTION_NOT_MATCHED.equals(event.getReasonCode())) {
// Take action for option not matched
log.info("Recognition failed: speech option not matched");
} else if (ReasonCode.Recognize.DMTF_OPTION_MATCHED.equals(event.getReasonCode())) {
// Take action for incorrect tone
log.info("Recognition failed: incorrect tone detected");
} else {
log.info("Recognition failed, result=" + event.getResultInformation().getMessage() + ", context=" + event.getOperationContext());
}
}
Příklad, jak můžete deserializovat událost RecognizeCanceled :
if (acsEvent instanceof RecognizeCanceled) {
RecognizeCanceled event = (RecognizeCanceled) acsEvent;
log.info("Recognition canceled, context=" + event.getOperationContext());
}
Požadavky
- Podrobnosti o účtu Azure s aktivním předplatným najdete v tématu Vytvoření účtu zdarma.
- Prostředek Azure Communication Services Viz Vytvoření prostředku Azure Communication Services. Poznamenejte si připojovací řetězec pro tento prostředek.
- Vytvořte novou aplikaci webové služby pomocí sady SDK pro automatizaci volání.
- Máte nainstalované Node.js, můžete ho nainstalovat z oficiálních webových stránek.
Funkce AI
- Vytvořte a připojte služby Azure AI k prostředku Azure Communication Services.
- Vytvořte vlastní subdoménu pro prostředek služeb Azure AI.
Technické specifikace
K dispozici jsou následující parametry pro přizpůsobení funkce Recognize:
Parametr | Typ | Výchozí (pokud není zadáno) | Popis | Povinné, nebo volitelné |
---|---|---|---|---|
Prompt (Podrobnosti najdete v tématu Přizpůsobení hlasových výzev uživatelům pomocí akce Přehrát) |
FileSource, TextSource | Nenastaveno | Zpráva, která se má přehrát před rozpoznáním vstupu. | Volitelné |
InterToneTimeout |
TimeSpan | 2 sekundy Min: 1 sekunda Max: 60 sekund |
Omezte v sekundách, po které služba Azure Communication Services čeká, než volající stiskne jinou číslici (časový limit mezi číslicemi). | Volitelné |
InitialSegmentationSilenceTimeoutInSeconds |
Celé číslo | 0,5 sekundy | Jak dlouho akce rozpoznává čekání na vstup před zvážením časového limitu. Podívejte se, jak rozpoznávat řeč. | Volitelné |
RecognizeInputsType |
Výčet | Dtmf | Typ rozpoznaného vstupu Možnosti jsou dtmf , choices , speech 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". Podívejte se, jak rozpoznávat řeč. | Volitelné |
MaxTonesToCollect |
Celé číslo | Bez výchozího nastavení Min: 1 |
Počet číslic, které vývojář očekává jako vstup od účastníka. | Požaduje se |
StopTones |
IEnumeration<DtmfTone> | Nenastaveno | Číslice účastníci mohou stisknout řídicí znak z dávkové události DTMF. | Volitelné |
InterruptPrompt |
Bool | True | Pokud má účastník možnost přerušit playMessage stisknutím číslice. | Volitelné |
InterruptCallMediaOperation |
Bool | True | Pokud je tento příznak nastavený, přeruší aktuální operaci média volání. Pokud se například přehrává jakýkoli zvuk, přeruší tuto operaci a zahájí rozpoznávání. | Volitelné |
OperationContext |
String | Nenastaveno | Řetězec, který můžou vývojáři předat střední akci, což je užitečné, když vývojářům umožní ukládat kontext o událostech, které obdrží. | Volitelné |
Phrases |
String | Nenastaveno | Seznam frází přidružených k popisku Když uslyšíte některou z těchto frází, výsledkem je úspěšné uznání. | Požaduje se |
Tone |
String | Nenastaveno | Tón, který se má rozpoznat, pokud se uživatel rozhodne místo použití řeči stisknout číslo. | Volitelné |
Label |
String | Nenastaveno | Hodnota klíče pro rozpoznávání. | Požaduje se |
Language |
String | En-us | Jazyk, který se používá k rozpoznávání řeči. | Volitelné |
EndSilenceTimeout |
TimeSpan | 0,5 sekundy | Poslední pozastavení mluvčího sloužícího ke zjištění konečného výsledku, který se vygeneruje jako řeč. | Volitelné |
Poznámka:
V situacích, kdy jsou recognizeInputsType
v DTMF i řeči, akce rozpoznávání funguje na prvním přijatém vstupním typu. Pokud například uživatel nejprve stiskne číslo klávesnice, akce rozpoznávání ji považuje za událost DTMF a pokračuje v naslouchání tónům DTMF. Pokud uživatel mluví jako první, akce rozpoznávání řeči ji považuje za událost rozpoznávání řeči a naslouchá hlasovému vstupu.
Vytvoření nové javascriptové aplikace
Vytvořte novou javascriptovou aplikaci v adresáři projektu. Inicializace nového projektu Node.js pomocí následujícího příkazu Tím se vytvoří soubor package.json pro váš projekt, který spravuje závislosti projektu.
npm init -y
Instalace balíčku Automatizace volání služby Azure Communication Services
npm install @azure/communication-call-automation
V adresáři projektu vytvořte nový soubor JavaScriptu, například ho app.js
pojmenujte . Do tohoto souboru napište kód JavaScriptu.
Spusťte aplikaci pomocí Node.js pomocí následujícího příkazu.
node app.js
Vytvoření hovoru
V tomto okamžiku byste měli být obeznámeni se spouštěním volání. Další informace o volání najdete v tématu Rychlý start: Uskutečnění a odchozí volání.
Volání akce rozpoznávání
Když vaše aplikace odpoví na hovor, můžete zadat informace o rozpoznávání vstupu účastníka a přehrání výzvy.
DTMF
const maxTonesToCollect = 3;
const textToPlay = "Welcome to Contoso, please enter 3 DTMF.";
const playSource: TextSource = { text: textToPlay, voiceName: "en-US-ElizabethNeural", kind: "textSource" };
const recognizeOptions: CallMediaRecognizeDtmfOptions = {
maxTonesToCollect: maxTonesToCollect,
initialSilenceTimeoutInSeconds: 30,
playPrompt: playSource,
interToneTimeoutInSeconds: 5,
interruptPrompt: true,
stopDtmfTones: [ DtmfTone.Pound ],
kind: "callMediaRecognizeDtmfOptions"
};
await callAutomationClient.getCallConnection(callConnectionId)
.getCallMedia()
.startRecognizing(targetParticipant, recognizeOptions);
U toků řeči na text akce Rozpoznávání volání podporuje také použití vlastních modelů řeči. Funkce, jako jsou vlastní modely řeči, můžou být užitečné při vytváření aplikace, která potřebuje naslouchat složitým slovům, kterým výchozí modely převodu řeči na text nemusí rozumět. Jedním z příkladů je, že vytváříte aplikaci pro telemedický průmysl a váš virtuální agent musí být schopný rozpoznat lékařské termíny. Další informace najdete v článku Vytvoření vlastního projektu řeči.
Volby převodu řeči na text
const choices = [
{
label: "Confirm",
phrases: [ "Confirm", "First", "One" ],
tone: DtmfTone.One
},
{
label: "Cancel",
phrases: [ "Cancel", "Second", "Two" ],
tone: DtmfTone.Two
}
];
const textToPlay = "Hello, This is a reminder for your appointment at 2 PM, Say Confirm to confirm your appointment or Cancel to cancel the appointment. Thank you!";
const playSource: TextSource = { text: textToPlay, voiceName: "en-US-ElizabethNeural", kind: "textSource" };
const recognizeOptions: CallMediaRecognizeChoiceOptions = {
choices: choices,
interruptPrompt: true,
initialSilenceTimeoutInSeconds: 30,
playPrompt: playSource,
operationContext: "AppointmentReminderMenu",
kind: "callMediaRecognizeChoiceOptions",
//Only add the speechRecognitionModelEndpointId if you have a custom speech model you would like to use
speechRecognitionModelEndpointId: "YourCustomSpeechEndpointId"
};
await callAutomationClient.getCallConnection(callConnectionId)
.getCallMedia()
.startRecognizing(targetParticipant, recognizeOptions);
Převod řeči na text
const textToPlay = "Hi, how can I help you today?";
const playSource: TextSource = { text: textToPlay, voiceName: "en-US-ElizabethNeural", kind: "textSource" };
const recognizeOptions: CallMediaRecognizeSpeechOptions = {
endSilenceTimeoutInSeconds: 1,
playPrompt: playSource,
operationContext: "OpenQuestionSpeech",
kind: "callMediaRecognizeSpeechOptions",
//Only add the speechRecognitionModelEndpointId if you have a custom speech model you would like to use
speechRecognitionModelEndpointId: "YourCustomSpeechEndpointId"
};
await callAutomationClient.getCallConnection(callConnectionId)
.getCallMedia()
.startRecognizing(targetParticipant, recognizeOptions);
Převod řeči na text nebo DTMF
const maxTonesToCollect = 1;
const textToPlay = "Hi, how can I help you today, you can press 0 to speak to an agent?";
const playSource: TextSource = { text: textToPlay, voiceName: "en-US-ElizabethNeural", kind: "textSource" };
const recognizeOptions: CallMediaRecognizeSpeechOrDtmfOptions = {
maxTonesToCollect: maxTonesToCollect,
endSilenceTimeoutInSeconds: 1,
playPrompt: playSource,
initialSilenceTimeoutInSeconds: 30,
interruptPrompt: true,
operationContext: "OpenQuestionSpeechOrDtmf",
kind: "callMediaRecognizeSpeechOrDtmfOptions",
//Only add the speechRecognitionModelEndpointId if you have a custom speech model you would like to use
speechRecognitionModelEndpointId: "YourCustomSpeechEndpointId"
};
await callAutomationClient.getCallConnection(callConnectionId)
.getCallMedia()
.startRecognizing(targetParticipant, recognizeOptions);
Poznámka:
Pokud parametry nejsou nastavené, použijí se výchozí hodnoty tam, kde je to možné.
Příjem aktualizací událostí rozpoznávání
Vývojáři se můžou přihlásit k odběru RecognizeCompleted
a RecognizeFailed
událostem v registrovaném zpětném volání webhooku. Pomocí tohoto zpětného volání s obchodní logikou v aplikaci můžete určit další kroky, kdy dojde k jedné z událostí.
Příklad, jak můžete deserializovat událost RecognizeCompleted :
if (event.type === "Microsoft.Communication.RecognizeCompleted") {
if (eventData.recognitionType === "dtmf") {
const tones = eventData.dtmfResult.tones;
console.log("Recognition completed, tones=%s, context=%s", tones, eventData.operationContext);
} else if (eventData.recognitionType === "choices") {
const labelDetected = eventData.choiceResult.label;
const phraseDetected = eventData.choiceResult.recognizedPhrase;
console.log("Recognition completed, labelDetected=%s, phraseDetected=%s, context=%s", labelDetected, phraseDetected, eventData.operationContext);
} else if (eventData.recognitionType === "speech") {
const text = eventData.speechResult.speech;
console.log("Recognition completed, text=%s, context=%s", text, eventData.operationContext);
} else {
console.log("Recognition completed: data=%s", JSON.stringify(eventData, null, 2));
}
}
Příklad, jak můžete deserializovat událost RecognizeFailed :
if (event.type === "Microsoft.Communication.RecognizeFailed") {
console.log("Recognize failed: data=%s", JSON.stringify(eventData, null, 2));
}
Příklad, jak můžete deserializovat událost RecognizeCanceled :
if (event.type === "Microsoft.Communication.RecognizeCanceled") {
console.log("Recognize canceled, context=%s", eventData.operationContext);
}
Požadavky
- Podrobnosti o účtu Azure s aktivním předplatným najdete v tématu Vytvoření účtu zdarma.
- Prostředek Azure Communication Services Viz Vytvoření prostředku Azure Communication Services. Poznamenejte si připojovací řetězec pro tento prostředek.
- Vytvořte novou aplikaci webové služby pomocí sady SDK pro automatizaci volání.
- Nainstalujte Python z Python.org.
Funkce AI
- Vytvořte a připojte služby Azure AI k prostředku Azure Communication Services.
- Vytvořte vlastní subdoménu pro prostředek služeb Azure AI.
Technické specifikace
K dispozici jsou následující parametry pro přizpůsobení funkce Recognize:
Parametr | Typ | Výchozí (pokud není zadáno) | Popis | Povinné, nebo volitelné |
---|---|---|---|---|
Prompt (Podrobnosti najdete v tématu Přizpůsobení hlasových výzev uživatelům pomocí akce Přehrát) |
FileSource, TextSource | Nenastaveno | Zpráva, která se má přehrát před rozpoznáním vstupu. | Volitelné |
InterToneTimeout |
TimeSpan | 2 sekundy Min: 1 sekunda Max: 60 sekund |
Omezte v sekundách, po které služba Azure Communication Services čeká, než volající stiskne jinou číslici (časový limit mezi číslicemi). | Volitelné |
InitialSegmentationSilenceTimeoutInSeconds |
Celé číslo | 0,5 sekundy | Jak dlouho akce rozpoznává čekání na vstup před zvážením časového limitu. Podívejte se, jak rozpoznávat řeč. | Volitelné |
RecognizeInputsType |
Výčet | Dtmf | Typ rozpoznaného vstupu Možnosti jsou dtmf , choices , speech 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". Podívejte se, jak rozpoznávat řeč. | Volitelné |
MaxTonesToCollect |
Celé číslo | Bez výchozího nastavení Min: 1 |
Počet číslic, které vývojář očekává jako vstup od účastníka. | Požaduje se |
StopTones |
IEnumeration<DtmfTone> | Nenastaveno | Číslice účastníci mohou stisknout řídicí znak z dávkové události DTMF. | Volitelné |
InterruptPrompt |
Bool | True | Pokud má účastník možnost přerušit playMessage stisknutím číslice. | Volitelné |
InterruptCallMediaOperation |
Bool | True | Pokud je tento příznak nastavený, přeruší aktuální operaci média volání. Pokud se například přehrává jakýkoli zvuk, přeruší tuto operaci a zahájí rozpoznávání. | Volitelné |
OperationContext |
String | Nenastaveno | Řetězec, který můžou vývojáři předat střední akci, což je užitečné, když vývojářům umožní ukládat kontext o událostech, které obdrží. | Volitelné |
Phrases |
String | Nenastaveno | Seznam frází přidružených k popisku Když uslyšíte některou z těchto frází, výsledkem je úspěšné uznání. | Požaduje se |
Tone |
String | Nenastaveno | Tón, který se má rozpoznat, pokud se uživatel rozhodne místo použití řeči stisknout číslo. | Volitelné |
Label |
String | Nenastaveno | Hodnota klíče pro rozpoznávání. | Požaduje se |
Language |
String | En-us | Jazyk, který se používá k rozpoznávání řeči. | Volitelné |
EndSilenceTimeout |
TimeSpan | 0,5 sekundy | Poslední pozastavení mluvčího sloužícího ke zjištění konečného výsledku, který se vygeneruje jako řeč. | Volitelné |
Poznámka:
V situacích, kdy jsou recognizeInputsType
v DTMF i řeči, akce rozpoznávání funguje na prvním přijatém vstupním typu. Pokud například uživatel nejprve stiskne číslo klávesnice, akce rozpoznávání ji považuje za událost DTMF a pokračuje v naslouchání tónům DTMF. Pokud uživatel mluví jako první, akce rozpoznávání řeči ji považuje za událost rozpoznávání řeči a naslouchá hlasovému vstupu.
Vytvoření nové aplikace v Pythonu
Nastavení virtuálního prostředí Pythonu pro váš projekt
python -m venv play-audio-app
Aktivace virtuálního prostředí
Ve Windows použijte následující příkaz:
.\ play-audio-quickstart \Scripts\activate
V systému Unix použijte následující příkaz:
source play-audio-quickstart /bin/activate
Instalace balíčku Automatizace volání služby Azure Communication Services
pip install azure-communication-callautomation
Vytvořte soubor aplikace v adresáři projektu, například ho app.py
pojmenujte . Do tohoto souboru napište kód Pythonu.
Spusťte aplikaci pomocí Pythonu pomocí následujícího příkazu.
python app.py
Vytvoření hovoru
V tomto okamžiku byste měli být obeznámeni se spouštěním volání. Další informace o volání najdete v tématu Rychlý start: Uskutečnění a odchozí volání.
Volání akce rozpoznávání
Když vaše aplikace odpoví na hovor, můžete zadat informace o rozpoznávání vstupu účastníka a přehrání výzvy.
DTMF
max_tones_to_collect = 3
text_to_play = "Welcome to Contoso, please enter 3 DTMF."
play_source = TextSource(text=text_to_play, voice_name="en-US-ElizabethNeural")
call_automation_client.get_call_connection(call_connection_id).start_recognizing_media(
dtmf_max_tones_to_collect=max_tones_to_collect,
input_type=RecognizeInputType.DTMF,
target_participant=target_participant,
initial_silence_timeout=30,
play_prompt=play_source,
dtmf_inter_tone_timeout=5,
interrupt_prompt=True,
dtmf_stop_tones=[ DtmfTone.Pound ])
U toků řeči na text akce Rozpoznávání volání podporuje také použití vlastních modelů řeči. Funkce, jako jsou vlastní modely řeči, můžou být užitečné při vytváření aplikace, která potřebuje naslouchat složitým slovům, kterým výchozí modely převodu řeči na text nemusí rozumět. Jedním z příkladů je, že vytváříte aplikaci pro telemedický průmysl a váš virtuální agent musí být schopný rozpoznat lékařské termíny. Další informace najdete v článku Vytvoření vlastního projektu řeči.
Volby převodu řeči na text
choices = [
RecognitionChoice(
label="Confirm",
phrases=[ "Confirm", "First", "One" ],
tone=DtmfTone.ONE
),
RecognitionChoice(
label="Cancel",
phrases=[ "Cancel", "Second", "Two" ],
tone=DtmfTone.TWO
)
]
text_to_play = "Hello, This is a reminder for your appointment at 2 PM, Say Confirm to confirm your appointment or Cancel to cancel the appointment. Thank you!"
play_source = TextSource(text=text_to_play, voice_name="en-US-ElizabethNeural")
call_automation_client.get_call_connection(call_connection_id).start_recognizing_media(
input_type=RecognizeInputType.CHOICES,
target_participant=target_participant,
choices=choices,
interrupt_prompt=True,
initial_silence_timeout=30,
play_prompt=play_source,
operation_context="AppointmentReminderMenu",
# Only add the speech_recognition_model_endpoint_id if you have a custom speech model you would like to use
speech_recognition_model_endpoint_id="YourCustomSpeechModelEndpointId")
Převod řeči na text
text_to_play = "Hi, how can I help you today?"
play_source = TextSource(text=text_to_play, voice_name="en-US-ElizabethNeural")
call_automation_client.get_call_connection(call_connection_id).start_recognizing_media(
input_type=RecognizeInputType.SPEECH,
target_participant=target_participant,
end_silence_timeout=1,
play_prompt=play_source,
operation_context="OpenQuestionSpeech",
# Only add the speech_recognition_model_endpoint_id if you have a custom speech model you would like to use
speech_recognition_model_endpoint_id="YourCustomSpeechModelEndpointId")
Převod řeči na text nebo DTMF
max_tones_to_collect = 1
text_to_play = "Hi, how can I help you today, you can also press 0 to speak to an agent."
play_source = TextSource(text=text_to_play, voice_name="en-US-ElizabethNeural")
call_automation_client.get_call_connection(call_connection_id).start_recognizing_media(
dtmf_max_tones_to_collect=max_tones_to_collect,
input_type=RecognizeInputType.SPEECH_OR_DTMF,
target_participant=target_participant,
end_silence_timeout=1,
play_prompt=play_source,
initial_silence_timeout=30,
interrupt_prompt=True,
operation_context="OpenQuestionSpeechOrDtmf",
# Only add the speech_recognition_model_endpoint_id if you have a custom speech model you would like to use
speech_recognition_model_endpoint_id="YourCustomSpeechModelEndpointId")
app.logger.info("Start recognizing")
Poznámka:
Pokud parametry nejsou nastavené, použijí se výchozí hodnoty tam, kde je to možné.
Příjem aktualizací událostí rozpoznávání
Vývojáři se můžou přihlásit k odběru RecognizeCompleted
a RecognizeFailed
událostem v registrovaném zpětném volání webhooku. Pomocí tohoto zpětného volání s obchodní logikou v aplikaci můžete určit další kroky, kdy dojde k jedné z událostí.
Příklad, jak můžete deserializovat událost RecognizeCompleted :
if event.type == "Microsoft.Communication.RecognizeCompleted":
app.logger.info("Recognize completed: data=%s", event.data)
if event.data['recognitionType'] == "dtmf":
tones = event.data['dtmfResult']['tones']
app.logger.info("Recognition completed, tones=%s, context=%s", tones, event.data.get('operationContext'))
elif event.data['recognitionType'] == "choices":
labelDetected = event.data['choiceResult']['label'];
phraseDetected = event.data['choiceResult']['recognizedPhrase'];
app.logger.info("Recognition completed, labelDetected=%s, phraseDetected=%s, context=%s", labelDetected, phraseDetected, event.data.get('operationContext'));
elif event.data['recognitionType'] == "speech":
text = event.data['speechResult']['speech'];
app.logger.info("Recognition completed, text=%s, context=%s", text, event.data.get('operationContext'));
else:
app.logger.info("Recognition completed: data=%s", event.data);
Příklad, jak můžete deserializovat událost RecognizeFailed :
if event.type == "Microsoft.Communication.RecognizeFailed":
app.logger.info("Recognize failed: data=%s", event.data);
Příklad, jak můžete deserializovat událost RecognizeCanceled :
if event.type == "Microsoft.Communication.RecognizeCanceled":
# Handle the RecognizeCanceled event according to your application logic
Kódy událostí
Stav | Kód | Podkód | Zpráva |
---|---|---|---|
RecognizeCompleted |
200 | 8531 | Akce byla dokončena, byla přijata maximální počet číslic. |
RecognizeCompleted |
200 | 8514 | Akce byla dokončena při zjištění tónu zastavení. |
RecognizeCompleted |
400 | 8508 | Akce se nezdařila, operace byla zrušena. |
RecognizeCompleted |
400 | 8532 | Akce selhala, došlo k dosažení časového limitu tichou mezi číslicemi. |
RecognizeCanceled |
400 | 8508 | Akce se nezdařila, operace byla zrušena. |
RecognizeFailed |
400 | 8510 | Akce se nezdařila, došlo k dosažení počátečního časového limitu ticha. |
RecognizeFailed |
500 | 8511 | Akce se nezdařila, při pokusu o přehrání výzvy došlo k chybě. |
RecognizeFailed |
500 | 8512 | Neznámá vnitřní chyba serveru. |
RecognizeFailed |
400 | 8510 | Akce selhala, došlo k dosažení počátečního časového limitu ticha. |
RecognizeFailed |
400 | 8532 | Akce selhala, došlo k dosažení časového limitu tichou mezi číslicemi. |
RecognizeFailed |
400 | 8565 | Akce selhala, chybný požadavek na služby Azure AI. Zkontrolujte vstupní parametry. |
RecognizeFailed |
400 | 8565 | Akce selhala, chybný požadavek na služby Azure AI. Nelze zpracovat zadanou datovou část, zkontrolujte vstup zdroje přehrávání. |
RecognizeFailed |
401 | 8565 | Akce selhala, chyba ověřování služeb Azure AI |
RecognizeFailed |
403 | 8565 | Akce selhala, zakázaná žádost o služby Azure AI, bezplatné předplatné používané žádostí o kvótu vypršelo. |
RecognizeFailed |
429 | 8565 | Akce selhala, požadavky překročily počet povolených souběžných požadavků pro předplatné služby Azure AI. |
RecognizeFailed |
408 | 8565 | Akce selhala, vypršel časový limit požadavku na služby Azure AI. |
RecognizeFailed |
500 | 8511 | Akce se nezdařila, při pokusu o přehrání výzvy došlo k chybě. |
RecognizeFailed |
500 | 8512 | Neznámá vnitřní chyba serveru. |
Známá omezení
- Nástroj DTMF v pásmu není podporován. Místo toho použijte RFC 2833 DTMF.
- Výzvy k převodu textu na řeč podporují maximálně 400 znaků, pokud je výzva delší, než je tato možnost, doporučujeme použít SSML pro akce přehrávání založené na převodu textu na řeč.
- V situacích, kdy překročíte limit kvóty služby Speech, můžete požádat o zvýšení tohoto limitu pomocí kroků uvedených v kvótách a omezeních služeb Speech.
Vyčištění prostředků
Pokud chcete vyčistit a odebrat předplatné služby Communication Services, můžete odstranit prostředek nebo skupinu prostředků. Odstraněním skupiny prostředků se odstraní také všechny ostatní prostředky, které jsou k ní přidružené. Přečtěte si další informace o čištění prostředků.
Další kroky
- Další informace o shromažďování uživatelských vstupů
- Další informace o přehrávání zvuku v hovoru
- Další informace o automatizaci volání