Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
RTT je požadavek na dodržování předpisů v oblasti přístupnosti pro hlasové platformy a video platformy v EU od 30. června 2025. Další informace najdete ve směrnici 2019/882.
Integrujte text v reálném čase (RTT) do volajících aplikací, abyste zlepšili přístupnost a zajistili efektivní komunikaci všech účastníků během schůzek.
RTT umožňuje uživatelům, kteří mají potíže s mluvením, aktivně se účastnit tím, že píší své zprávy, které se pak vysílají téměř v reálném čase ostatním účastníkům schůzky. Tato funkce funguje bezproblémově společně s existujícími titulky a zajišťuje, aby se zadané zprávy doručovaly okamžitě, aniž by tok konverzace narušoval.
Přehled funkce textu v reálném čase
Text v reálném čase (RTT) usnadňuje komunikaci pro uživatele, kteří mohou mít potíže s mluvením během hovorů. Tím, že uživatelům umožníte psát přímé textové zprávy, RTT zajistí, že všichni účastníci schůzky budou moct zůstat zapojeni a informovaní. Zprávy se přenášejí přes datové kanály (ID 24) a jsou vždy aktivní a automaticky se zobrazují při odeslání první zprávy.
Na podporovaných platformách můžou data RTT zobrazovat vedle titulků odvozených z řeči na text a poskytnout tak komplexní zobrazení veškeré komunikace během hovoru.
Poznámka:
RTT pro veřejnou telefonní síť nebo interoperabilitu Teams není momentálně k dispozici
Konvence vytváření názvů
Různé platformy můžou pro vlastnosti související s RTT používat různou terminologii. Následující tabulka shrnuje rozdíly:
Mobilní zařízení (Android/iOS) | Windows (C#) |
---|---|
Typ | Druh |
Informace | Podrobnosti |
Tyto aliasy jsou funkčně ekvivalentní a používají se k zachování konzistence napříč různými platformami.
Třída RealTimeTextInfo/Details
Třída RealTimeTextInfo
(nebo RealTimeTextDetails
ve Windows) zapouzdřuje informace o každé zprávě RTT. V následující tabulce jsou uvedeny klíčové vlastnosti:
Vlastnost | Popis |
---|---|
SequenceId |
Jedinečný identifikátor sekvence zpráv. |
Text |
Obsah zprávy RTT. |
Sender |
Informace o odesílateli zprávy |
ResultType /Kind |
Určuje, jestli je zpráva částečná nebo konečná. |
IsLocal |
Určuje, jestli místní uživatel zprávu odeslal. |
ReceivedTime |
Časové razítko, kdy byla zpráva přijata. |
UpdatedTime |
Časové razítko poslední aktualizace zprávy |
Modely
Název | Popis |
---|---|
Funkce Textu v Reálném Čase | Rozhraní API pro RealTimeText |
RealTimeTextInfo | Přijatá datová struktura pro každou událost RealTimeText |
Přijímač textu v reálném čase (RealTimeTextReceivedEventHandler) | Definice zpětného volání pro zpracování události RealTimeTextReceivedEventType |
Získat funkci RealTimeText
let realTimeTextFeature: SDK.RealTimeTextFeature = call.feature(SDK.Features.RealTimeText);
Odebírat posluchače
Přidejte posluchač pro data RealTimeText, která byla přijata
Zpracování vráceného datového objektu RealTimeTextInfo. V ideálním případě byste měli mít toto na sadě obslužné rutiny, jakmile je volání připojeno.
Poznámka: Objekt obsahuje hodnotu resultType prop, která označuje, zda jsou data částečným textem nebo finalizovanou verzí textu. ResultType Partial
označuje živé zprávy, které se můžou změnit, zatímco Final
označuje dokončené zprávy bez dalších čekajících změn.
const realTimeTextReceivedHandler: SDK.RealTimeTextReceivedEventHandler = (data: SDK.RealTimeTextInfo) => {
/** USER CODE HERE - E.G. RENDER TO DOM
* data.sequenceId
* data.sender
* data.text
* data.resultType
* data.receivedTimestamp
* data.updatedTimestamp
* data.isLocal
*/
// Example code:
// Create a dom element, i.e. div, with id "rttArea" before proceeding with the sample code
let mri: string = '';
let displayName: string = '';
switch (data.sender.identifier.kind) {
case 'communicationUser': { mri = data.sender.identifier.communicationUserId; displayName = data.sender.displayName; break; }
case 'microsoftTeamsUser': { mri = data.sender.identifier.microsoftTeamsUserId; displayName = data.sender.displayName; break; }
case 'phoneNumber': { mri = data.sender.identifier.phoneNumber; displayName = data.sender.displayName; break; }
}
const newClassName = `prefix${mri.replace(/:/g, '').replace(/-/g, '').replace(/\+/g, '')}`;
const rttText = `${(data.receivedTimestamp).toUTCString()} ${displayName ?? mri}: `;
let foundRTTContainer = this.elements.rttArea.querySelector(`.${newClassName}[isNotFinal='true']`);
if (!foundRTTContainer) {
let rttContainer = document.createElement('div');
rttContainer.setAttribute('isNotFinal', 'true');
rttContainer.style['borderBottom'] = '1px solid';
rttContainer.style['whiteSpace'] = 'pre-line';
rttContainer.textContent = rttText + data.text;
rttContainer.classList.add(newClassName);
this.elements.rttArea.appendChild(rttContainer);
setTimeout(() => {
this.elements.rttArea.removeChild(rttContainer);
}, 40000);
} else {
if (data.text === '') {
this.elements.rttArea.removeChild(foundRTTContainer);
}
if (data.resultType === 'Final') {
foundRTTContainer.setAttribute('isNotFinal', 'false');
if (data.isLocal) {
let rttTextField = this.elements.rttMessage;
rttTextField.value = '';
}
} else {
foundRTTContainer.textContent = rttText + data.text;
}
}
};
realTimeTextFeature.on('realTimeTextReceived', realTimeTextReceivedHandler);
Odeslat živou obslužnou rutinu RealTimeText
Pokud chcete simulovat živé zasílání zpráv, budete muset nastavit živou obslužnou rutinu pro odesílání realTimeText jako typy uživatelů.
let rttTextField = document.getElementById("rttMessage") as HTMLInputElement;
rttTextField.addEventListener('keyup', (event) => {
await realTimeTextFeature.sendRealTimeText(rttTextField.value);
});
Odeslat finalizovaný text v reálném čase
Jakmile si budete jistí, že zpráva byla dokončena, například uživatel klikne na odeslat zprávu nebo stiskne enter, předejte true
funkci sendRealTimeText.
try {
let rttTextField = document.getElementById("rttMessage") as HTMLInputElement;
await realTimeTextFeature.sendRealTimeText(rttTextField.value, true);
rttTextField.value = '';
} catch (e) {
console.log('ERROR Send RTT failed', e);
}
Odhlásit odběr posluchačů
realTimeTextFeature.off('realTimeTextReceived', realTimeTextReceivedHandler);
Třída RealTimeTextInfo
Třída RealTimeTextInfo
poskytuje podrobné informace o každé textové zprávě v reálném čase:
- sender: Informace o tom, kdo zprávu poslal.
- sequenceId: Jedinečný identifikátor zprávy.
- text: Obsah zprávy.
- resultType: Označuje, zda je zpráva částečná nebo finalizovaná.
- receivedTimestamp: Časové razítko při přijetí zprávy.
- updatedTimestamp: Časové razítko, kdy byla zpráva naposledy aktualizována.
- isLocal: Označuje, zda byla zpráva odeslána místním uživatelem.
Další odkazy
- Začínáme s RTT v knihovně uživatelského rozhraní
Modely
Název | Popis |
---|---|
RealTimeTextInfo |
Představuje položku textové zprávy v reálném čase, včetně informací o odesílateli, obsahu zprávy, ID sekvence a stavu. |
Získat funkci textu v reálném čase
Pokud chcete získat přístup k funkci Text v reálném čase, načtěte ji z objektu Call
:
RealTimeTextCallFeature rttFeature = call.feature(Features.REAL_TIME_TEXT);
Využití funkcí
Odesílání textových zpráv v reálném čase
Vytvořte vazbu textového vstupního pole na metodu send()
pro přenos zpráv jako typy uživatelů:
EditText messageEditText = findViewById(R.id.messageEditText);
messageEditText.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
String text = s.toString();
rttFeature.send(text);
}
// Other overridden methods...
});
Příjem textových zpráv v reálném čase
Přihlaste se k odběru OnInfoReceived
události pro zpracování příchozích zpráv:
rttFeature.addOnInfoReceivedListener((eventArgs) -> {
RealTimeTextInfo info = eventArgs.getInfo();
// Update your message list with the new info
updateMessageList(info);
// Clear the text input if the message is local and finalized
if (info.isLocal() && info.getResultType() == RealTimeTextResultType.FINAL) {
messageEditText.getText().clear();
}
});
Třída RealTimeTextInfo
Třída RealTimeTextInfo
poskytuje podrobné informace o každé textové zprávě v reálném čase:
- Odesílatel: Informace o tom, kdo zprávu poslal.
- SequenceId: Jedinečný identifikátor zprávy.
- Text: Obsah zprávy.
- ResultType: Označuje, jestli je zpráva částečná nebo finalizovaná.
- ReceivedTime: Časové razítko při přijetí zprávy.
- UpdatedTime: Časové razítko, kdy byla zpráva naposledy aktualizována.
- IsLocal: Označuje, zda byla zpráva odeslána místním uživatelem.
Modely
Název | Popis |
---|---|
RealTimeTextInfo |
Představuje položku textové zprávy v reálném čase, včetně informací o odesílateli, obsahu zprávy, ID sekvence a stavu. |
Získat funkci textu v reálném čase
Přístup k funkci Text v reálném čase z objektu Call
:
let rttFeature = call.feature(Features.realTimeText)
Využití funkcí
Odesílání textových zpráv v reálném čase
Vytvořte vazbu textového vstupního pole na metodu send
pro přenos zpráv jako typy uživatelů:
@State var messageText: String = ""
TextField("Type your message", text: $messageText)
.onChange(of: messageText) { newText in
rttFeature?.send(newText)
}
Příjem textových zpráv v reálném čase
Přihlaste se k odběru OnInfoReceived
události pro zpracování příchozích zpráv:
rttFeature?.addOnInfoReceivedListener { eventArgs in
if let info = eventArgs.info {
// Update your message list with the new info
updateMessageList(info)
// Clear the text input if the message is local and finalized
if info.isLocal && info.resultType == .final {
self.messageText = ""
}
}
}
Třída RealTimeTextInfo
Třída RealTimeTextInfo
poskytuje podrobné informace o každé textové zprávě v reálném čase:
- Odesílatel: Informace o tom, kdo zprávu poslal.
- SequenceId: Jedinečný identifikátor zprávy.
- Text: Obsah zprávy.
- ResultType: Označuje, jestli je zpráva částečná nebo finalizovaná.
- ReceivedTime: Časové razítko při přijetí zprávy.
- UpdatedTime: Časové razítko, kdy byla zpráva naposledy aktualizována.
- IsLocal: Označuje, zda byla zpráva odeslána místním uživatelem.
Modely
Název | Popis |
---|---|
RealTimeTextDetails |
Představuje položku textové zprávy v reálném čase, včetně informací o odesílateli, obsahu zprávy, ID sekvence a stavu. |
Získat funkci textu v reálném čase
Načtěte funkci Text v reálném čase z objektu Call
.
RealTimeTextCallFeature rttFeature = call.GetRealTimeTextCallFeature();
Využití funkcí
Odesílání textových zpráv v reálném čase
Připojte textové vstupní pole k Send
metodě pro přenos zpráv, jak uživatel píše.
TextBox messageTextBox = new TextBox();
messageTextBox.TextChanged += (sender, args) => {
string text = messageTextBox.Text;
rttFeature.Send(text);
};
Příjem textových zpráv v reálném čase
Přihlaste se k odběru DetailsReceived
události pro zpracování příchozích zpráv:
rttFeature.DetailsReceived += (sender, e) => {
RealTimeTextDetails details = e.Details;
// Update your message list with the new details
UpdateMessageList(details);
// Clear the text input if the message is local and finalized
if (details.IsLocal && details.Kind == RealTimeTextResultKind.Final) {
messageTextBox.Text = string.Empty;
}
};
Třída RealTimeTextDetails
Třída RealTimeTextDetails
poskytuje komplexní informace o každé textové zprávě v reálném čase:
- Odesílatel: Informace o tom, kdo zprávu poslal.
- SequenceId: Jedinečný identifikátor zprávy.
- Text: Obsah zprávy.
- Druh: Označuje, jestli je zpráva částečná nebo finalizovaná.
- ReceivedTime: Časové razítko při přijetí zprávy.
- UpdatedTime: Časové razítko, kdy byla zpráva naposledy aktualizována.
- IsLocal: Označuje, zda byla zpráva odeslána místním uživatelem.
Další kroky
- Další informace o funkci RTT najdete v koncepční dokumentaci k textu v reálném čase.
- Další informace najdete v naší dokumentaci k volání služeb Azure Communication Services.
- Přečtěte si další informace o skrytých titulcích.