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