Delen via


Realtime tekst (RTT) inschakelen

Opmerking

RTT is een nalevingsvereiste voor toegankelijkheid voor spraak- en videoplatformen in de EU vanaf 30 juni 2025. Zie Richtlijn 2019/882 voor meer informatie.

Integreer REAL Time Text (RTT) in uw beltoepassingen om de toegankelijkheid te verbeteren en ervoor te zorgen dat alle deelnemers effectief kunnen communiceren tijdens vergaderingen.

RTT stelt gebruikers die moeite hebben met spreken in staat om actief deel te nemen door hun berichten te typen, die vervolgens in bijna realtime worden uitgezonden naar andere deelnemers aan de vergadering. Deze functie werkt naadloos samen met bestaande ondertitels en zorgt ervoor dat getypte berichten snel worden geleverd zonder de conversatiestroom te verstoren.

Overzicht van de Real-Time Tekstfunctie

Real Time Text (RTT) vereenvoudigt communicatie voor gebruikers die mogelijk moeite hebben om te spreken tijdens gesprekken. Door gebruikers in staat te stellen hun berichten te typen, zorgt RTT ervoor dat iedereen in de vergadering betrokken en geïnformeerd kan blijven. Berichten worden verzonden via datakanalen (ID 24) en zijn altijd actief en verschijnen automatisch wanneer het eerste bericht wordt verzonden.

Op ondersteunde platforms kunnen RTT-gegevens worden weergegeven naast bijschriften die zijn afgeleid van Spraak-naar-tekst, en bieden ze een uitgebreide weergave van alle communicatie tijdens een gesprek.

Opmerking

RTT voor PSTN of Teams-interop is momenteel niet beschikbaar

Naamgevingsconventies

Verschillende platforms kunnen verschillende terminologie gebruiken voor RTT-gerelateerde eigenschappen. De volgende tabel bevat een overzicht van de verschillen:

Mobiel (Android/iOS) Ramen (C#)
Typ Soort
Informatie Bijzonderheden

Deze aliassen zijn functioneel gelijkwaardig en worden gebruikt om consistentie over verschillende platforms te behouden.

Klasse RealTimeTextInfo/Details

De RealTimeTextInfo-klasse (of RealTimeTextDetails op Windows) omvat informatie over elk RTT-bericht. In de volgende tabel ziet u de belangrijkste eigenschappen:

Eigendom Beschrijving
SequenceId Unieke identificatie voor de berichtenreeks.
Text De inhoud van het RTT-bericht.
Sender Informatie over de afzender van het bericht.
ResultType/
Kind
Geeft aan of het bericht gedeeltelijk of definitief is.
IsLocal Bepaalt of een lokale gebruiker het bericht heeft verzonden.
ReceivedTime Tijdsaanduiding wanneer het bericht werd ontvangen.
UpdatedTime Tijdstempel wanneer het bericht voor het laatst is bijgewerkt.

Modellen

Naam Beschrijving
RealTimeText-functie API voor RealTimeText
RealTimeTextInfo Gegevensstructuur ontvangen voor elke RealTimeText-gebeurtenis
RealTimeTextReceivedEventHandler Callback-definitie voor het verwerken van de gebeurtenis RealTimeTextReceivedEventType

RealTimeText-functie ophalen

let realTimeTextFeature: SDK.RealTimeTextFeature = call.feature(SDK.Features.RealTimeText);

Abonneren op listeners

Voeg een listener toe voor RealTimeText-gegevens die ontvangen zijn

Het geretourneerde RealTimeTextInfo-gegevensobject verwerken. Idealiter zou u dit bij handler ingesteld hebben zodra de oproep is verbonden.

Opmerking: het object bevat een resultType prop die aangeeft of de gegevens een gedeeltelijke tekst of een definitieve versie van de tekst zijn. ResultType Partial geeft aan dat het om live-berichten gaat die nog kunnen veranderen, terwijl Final aangeeft dat het voltooide berichten betreft waar geen verdere wijzigingen meer op volgen.

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

RealTimeText live handler verzenden

Als u liveberichten wilt simuleren, moet u een live-handler configureren om RealTimeText te verzenden als de gebruiker typt.

let rttTextField = document.getElementById("rttMessage") as HTMLInputElement;
rttTextField.addEventListener('keyup', (event) => {
    await realTimeTextFeature.sendRealTimeText(rttTextField.value);
});

Voltooide RealTimeText verzenden

Zodra u zeker weet dat het bericht is voltooid, bijvoorbeeld dat de gebruiker op het verzenden van een bericht klikt of op Enter drukt, geeft true u door aan de functie 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);
}

Afmelden voor listeners

realTimeTextFeature.off('realTimeTextReceived', realTimeTextReceivedHandler); 

RealTimeTextInfo Klasse

De RealTimeTextInfo klasse biedt gedetailleerde informatie over elk realtime tekstbericht.

  • afzender: informatie over wie het bericht heeft verzonden.
  • sequenceId: unieke id voor het bericht.
  • tekst: De inhoud van het bericht.
  • resultType: Geeft aan of het bericht gedeeltelijk of voltooid is.
  • receivedTimestamp: Timestamp wanneer het bericht is ontvangen.
  • updatedTimestamp: Timestamp wanneer het bericht voor het laatst is bijgewerkt.
  • isLocal: Geeft aan of het bericht is verzonden door de lokale gebruiker.

Modellen

Naam Beschrijving
RealTimeTextInfo Stelt een realtime tekstberichtinvoer voor, inclusief informatie over de afzender, de inhoud van het bericht, de volgorde-ID en de status.

Verkrijg functie voor realtime tekst

Om toegang te krijgen tot de Real Time Text-functie, haal deze op uit het Call-object.

RealTimeTextCallFeature rttFeature = call.feature(Features.REAL_TIME_TEXT);

Functiegebruik

Het verzenden van realtime tekstberichten

Koppel een tekstinvoerveld aan de send() methode om berichten te verzenden terwijl de gebruiker typt.

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

Ontvangst van realtime tekstberichten

Abonneer je op het OnInfoReceived-evenement om inkomende berichten te verwerken.

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

RealTimeTextInfo Klasse

De RealTimeTextInfo klasse biedt gedetailleerde informatie over elk realtime tekstbericht.

  • Sender: Informatie over wie het bericht heeft verzonden.
  • SequenceId: Unieke id voor het bericht.
  • Tekst: De inhoud van het bericht.
  • ResultType: Geeft aan of het bericht gedeeltelijk of voltooid is.
  • ReceivedTime: Tijdstempel waarop het bericht is ontvangen.
  • UpdatedTime: Tijdstempel wanneer het bericht voor het laatst is bijgewerkt.
  • IsLocal: Geeft aan of het bericht door de lokale gebruiker is verzonden.

Modellen

Naam Beschrijving
RealTimeTextInfo Stelt een realtime tekstberichtinvoer voor, inclusief informatie over de afzender, de inhoud van het bericht, de volgorde-ID en de status.

Verkrijg functie voor realtime tekst

Open de functie Real-time tekst vanuit uw Call object:

let rttFeature = call.feature(Features.realTimeText)

Functiegebruik

Het verzenden van realtime tekstberichten

Koppel een tekstinvoerveld aan de send methode om berichten te verzenden terwijl de gebruiker typt.

@State var messageText: String = ""

TextField("Type your message", text: $messageText)
    .onChange(of: messageText) { newText in
        rttFeature?.send(newText)
    }

Ontvangst van realtime tekstberichten

Abonneer je op het OnInfoReceived-evenement om inkomende berichten te verwerken.

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 = ""
        }
    }
}

RealTimeTextInfo Klasse

De RealTimeTextInfo klasse biedt gedetailleerde informatie over elk realtime tekstbericht.

  • Sender: Informatie over wie het bericht heeft verzonden.
  • SequenceId: Unieke id voor het bericht.
  • Tekst: De inhoud van het bericht.
  • ResultType: Geeft aan of het bericht gedeeltelijk of voltooid is.
  • ReceivedTime: Tijdstempel waarop het bericht is ontvangen.
  • UpdatedTime: Tijdstempel wanneer het bericht voor het laatst is bijgewerkt.
  • IsLocal: Geeft aan of het bericht door de lokale gebruiker is verzonden.

Modellen

Naam Beschrijving
RealTimeTextDetails Stelt een realtime tekstberichtinvoer voor, inclusief informatie over de afzender, de inhoud van het bericht, de volgorde-ID en de status.

Verkrijg functie voor realtime tekst

Haal de Real-time tekstfunctie op van het Call object:

RealTimeTextCallFeature rttFeature = call.GetRealTimeTextCallFeature();

Functiegebruik

Het verzenden van realtime tekstberichten

Verbind een tekstinvoerveld met de Send-methode om berichten te verzenden terwijl de gebruiker typt.

TextBox messageTextBox = new TextBox();
messageTextBox.TextChanged += (sender, args) => {
    string text = messageTextBox.Text;
    rttFeature.Send(text);
};

Ontvangst van realtime tekstberichten

Abonneer je op het DetailsReceived-evenement om inkomende berichten te verwerken.

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

RealTimeTextDetails Klasse

De RealTimeTextDetails-klasse biedt volledige informatie over elk real-time tekstbericht.

  • Sender: Informatie over wie het bericht heeft verzonden.
  • SequenceId: Unieke id voor het bericht.
  • Tekst: De inhoud van het bericht.
  • Type: Geeft aan of het bericht gedeeltelijk of definitief is.
  • ReceivedTime: Tijdstempel waarop het bericht is ontvangen.
  • UpdatedTime: Tijdstempel wanneer het bericht voor het laatst is bijgewerkt.
  • IsLocal: Geeft aan of het bericht door de lokale gebruiker is verzonden.

Volgende stappen