INTEGRITY Dokumentace

Chat

Tento návod vysvětluje, jak pomocí Cloudflare RealtimeKit odesílat a přijímat chatové zprávy ve schůzce.

Úvod

V chatu lze odesílat tři typy zpráv:

Objekt chatu schůzky je uložen v meeting.chat, který obsahuje metody pro odesílání a příjem zpráv.

console.log("Chat object:", meeting.chat);

meeting.chat.messages pole obsahuje všechny zprávy, které byly v chatu odeslány. Jedná se o pole objektů, kde každý objekt je typu Message.

console.log("All chat messages:", meeting.chat.messages);

V chatu lze odesílat tři typy zpráv:

Objekt chatu schůzky je uložen v meeting.chat, který obsahuje metody pro odesílání a příjem zpráv.

meeting.chat;

meeting.chat.messages pole obsahuje všechny zprávy, které byly v chatu odeslány. Jedná se o pole objektů, kde každý objekt je typu Message.

meeting.chat.messages;

V chatu lze odesílat tři typy zpráv:

Objekt chatu schůzky je uložen v meeting.chat, který obsahuje metody pro odesílání a příjem zpráv.

meeting.chat

meeting.chat.messages pole obsahuje všechny zprávy, které byly v chatu odeslány. Jedná se o pole objektů, kde každý objekt je typu com.cloudflare.realtimekit.chat.ChatMessage.

meeting.chat.messages

V chatu lze odesílat tři typy zpráv:

Objekt chatu schůzky je uložen v meeting.chat, který obsahuje metody pro odesílání a příjem zpráv.

meeting.chat

meeting.chat.messages pole obsahuje všechny zprávy, které byly v chatu odeslány. Jedná se o pole objektů, kde každý objekt je typu RealtimeKit.ChatMessage.

meeting.chat.messages

V chatu lze odesílat tři typy zpráv:

Objekt chatu schůzky je uložen v meeting.chat, který obsahuje metody pro odesílání a příjem zpráv.

meeting.chat;

meeting.chat.messages pole obsahuje všechny zprávy, které byly v chatu odeslány. Jedná se o pole objektů, kde každý objekt je typu Message.

meeting.chat.messages;

Typ zprávy

Message typ je definován následovně:

interface BaseMessage<T extends MessageType> {
	type: T;
	userId: string;
	displayName: string;
	time: Date;
	id: string;
	isEdited?: boolean;
	read?: boolean;
	pluginId?: string;
	pinned?: boolean;
	targetUserIds?: string[];
}

interface TextMessage extends BaseMessage<MessageType.text> {
	message: string;
}

interface ImageMessage extends BaseMessage<MessageType.image> {
	link: string;
}

interface FileMessage extends BaseMessage<MessageType.file> {
	name: string;
	size: number;
	link: string;
}

type Message = TextMessage | ImageMessage | FileMessage;

Message typ je definován následovně:

interface BaseMessage<T extends MessageType> {
	type: T;
	userId: string;
	displayName: string;
	time: Date;
	id: string;
	isEdited?: boolean;
	read?: boolean;
	pluginId?: string;
	pinned?: boolean;
	targetUserIds?: string[];
}

interface TextMessage extends BaseMessage<MessageType.text> {
	message: string;
}

interface ImageMessage extends BaseMessage<MessageType.image> {
	link: string;
}

interface FileMessage extends BaseMessage<MessageType.file> {
	name: string;
	size: number;
	link: string;
}

type Message = TextMessage | ImageMessage | FileMessage;

ChatMessage třída je definována takto:

enum class ChatMessageType {
  TEXT,
  IMAGE,
  FILE
}

open class ChatMessage(
  val userId: String,
  val displayName: String,
  val read: Boolean,
  val pluginId: String?,
  val type: ChatMessageType,
  val time: String,
  val createdAtMillis: Long,
  val targetUserIds: List<String>?,
)

class TextMessage(val message: String): ChatMessage(...)

class ImageMessage(val link: String): ChatMessage(...)

class FileMessage(
  val name: String,
  val link: String,
  val size: Long,
): ChatMessage(...)

ChatMessage třída je definována takto:

public enum ChatMessageType {
    case text
    case image
    case file
}

open class ChatMessage {
    public let userId: String
    public let displayName: String
    public let read: Bool
    public let pluginId: String?
    public let type: ChatMessageType
    public let time: String
    public let createdAtMillis: Int64
    public let targetUserIds: [String]?
}

public final class TextMessage: ChatMessage {
    public let message: String
}

public final class ImageMessage: ChatMessage {
    public let link: String
}

public final class FileMessage: ChatMessage {
    public let name: String
    public let link: String
    public let size: Int64
}

Message typ je definován následovně:

interface BaseMessage<T extends MessageType> {
	type: T;
	userId: string;
	displayName: string;
	time: Date;
	id: string;
	isEdited?: boolean;
	read?: boolean;
	pluginId?: string;
	pinned?: boolean;
	targetUserIds?: string[];
}

interface TextMessage extends BaseMessage<MessageType.text> {
	message: string;
}

interface ImageMessage extends BaseMessage<MessageType.image> {
	link: string;
}

interface FileMessage extends BaseMessage<MessageType.file> {
	name: string;
	size: number;
	link: string;
}

type Message = TextMessage | ImageMessage | FileMessage;

Odeslání chatové zprávy

Odeslání textové zprávy

Existuje metoda v meeting.chat a odeslat tak zprávu každého typu.

Chcete-li odeslat textovou zprávu, použijte meeting.chat.sendTextMessage() metodu. Ta přijímá textovou zprávu (string) a odešle ji do místnosti.

const message = "Is this the real life?";
await meeting.chat.sendTextMessage(message);

Existuje metoda v meeting.chat a odeslat tak zprávu každého typu.

Chcete-li odeslat textovou zprávu, použijte meeting.chat.sendTextMessage() metodu. Ta přijímá textovou zprávu (string) a odešle ji do místnosti.

const message = "Is this the real life?";
await meeting.chat.sendTextMessage(message);

Existuje metoda v meeting.chat a odeslat tak zprávu každého typu.

Chcete-li odeslat textovou zprávu, použijte meeting.chat.sendTextMessage() metodu. Ta přijímá textovou zprávu (string) a odešle ji do místnosti.

val message = "Is this the real life?"
meeting.chat.sendTextMessage(message)

Existuje metoda v meeting.chat a odeslat tak zprávu každého typu.

Chcete-li odeslat textovou zprávu, použijte meeting.chat.sendTextMessage() metodu. Ta přijímá textovou zprávu (string) a odešle ji do místnosti.

var message = "Is this the real life?"
meeting.chat.sendTextMessage(message)

Existuje metoda v meeting.chat a odeslat tak zprávu každého typu.

Chcete-li odeslat textovou zprávu, použijte meeting.chat.sendTextMessage() metodu. Ta přijímá textovou zprávu (string) a odešle ji do místnosti.

const message = "Is this the real life?";
await meeting.chat.sendTextMessage(message);

Odeslání obrázku

Obrázek můžete odeslat pomocí meeting.chat.sendImageMessage(). Přijímá obrázek typu File, a odešle je účastníkům schůzky.

<label for="img">Select image:</label>
<input type="file" id="img" name="img" accept="image/*" />
<button onclick="onSendImage()">Send Image</button>
async function onSendImage() {
	const image = document.getElementById("img");
	await meeting.chat.sendImageMessage(image.files[0]);
}

Obrázek můžete odeslat pomocí meeting.chat.sendImageMessage(). Přijímá obrázek typu File, a odešle je účastníkům schůzky.

import { useRef } from "react";

function ChatComponent() {
	const imageInputRef = useRef(null);

	const onSendImage = async () => {
		const image = imageInputRef.current;
		if (image && image.files[0]) {
			await meeting.chat.sendImageMessage(image.files[0]);
		}
	};

	return (
		<>
			<label htmlFor="img">Select image:</label>
			<input
				type="file"
				id="img"
				name="img"
				accept="image/*"
				ref={imageInputRef}
			/>
			<button onClick={onSendImage}>Send Image</button>
		</>
	);
}

Obrázek můžete odeslat pomocí meeting.chat.sendImageMessage() a odešle je účastníkům schůzky.

meeting.chat.sendImageMessage(imageUri) { err ->
  // Handle error if any
}

Obrázek můžete odeslat pomocí meeting.chat.sendImageMessage() a odešle je účastníkům schůzky.

meeting.chat.sendImageMessage(imageURL: url) { err in
  // Handle error if any
}

Obrázek můžete odeslat pomocí meeting.chat.sendImageMessage(). Přijímá obrázek typu File a odešle jej účastníkům schůzky.

import DocumentPicker from "@react-native-documents/picker";

async function onSendImage() {
	// Get the image uri and create an object with the following fields
	const res = await DocumentPicker.pickSingle({
		type: [DocumentPicker.types.images],
	});
	const image = {
		uri: res.uri,
		name: res.name,
		size: res.size,
		type: res.type,
	};
	await meeting.chat.sendImageMessage(image);
}

Odeslání souboru

Odesílání souboru je podobné odesílání obrázku. Jediný rozdíl je v tom, že při odeslání obrázku se v chatu schůzky zobrazí náhled, což u souborů neplatí. I tak lze obrázek odeslat i jako soubor pomocí meeting.chat.sendFileMessage().

<label for="file">Select file:</label>
<input type="file" id="file" name="file" />
<button onclick="onSendFile()">Send File</button>
async function onSendFile() {
	const file = document.getElementById("file");
	await meeting.chat.sendFileMessage(file.files[0]);
}

Odesílání souboru je podobné odesílání obrázku. Jediný rozdíl je v tom, že při odeslání obrázku se v chatu schůzky zobrazí náhled, což u souborů neplatí. I tak lze obrázek odeslat i jako soubor pomocí meeting.chat.sendFileMessage().

import { useRef } from "react";

function ChatComponent() {
	const fileInputRef = useRef(null);

	const onSendFile = async () => {
		const file = fileInputRef.current;
		if (file && file.files[0]) {
			await meeting.chat.sendFileMessage(file.files[0]);
		}
	};

	return (
		<>
			<label htmlFor="file">Select file:</label>
			<input type="file" id="file" name="file" ref={fileInputRef} />
			<button onClick={onSendFile}>Send File</button>
		</>
	);
}

Odesílání souboru je podobné odesílání obrázku. Jediný rozdíl je v tom, že při odeslání obrázku se v chatu schůzky zobrazí náhled, což u souborů neplatí. I tak lze obrázek odeslat i jako soubor pomocí meeting.chat.sendFileMessage().

meeting.chat.sendFileMessage(fileUri) { err ->
  // Handle error if any
}

Odesílání souboru je podobné odesílání obrázku. Jediný rozdíl je v tom, že při odeslání obrázku se v chatu schůzky zobrazí náhled, což u souborů neplatí. I tak lze obrázek odeslat i jako soubor pomocí meeting.chat.sendFileMessage().

meeting.chat.sendFileMessage(fileURL: url) { err in
  // Handle error if any
}

Odesílání souboru je podobné odesílání obrázku. Jediný rozdíl je v tom, že při odeslání obrázku se v chatu schůzky zobrazí náhled, což u souborů neplatí. I tak lze obrázek odeslat i jako soubor pomocí meeting.chat.sendFileMessage().

import DocumentPicker from "@react-native-documents/picker";

async function onSendFile() {
	// Get the file uri and create an object with the following fields
	const res = await DocumentPicker.pickSingle({
		type: [DocumentPicker.types.allFiles],
	});
	const file = {
		uri: res.uri,
		name: res.name,
		size: res.size,
		type: res.type,
	};
	await meeting.chat.sendFileMessage(file);
}

Odeslání libovolného typu zprávy

Existuje také běžná metoda nazvaná meeting.chat.sendMessage() kterou lze použít k odeslání kteréhokoli ze tří typů zpráv zobrazených výše. V podstatě volá jednu z výše uvedených metod v závislosti na typu payloadu, který metodě odešlete. sendMessage() metoda přijímá parametr message následujícího typu:

async function sendMessage(
	message:
		| { type: "text"; message: string }
		| { type: "image"; image: File }
		| { type: "file"; file: File },
) {
	// ...
}

Zde je návod, jak použít sendMessage() metodu pro odeslání textové zprávy:

const message = "Is this just fantasy?";
await meeting.chat.sendMessage({ type: "text", message });

Existuje také běžná metoda nazvaná meeting.chat.sendMessage() kterou lze použít k odeslání kteréhokoli ze tří typů zpráv zobrazených výše. V podstatě volá jednu z výše uvedených metod v závislosti na typu payloadu, který metodě odešlete. sendMessage() metoda přijímá parametr message následujícího typu:

async function sendMessage(
	message:
		| { type: "text"; message: string }
		| { type: "image"; image: File }
		| { type: "file"; file: File },
) {
	// ...
}

Zde je návod, jak použít sendMessage() metodu pro odeslání textové zprávy:

const message = "Is this just fantasy?";
await meeting.chat.sendMessage({ type: "text", message });

Existuje také běžná metoda nazvaná meeting.chat.sendMessage() kterou lze použít k odeslání kteréhokoli ze tří typů zpráv zobrazených výše. V podstatě volá jednu z výše uvedených metod v závislosti na typu payloadu, který metodě odešlete. sendMessage() metoda přijímá parametr message následujícího typu:

async function sendMessage(
	message:
		| { type: "text"; message: string }
		| { type: "image"; image: File }
		| { type: "file"; file: File },
) {
	// ...
}

Zde je návod, jak použít sendMessage() metodu pro odeslání textové zprávy:

const message = "Is this just fantasy?";
await meeting.chat.sendMessage({ type: "text", message });

Příjem chatových zpráv

meeting.chat emituje události při přijetí nových zpráv v chatu. Můžete naslouchat chatUpdate událost pro zaznamenání přijetí nové zprávy v chatu.

meeting.chat.on("chatUpdate", ({ message, messages }) => {
	console.log(`Received message ${message}`);
	console.log(`All messages in chat: ${messages.join(", ")}`);
});

Zde message je typu Message, jak je definováno v úvodu. messages je seznam všech zpráv chatu ve schůzce, což je totéž jako meeting.chat.messages.

Když je přijata chatová zpráva, meeting.chat.messages seznam se také aktualizuje.

console.log(JSON.stringify(meeting.chat.messages));

meeting.chat.on("chatUpdate", () => {
	console.log(JSON.stringify(meeting.chat.messages));
});

meeting.chat emituje události při přijetí nových zpráv v chatu. Můžete naslouchat chatUpdate událost pro zaznamenání přijetí nové zprávy v chatu.

import { useRealtimeKitSelector } from "@cloudflare/realtimekit-react";

// useRealtimeKitSelector hooks only works when `RealtimeKitProvider` is used.
const messages = useRealtimeKitSelector((m) => m.chat.messages);

Alternativně:

meeting.chat.on("chatUpdate", ({ message, messages }) => {
	console.log(`Received message ${message}`);
	console.log(`All messages in chat: ${messages.join(", ")}`);
});

Zde message je typu Message, jak je definováno v úvodu. messages je seznam všech zpráv chatu ve schůzce, což je totéž jako meeting.chat.messages.

Když je přijata chatová zpráva, meeting.chat.messages seznam se také aktualizuje.

console.log(JSON.stringify(meeting.chat.messages));

meeting.chat.on("chatUpdate", () => {
	console.log(JSON.stringify(meeting.chat.messages));
});

Abyste mohli přijímat chatové zprávy, musíte implementovat metodu onChatUpdates() metodu z callbacku RtkChatEventListener. K odběru těchto událostí se můžete přihlásit voláním meeting.addChatEventListener(rtkChatEventListener).

meeting.addChatEventListener(object : RtkChatEventListener {
  override fun onChatUpdates(messages: List<ChatMessage>) {
    // to load chat messages
  }

  override fun onNewChatMessage(message: ChatMessage) {
    // when a new chat message is shared in the meeting
  }

  override fun onMessageRateLimitReset() {
    // when the rate limit for sending messages of self is reset
  }
})

onChatUpdates() metoda se zavolá vždy, když dojde ke změně chatových zpráv. messages parametr je seznam ChatMessage odeslané v chatu.

onNewChatMessage() metoda se zavolá vždy, když je ve schůzce sdílena nová chatová zpráva. message parametr je ChatMessage odeslaný v chatu.

onMessageRateLimitReset() metoda se zavolá, jakmile se obnoví limit rychlosti pro odesílání zpráv od self a budete moci znovu odesílat zprávy. Výchozí limit rychlosti je 180 zpráv za 60 sekund.

Abyste mohli přijímat chatové zprávy, musíte implementovat metodu onChatUpdates() metodu z callbacku RtkChatEventListener. K odběru těchto událostí se můžete přihlásit voláním meeting.addChatEventListener(rtkChatEventListener).

extension MainChatListener: RtkChatEventListener {
  func onChatUpdates(messages: [ChatMessage]) {
    // to load chat messages
  }

  func onNewChatMessage(message: ChatMessage) {
    // when a new chat message is shared in the meeting
  }

  func onMessageRateLimitReset() {
    // when the rate limit for sending messages of self is reset
  }
}

onChatUpdates() metoda se zavolá vždy, když dojde ke změně chatových zpráv. messages parametr je seznam ChatMessage odeslané v chatu.

onNewChatMessage() metoda se zavolá vždy, když je ve schůzce sdílena nová chatová zpráva. message parametr je ChatMessage odeslaný v chatu.

onMessageRateLimitReset() metoda se zavolá, jakmile se obnoví limit rychlosti pro odesílání zpráv od self a budete moci znovu odesílat zprávy. Výchozí limit rychlosti je 180 zpráv za 60 sekund.

meeting.chat emituje události při přijetí nových zpráv v chatu. Můžete naslouchat chatUpdate událost pro zaznamenání přijetí nové zprávy v chatu.

meeting.chat.on("chatUpdate", ({ message, messages }) => {
	console.log(`Received message ${message}`);
	console.log(`All messages in chat: ${messages.join(", ")}`);
});

Zde message je typu Message, jak je definováno v úvodu. messages je seznam všech zpráv chatu ve schůzce, což je totéž jako meeting.chat.messages.

Když je přijata chatová zpráva, meeting.chat.messages seznam se také aktualizuje.

console.log(JSON.stringify(meeting.chat.messages));

meeting.chat.on("chatUpdate", () => {
	console.log(JSON.stringify(meeting.chat.messages));
});

Úprava zpráv v chatu

Úprava textové zprávy

Existuje metoda v meeting.chat a upravit tak zprávu každého typu.

Chcete-li upravit textovou zprávu, použijte meeting.chat.editTextMessage() metodu. Ta přijímá messageId (typ string) a message (typ string).

const message = meeting.chat.messages[0];
const messageId = message?.id;
const newMessage = "Is this the real life?";

await meeting.chat.editTextMessage(messageId, newMessage);

Existuje metoda v meeting.chat a upravit tak zprávu každého typu.

Chcete-li upravit textovou zprávu, použijte meeting.chat.editTextMessage() metodu. Ta přijímá messageId (typ string) a message (typ string).

const message = meeting.chat.messages[0];
const messageId = message?.id;
const newMessage = "Is this the real life?";

await meeting.chat.editTextMessage(messageId, newMessage);

Existuje metoda v meeting.chat a upravit tak zprávu každého typu.

Chcete-li upravit textovou zprávu, použijte meeting.chat.editTextMessage() metodu. Ta přijímá messageId (typ string) a message (typ string).

const message = meeting.chat.messages[0];
const messageId = message?.id;
const newMessage = "Is this the real life?";
await meeting.chat.editTextMessage(messageId, newMessage);

Úprava obrázku

Obrázek můžete upravit pomocí meeting.chat.editImageMessage(). Přijímá messageId typu string a obrázek typu File.

<label for="img">Edit image:</label>
<input type="file" id="img" name="img" accept="image/*" />
<button onclick="onEditImage()">Edit Image</button>
async function onEditImage() {
	const messageId = "...";
	const image = document.getElementById("img");
	await meeting.chat.editImageMessage(messageId, image.files[0]);
}

Obrázek můžete upravit pomocí meeting.chat.editImageMessage(). Přijímá messageId typu string a obrázek typu File.

import { useRef } from "react";

function ChatComponent() {
	const imageInputRef = useRef(null);

	const onEditImage = async () => {
		const messageId = "...";
		const image = imageInputRef.current;
		if (image && image.files[0]) {
			await meeting.chat.editImageMessage(messageId, image.files[0]);
		}
	};

	return (
		<>
			<label htmlFor="img">Edit image:</label>
			<input
				type="file"
				id="img"
				name="img"
				accept="image/*"
				ref={imageInputRef}
			/>
			<button onClick={onEditImage}>Edit Image</button>
		</>
	);
}

Obrázek můžete upravit pomocí meeting.chat.editImageMessage(). Přijímá messageId typu string a obrázek typu File.

import DocumentPicker from "@react-native-documents/picker";

async function onEditImage() {
	const messageId = "...";
	// Get the image uri and create an object with the following fields
	const res = await DocumentPicker.pickSingle({
		type: [DocumentPicker.types.images],
	});
	const image = {
		uri: res.uri,
		name: res.name,
		size: res.size,
		type: res.type,
	};
	await meeting.chat.editImageMessage(messageId, image);
}

Úprava souboru

Úprava souboru je podobná úpravě obrázku. Chcete-li upravit soubor, použijte meeting.chat.editFileMessage().

<label for="file">Edit file:</label>
<input type="file" id="file" name="file" />
<button onclick="onEditFile()">Edit File</button>
async function onEditFile() {
	const messageId = "...";
	const file = document.getElementById("file");
	await meeting.chat.editFileMessage(messageId, file.files[0]);
}

Úprava souboru je podobná úpravě obrázku. Chcete-li upravit soubor, použijte meeting.chat.editFileMessage().

import { useRef } from "react";

function ChatComponent() {
	const fileInputRef = useRef(null);

	const onEditFile = async () => {
		const messageId = "...";
		const file = fileInputRef.current;
		if (file && file.files[0]) {
			await meeting.chat.editFileMessage(messageId, file.files[0]);
		}
	};

	return (
		<>
			<label htmlFor="file">Edit file:</label>
			<input type="file" id="file" name="file" ref={fileInputRef} />
			<button onClick={onEditFile}>Edit File</button>
		</>
	);
}

Úprava souboru je podobná úpravě obrázku. Chcete-li upravit soubor, použijte meeting.chat.editFileMessage().

import DocumentPicker from "@react-native-documents/picker";

async function onEditFile() {
	const messageId = "...";
	// Get the file uri and create an object with the following fields
	const res = await DocumentPicker.pickSingle({
		type: [DocumentPicker.types.allFiles],
	});
	const file = {
		uri: res.uri,
		name: res.name,
		size: res.size,
		type: res.type,
	};
	await meeting.chat.editFileMessage(messageId, file);
}

Úprava libovolného typu zprávy

Existuje také běžná metoda nazvaná meeting.chat.editMessage() kterou lze použít k úpravě kteréhokoli ze tří typů zpráv zobrazených výše. V podstatě volá jednu z výše uvedených metod v závislosti na typu payloadu, který metodě odešlete. editMessage() metoda přijímá parametry messageId a message následujícího typu:

async function editMessage(
	messageId: string,
	message:
		| { type: "text"; message: string }
		| { type: "image"; image: File }
		| { type: "file"; file: File },
) {
	// ...
}

Zde je návod, jak použít editMessage() metodu pro úpravu textové zprávy:

const messageId = "...";
const message = "Is this just fantasy?";
await meeting.chat.editMessage(messageId, { type: "text", message });

Existuje také běžná metoda nazvaná meeting.chat.editMessage() kterou lze použít k úpravě kteréhokoli ze tří typů zpráv zobrazených výše. V podstatě volá jednu z výše uvedených metod v závislosti na typu payloadu, který metodě odešlete. editMessage() metoda přijímá parametry messageId a message následujícího typu:

async function editMessage(
	messageId: string,
	message:
		| { type: "text"; message: string }
		| { type: "image"; image: File }
		| { type: "file"; file: File },
) {
	// ...
}

Zde je návod, jak použít editMessage() metodu pro úpravu textové zprávy:

const messageId = "...";
const message = "Is this just fantasy?";
await meeting.chat.editMessage(messageId, { type: "text", message });

Existuje také běžná metoda nazvaná meeting.chat.editMessage() kterou lze použít k úpravě kteréhokoli ze tří typů zpráv zobrazených výše. V podstatě volá jednu z výše uvedených metod v závislosti na typu payloadu, který metodě odešlete. editMessage() metoda přijímá parametry messageId a message následujícího typu:

async function editMessage(
	messageId: string,
	message:
		| { type: "text"; message: string }
		| { type: "image"; image: File }
		| { type: "file"; file: File },
) {
	// ...
}

Zde je návod, jak použít editMessage() metodu pro úpravu textové zprávy:

const messageId = "...";
const message = "Is this just fantasy?";
await meeting.chat.editMessage(messageId, { type: "text", message });

Další funkce chatu

Získání zpráv od uživatele

meeting.chat zpřístupňuje pro pohodlnější práci s chatem i další metody.

Zprávy konkrétního uživatele získáte předáním jeho ID do meeting.chat.getMessagesByUser() metoda.

// Find the userId of the user with name "Freddie".
const { userId } = meeting.participants.joined
	.toArray()
	.find((p) => p.name === "Freddie");

const messages = meeting.chat.getMessagesByUser(userId);

meeting.chat zpřístupňuje pro pohodlnější práci s chatem i další metody.

Zprávy konkrétního uživatele získáte předáním jeho ID do meeting.chat.getMessagesByUser() metoda.

// Find the userId of the user with name "Freddie".
const { userId } = meeting.participants.joined
	.toArray()
	.find((p) => p.name === "Freddie");

const messages = meeting.chat.getMessagesByUser(userId);

meeting.chat zpřístupňuje pro pohodlnější práci s chatem i další metody.

Zprávy konkrétního uživatele získáte předáním jeho ID do meeting.chat.getMessagesByUser() metoda.

// Find the userId of the user with name "Freddie".
const { userId } = meeting.participants.joined
	.toArray()
	.find((p) => p.name === "Freddie");

const messages = meeting.chat.getMessagesByUser(userId);

Získání zpráv konkrétního typu

Zprávy určitého typu můžete také získat pomocí meeting.chat.getMessagesByType() metodu. Můžete například získat všechny obrázkové zprávy přítomné v chatu pomocí následujícího úryvku kódu:

const imageMessages = meeting.chat.getMessagesByType("image");

Zprávy určitého typu můžete také získat pomocí meeting.chat.getMessagesByType() metodu. Můžete například získat všechny obrázkové zprávy přítomné v chatu pomocí následujícího úryvku kódu:

const imageMessages = meeting.chat.getMessagesByType("image");

Zprávy určitého typu můžete také získat pomocí meeting.chat.getMessagesByType() metodu. Můžete například získat všechny obrázkové zprávy přítomné v chatu pomocí následujícího úryvku kódu:

const imageMessages = meeting.chat.getMessagesByType("image");

Připnutí chatové zprávy

V chatu můžete připnout několik zpráv. Jakmile zprávu připnete, bude mít objekt zprávy atribut pinned: true, pomocí kterého zjistíte, zda je zpráva připnutá.

Chcete-li připnout zprávu:

// Pin the first message in the chat (could be text, image, or file).
const { id } = meeting.chat.messages[0];
await meeting.chat.pin(id);

Jakmile připnete zprávu, bude přidána do meeting.chat.pinned.

const { id } = meeting.chat.messages[0];
await meeting.chat.pin(id);

console.log(meeting.chat.pinned);
console.log(meeting.chat.pinned.length > 0); // Should be true

Připnutou zprávu můžete také odepnout pomocí meeting.chat.unpin() metoda.

// Unpin the first pinned message.
const { id } = meeting.chat.pinned[0];
await meeting.chat.unpin(id);

Můžete naslouchat událostem, které oznámí, kdy byla zpráva připnuta nebo odepnuta.

meeting.chat.on("pinMessage", ({ message }) => {
	console.log("A message was pinned", JSON.stringify(message));
});

meeting.chat.on("unpinMessage", ({ message }) => {
	console.log("A message was unpinned", JSON.stringify(message));
});

V chatu můžete připnout několik zpráv. Jakmile zprávu připnete, bude mít objekt zprávy atribut pinned: true, pomocí kterého zjistíte, zda je zpráva připnutá.

Chcete-li připnout zprávu:

// Pin the first message in the chat (could be text, image, or file).
const { id } = meeting.chat.messages[0];
await meeting.chat.pin(id);

Jakmile připnete zprávu, bude přidána do meeting.chat.pinned.

const { id } = meeting.chat.messages[0];
await meeting.chat.pin(id);

console.log(meeting.chat.pinned);
console.log(meeting.chat.pinned.length > 0); // Should be true

Připnutou zprávu můžete také odepnout pomocí meeting.chat.unpin() metoda.

// Unpin the first pinned message.
const { id } = meeting.chat.pinned[0];
await meeting.chat.unpin(id);

Můžete naslouchat událostem, které oznámí, kdy byla zpráva připnuta nebo odepnuta.

meeting.chat.on("pinMessage", ({ message }) => {
	console.log("A message was pinned", JSON.stringify(message));
});

meeting.chat.on("unpinMessage", ({ message }) => {
	console.log("A message was unpinned", JSON.stringify(message));
});

V chatu můžete připnout několik zpráv. Jakmile zprávu připnete, bude mít objekt zprávy atribut pinned: true, pomocí kterého zjistíte, zda je zpráva připnutá.

Chcete-li připnout zprávu:

// Pin the first message in the chat (could be text, image, or file).
const { id } = meeting.chat.messages[0];
await meeting.chat.pin(id);

Jakmile připnete zprávu, bude přidána do meeting.chat.pinned.

const { id } = meeting.chat.messages[0];
await meeting.chat.pin(id);

console.log(meeting.chat.pinned);
console.log(meeting.chat.pinned.length > 0); // Should be true

Připnutou zprávu můžete také odepnout pomocí meeting.chat.unpin() metoda.

// Unpin the first pinned message.
const { id } = meeting.chat.pinned[0];
await meeting.chat.unpin(id);

Můžete naslouchat událostem, které oznámí, kdy byla zpráva připnuta nebo odepnuta.

meeting.chat.on("pinMessage", ({ message }) => {
	console.log("A message was pinned", JSON.stringify(message));
});

meeting.chat.on("unpinMessage", ({ message }) => {
	console.log("A message was unpinned", JSON.stringify(message));
});

Odstranění chatové zprávy

meeting.chat jmenný prostor zpřístupňuje metodu s názvem deleteMessage(). Přijímá parametr messageId typu string.

const messageId = "...";
await meeting.chat.deleteMessage(messageId);

meeting.chat jmenný prostor zpřístupňuje metodu s názvem deleteMessage(). Přijímá parametr messageId typu string.

const messageId = "...";
await meeting.chat.deleteMessage(messageId);

meeting.chat jmenný prostor zpřístupňuje metodu s názvem deleteMessage(). Přijímá parametr messageId typu string.

const messageId = "...";
await meeting.chat.deleteMessage(messageId);

Export zpráv chatu

Všechny chatové zprávy relace RealtimeKit můžete programově načíst následujícími způsoby:

Získání adresy URL pro stažení chatu

Chcete-li získat URL pro stažení chatu, proveďte HTTP GET požadavek na Koncový bod Chat Replay API. API vrací:

{
	"success": true,
	"data": {
		"chat_download_url": "string",
		"chat_download_url_expiry": "string"
	}
}

Podrobnosti o koncovém bodu API Chat Replay najdete v Dokumentace API Realtime Kit.

Stáhněte soubor s výpisem chatu

Soubor s exportem chatu můžete stáhnout ve formátu CSV odesláním HTTP GET požadavek na chat_download_url získaný v předchozím kroku.

Proces stahování souboru z adresy URL HTTP se liší podle toho, zda stahujete na straně klienta, nebo na straně serveru.

Stahování na klientovi

Stažení na straně klienta:

  1. Vytvořte GET požadavek na chat_download_url
  2. Převeďte odpověď na blob
  3. Vytvořte neviditelný <a> HTML elementu s download atribut a přidejte blob do jeho href
  4. Programově klikněte na <a> element, aby prohlížeč automaticky zahájil stahování, a poté odeberte <a> element

Stahování na serveru

Stažení na serveru pomocí streamů Node.js:

  1. Vytvoření zapisovatelného streamu pro lokální soubor
  2. Vytvořte GET požadavek na chat_download_url
  3. Získejte čitelný stream pomocí res.body a propojte (pipe) se zapisovatelným streamem vytvořeným v prvním kroku

Formát exportu chatu do CSV

Soubor CSV obsahuje všechny chatové zprávy spolu s informacemi o účastnících a metadaty. Obsahuje následující záhlaví sloupců: