Megosztás a következőn keresztül:


Valós idejű szöveg engedélyezése (RTT)

Megjegyzés

Az RTT akadálymentességi követelmény a hang- és videoplatformok számára az EU-ban 2025. június 30-tól. További információ: 2019/882 irányelv.

A valós idejű szöveg (RTT) integrálása a hívó alkalmazásokba az akadálymentesség javítása és annak biztosítása érdekében, hogy minden résztvevő hatékonyan kommunikálhasson az értekezletek során.

Az RTT lehetővé teszi, hogy azok a felhasználók, akik nehezen beszélnek, aktívan részt vehessenek az üzeneteik beírásával, amelyeket aztán közel valós időben közvetítenek más értekezlet résztvevőinek. Ez a funkció zökkenőmentesen működik a meglévő feliratok mellett, és biztosítja, hogy a gépelt üzenetek azonnal kézbesítve legyenek a beszélgetési folyamat megzavarása nélkül.

Valós idejű szöveg funkció áttekintése

A valós idejű szöveg (RTT) megkönnyíti a kommunikációt azoknak a felhasználóknak, akik esetleg nehezen beszélnek a hívások során. Azáltal, hogy lehetővé teszi a felhasználók számára az üzenetek beírását, az RTT biztosítja, hogy az értekezlet minden résztvevője aktív és tájékozott maradjon. Az üzenetek az adatcsatornákon (24-os azonosító) keresztül kerülnek továbbításra, és mindig aktívak, és automatikusan megjelennek az első üzenet elküldésekor.

A támogatott platformokon az RTT-adatok megjelenhetnek a Speech to Textből származó feliratok mellett, így átfogó képet kaphatnak a hívás során folytatott összes kommunikációról.

Megjegyzés

A PSTN-hez vagy a Teams Interophoz tartozó RTT jelenleg nem elérhető.

Elnevezési egyezmények

A különböző platformok eltérő terminológiát használhatnak az RTT-hez kapcsolódó tulajdonságokhoz. Az alábbi táblázat összefoglalja a különbségeket:

Mobil (Android/iOS) Windows (C#)
Típus Típus
Információ Részletek

Ezek az aliasok funkcionálisan egyenértékűek, és a különböző platformok konzisztenciájának fenntartására szolgálnak.

RealTimeTextInfo/Details osztály

A RealTimeTextInfo (vagy RealTimeTextDetails Windows rendszeren) osztály az egyes RTT-üzenetekkel kapcsolatos információkat foglalja magában. Az alábbi táblázat a kulcstulajdonságokat mutatja be:

Tulajdonság Leírás
SequenceId Az üzenetsorozat egyedi azonosítója.
Text Az RTT-üzenet tartalma.
Sender Információ az üzenet feladójáról.
ResultType/
Kind
Jelzi, hogy az üzenet részleges vagy végleges-e.
IsLocal Meghatározza, hogy egy helyi felhasználó küldte-e az üzenetet.
ReceivedTime Az üzenet fogadásának időbélyege.
UpdatedTime Az üzenet legutóbbi frissítésének időbélyege.

Modellek

Név Leírás
ValósIdejűSzövegFunkció RealTimeText API
ValósIdejűSzövegInformáció Minden RealTimeText-eseményhez kapott adatstruktúra
ValósIdejűSzövegFogadásiEseményKezelő Visszahívási definíció a RealTimeTextReceivedEventType esemény kezeléséhez

RealTimeText-funkció lekérése

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

Feliratkozás a hallgatókra

Fogadott RealTimeText-adatok figyelőjének hozzáadása

Kezelje a visszaadott RealTimeTextInfo adatobjektumot. Ideális esetben a hívás csatlakozásakor már meglenne a handler beállítás.

Megjegyzés: Az objektum egy resultType prop tulajdonságot tartalmaz, amely jelzi, hogy az adatok részleges szöveg-e vagy a szöveg véglegesített verziója. A ResultType Partial azokat az élő üzeneteket jelöli, amelyek változhatnak, míg Final a befejezett üzeneteket a függőben lévő további módosítások nélkül jelzi.

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 élő kezelő küldése

Az élő üzenetküldés szimulálásához be kell állítania egy élő kezelőt a RealTimeText felhasználótípusként való küldéséhez.

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

Véglegesített RealTimeText küldése

Ha biztos abban, hogy az üzenet véglegesítve lett, például a felhasználó a küldési üzenetre kattint, vagy lenyomja az Enter billentyűt, adja át true a sendRealTimeText függvénynek.

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

Leiratkozás a hallgatókról

realTimeTextFeature.off('realTimeTextReceived', realTimeTextReceivedHandler); 

RealTimeTextInfo osztály

Az RealTimeTextInfo osztály részletes információkat nyújt minden valós idejű szöveges üzenetről:

  • feladó: Információ arról, hogy ki küldte az üzenetet.
  • sequenceId: Az üzenet egyedi azonosítója.
  • szöveg: Az üzenet tartalma.
  • resultType: Azt jelzi, hogy az üzenet részleges vagy véglegesítve van-e.
  • receivedTimestamp: Az üzenet fogadásának időbélyege.
  • updatedTimestamp: Az üzenet legutóbbi frissítésének időbélyege.
  • isLocal: Azt jelzi, hogy az üzenetet a helyi felhasználó küldte-e.

Modellek

Név Leírás
RealTimeTextInfo Valós idejű szöveges üzenetbejegyzést jelöl, beleértve a feladó adatait, az üzenet tartalmát, a sorozatazonosítót és az állapotot.

Valós idejű szöveges funkció lekérése

A Valós idejű szöveg funkció eléréséhez kérje le az Call objektumból:

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

Funkcióhasználat

Valós idejű szöveges üzenetek küldése

Az üzenetek továbbításához a metódushoz köt egy szövegbeviteli mezőt, ahogy a felhasználó gépel.

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

Valós idejű szöveges üzenetek fogadása

Iratkozzon fel az eseményre a OnInfoReceived bejövő üzenetek kezeléséhez:

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 osztály

Az RealTimeTextInfo osztály részletes információkat nyújt minden valós idejű szöveges üzenetről:

  • Feladó: Információ arról, hogy ki küldte az üzenetet.
  • SequenceId: Az üzenet egyedi azonosítója.
  • Szöveg: Az üzenet tartalma.
  • ResultType: Azt jelzi, hogy az üzenet részleges vagy véglegesítve van-e.
  • ReceivedTime: Az üzenet fogadásának időbélyege.
  • UpdatedTime: Az üzenet legutóbbi frissítésének időbélyege.
  • IsLocal: Azt jelzi, hogy az üzenetet a helyi felhasználó küldte-e.

Modellek

Név Leírás
RealTimeTextInfo Valós idejű szöveges üzenetbejegyzést jelöl, beleértve a feladó adatait, az üzenet tartalmát, a sorozatazonosítót és az állapotot.

Valós idejű szöveges funkció lekérése

A Valós idejű szöveg funkció elérése az Call objektumból:

let rttFeature = call.feature(Features.realTimeText)

Funkcióhasználat

Valós idejű szöveges üzenetek küldése

Az üzenetek továbbításához a metódushoz köt egy szövegbeviteli mezőt, ahogy a felhasználó gépel.

@State var messageText: String = ""

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

Valós idejű szöveges üzenetek fogadása

Iratkozzon fel az eseményre a OnInfoReceived bejövő üzenetek kezeléséhez:

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 osztály

Az RealTimeTextInfo osztály részletes információkat nyújt minden valós idejű szöveges üzenetről:

  • Feladó: Információ arról, hogy ki küldte az üzenetet.
  • SequenceId: Az üzenet egyedi azonosítója.
  • Szöveg: Az üzenet tartalma.
  • ResultType: Azt jelzi, hogy az üzenet részleges vagy véglegesítve van-e.
  • ReceivedTime: Az üzenet fogadásának időbélyege.
  • UpdatedTime: Az üzenet legutóbbi frissítésének időbélyege.
  • IsLocal: Azt jelzi, hogy az üzenetet a helyi felhasználó küldte-e.

Modellek

Név Leírás
RealTimeTextDetails Valós idejű szöveges üzenetbejegyzést jelöl, beleértve a feladó adatait, az üzenet tartalmát, a sorozatazonosítót és az állapotot.

Valós idejű szöveges funkció lekérése

A Valós idejű szöveg funkció lekérése az Call objektumból:

RealTimeTextCallFeature rttFeature = call.GetRealTimeTextCallFeature();

Funkcióhasználat

Valós idejű szöveges üzenetek küldése

Szövegbeviteli mező csatlakoztatása a Send metódushoz az üzenetek felhasználótípusként való továbbításához:

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

Valós idejű szöveges üzenetek fogadása

Iratkozzon fel az eseményre a DetailsReceived bejövő üzenetek kezeléséhez:

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 Osztály

Az RealTimeTextDetails osztály átfogó információkat nyújt minden valós idejű szöveges üzenetről:

  • Feladó: Információ arról, hogy ki küldte az üzenetet.
  • SequenceId: Az üzenet egyedi azonosítója.
  • Szöveg: Az üzenet tartalma.
  • Típus: Azt jelzi, hogy az üzenet részleges vagy véglegesítve van-e.
  • ReceivedTime: Az üzenet fogadásának időbélyege.
  • UpdatedTime: Az üzenet legutóbbi frissítésének időbélyege.
  • IsLocal: Azt jelzi, hogy az üzenetet a helyi felhasználó küldte-e.

Következő lépések