INTEGRITY Документация

Опросы

Это руководство объясняет, как создавать опросы, голосовать в них и взаимодействовать с ними во встрече с помощью Cloudflare RealtimeKit.

Введение

Доступ к объекту опросов встречи можно получить с помощью meeting.polls. Он предоставляет методы для создания опросов, голосования и других действий.

console.log("Polls object:", meeting.polls);

meeting.polls.items свойство возвращает массив всех опросов, созданных во встрече, где каждый элемент представляет собой объект типа Poll.

console.log("All polls:", meeting.polls.items);

Доступ к объекту опросов встречи можно получить с помощью meeting.polls. Он предоставляет методы для создания опросов, голосования и других действий.

console.log("Polls object:", meeting.polls);

meeting.polls.items свойство возвращает массив всех опросов, созданных во встрече, где каждый элемент представляет собой объект типа Poll.

console.log("All polls:", meeting.polls.items);

Функциональность опросов во встрече доступна через meeting.polls объект. Этот объект предоставляет методы для создания опросов, голосования и других действий, связанных с опросами.

Чтобы получить все опросы, созданные во время встречи, используйте meeting.polls.items. Возвращает массив, каждый элемент которого является объектом типа com.cloudflare.realtimekit.polls.Poll.

Доступ к объекту опросов встречи можно получить с помощью meeting.polls. Он предоставляет методы для создания опросов, голосования и других действий.

meeting.polls.items возвращает массив всех опросов, созданных во встрече, где каждый элемент является объектом типа Poll.

Доступ к объекту опросов встречи можно получить с помощью meeting.polls. Он предоставляет методы для создания опросов, голосования и других действий.

meeting.polls.items возвращает массив всех опросов, созданных во встрече, где каждый элемент является объектом типа Poll.

Тип опроса

Poll тип определяется следующим образом:

interface Poll {
	id: string;
	question: string;
	options: PollOption[];
	anonymous: boolean;
	hideVotes: boolean;
	createdBy: string;
	createdByUserId: string;
	voted: string[]; // stores participant ID
}

interface PollOption {
	text: string;
	votes: {
		id: string; // stores participant ID
		name: string;
	}[];
	count: number;
}

Poll тип определяется следующим образом:

interface Poll {
	id: string;
	question: string;
	options: PollOption[];
	anonymous: boolean;
	hideVotes: boolean;
	createdBy: string;
	createdByUserId: string;
	voted: string[]; // stores participant ID
}

interface PollOption {
	text: string;
	votes: {
		id: string; // stores participant ID
		name: string;
	}[];
	count: number;
}

Poll тип представляет опрос во встрече:

class Poll(
  val id: String,
  val question: String,
  val anonymous: Boolean,
  val hideVotes: Boolean,
  val createdBy: String,
  val options: List<PollOption>,
  val voted: List<String>,
)

Каждый опрос содержит список PollOption объекты, представляющие доступные варианты этого опроса.

Каждый PollOption включает список PollVote объекты, где каждый голос содержит принадлежащий проголосовавшему id и name.

class PollOption(
  val text: String,
  val votes: List<PollVote>,
  val count: Int
)
class PollVote(
  val id: String,
  val name: String
)

Poll тип определяется следующим образом:

class Poll {
  let id: String
  let question: String
  let anonymous: Bool
  let hideVotes: Bool
  let createdBy: String
  let options: [PollOption]
  let voted: [String]
}

Тип Poll является основным классом для любого опроса в RealtimeKit. Он также содержит список PollOption которые являются вариантами ответа для конкретного опроса. А каждый PollOption содержит список голосов. Голоса представляют собой объекты класса PollVote который внутри содержит id и name голоса.

class PollOption {
  let text: String
  let votes: [PollVote]
  let count: Int
}

class PollVote {
  let id: String
  let name: String
}

Poll тип определяется следующим образом:

interface Poll {
	id: string;
	question: string;
	options: PollOption[];
	anonymous: boolean;
	hideVotes: boolean;
	createdBy: string;
	createdByUserId: string;
	voted: string[]; // stores participant ID
}

interface PollOption {
	text: string;
	votes: {
		id: string; // stores participant ID
		name: string;
	}[];
	count: number;
}

Создание опроса

Новый опрос можно создать с помощью create метод из meeting.polls объект. meeting.polls.create() метод принимает следующие параметры:

Следующий фрагмент кода создаёт опрос с анонимным голосованием:

await meeting.polls.create(
	"Are you an early bird or a night owl?",
	["Early bird", "Night owl"],
	true,
);

Новый опрос можно создать с помощью create метод из meeting.polls объект. meeting.polls.create() метод принимает следующие параметры:

Следующий фрагмент кода создаёт опрос с анонимным голосованием:

await meeting.polls.create(
	"Are you an early bird or a night owl?",
	["Early bird", "Night owl"],
	true,
);

Чтобы создать новый опрос, используйте create метод, доступный в meeting.polls объект. meeting.polls.create() функция требует следующие параметры:

Параметр Тип Обязательный Описание
вопрос String да Вопрос, за который нужно проголосовать.
options List<String> да Варианты опроса.
аноним Boolean да Если указано true, голоса в опросе анонимны.
hideVotes Boolean да Если указано true, голоса в опросе скрыты.

Следующий фрагмент кода создаёт опрос с анонимным голосованием.

val pollsCreateError: PollsError? = meeting.polls.create(
  question = "Are you an early bird or a night owl?",
  options = listOf("Early bird", "Night owl"),
  anonymous = true,
  hideVotes = false
)

Новый опрос можно создать с помощью create метод из meeting.polls объект. meeting.polls.createPoll() метод принимает следующие параметры:

Параметр Тип Значение по умолчанию Обязательный Описание
вопрос string - да Вопрос, за который нужно проголосовать.
options string[] - да Варианты опроса.
аноним boolean - нет Если указано true, голоса в опросе анонимны.
hideVotes boolean - нет Если указано true, голоса в опросе скрыты.

Следующий фрагмент кода создаёт опрос с анонимным голосованием.

let pollsCreateError: PollsError? = meeting.polls.createPoll(
    question: "Are you an early bird or a night owl?",
    options: ["Early bird", "Night owl"],
    anonymous: true,
    hideVotes: false
)

Новый опрос можно создать с помощью create метод из meeting.polls объект. meeting.polls.create() метод принимает следующие параметры:

Параметр Тип Значение по умолчанию Обязательный Описание
вопрос string - да Вопрос, за который нужно проголосовать.
options string[] - да Варианты опроса.
аноним boolean false нет Если указано true, голоса в опросе анонимны.
hideVotes boolean false нет Если указано true, голоса в опросе скрыты.

Следующий фрагмент кода создаёт опрос с анонимным голосованием.

await meeting.poll.create(
	"Are you an early bird or a night owl?",
	["Early bird", "Night owl"],
	true,
);

Голосование в опросе

meeting.polls.vote() метод можно использовать для регистрации голоса в опросе. Он принимает следующие параметры:

Следующий фрагмент кода голосует за первый вариант первого опроса, созданного во встрече:

const poll = meeting.polls.items[0];
await meeting.polls.vote(poll.id, 0);

meeting.polls.vote() метод можно использовать для регистрации голоса в опросе. Он принимает следующие параметры:

Следующий фрагмент кода голосует за первый вариант первого опроса, созданного во встрече:

const poll = meeting.polls.items[0];
await meeting.polls.vote(poll.id, 0);

Чтобы зарегистрировать голос в опросе, используйте meeting.polls.vote() метод. Для этого метода требуются следующие параметры:

Параметр Тип Значение по умолчанию Обязательный Описание
pollMessage Poll - да Сообщение опроса, по которому нужно проголосовать.
pollOption PollOption - да Вариант, за который нужно проголосовать.

Следующий фрагмент кода голосует за первый вариант первого опроса, созданного во встрече.

val poll: Poll = meeting.polls.items.first()
val selectedPollOption: PollOption = poll.options.first()

val pollsError: PollsError? = meeting.polls.vote(poll.id, selectedPollOption)

meeting.polls.vote() метод можно использовать для регистрации голоса в опросе. Он принимает следующие параметры:

Параметр Тип Значение по умолчанию Обязательный Описание
pollMessage Poll - да Сообщение опроса, по которому нужно проголосовать.
pollOption PollOption - да Вариант, за который нужно проголосовать.

Следующий фрагмент кода голосует за первый вариант первого опроса, созданного во встрече.

let poll: Poll = meeting.polls.items[0]
let selectedPollOption: PollOption = poll.options[0]

meeting.poll.vote(poll, selectedPollOption)

meeting.polls.vote() метод можно использовать для регистрации голоса в опросе. Он принимает следующие параметры:

Параметр Тип Значение по умолчанию Обязательный Описание
id string - да Идентификатор опроса, за который отдаётся голос.
index number - да Индекс варианта.

Следующий фрагмент кода голосует за первый вариант первого опроса, созданного во встрече.

const poll = meeting.polls.items[0];
await meeting.poll.vote(poll.id, 0);

Другие функции опросов

Просмотр результатов опроса

Доступ к общему числу голосов в опросе можно получить следующим образом:

const poll = meeting.polls.items[0];
const votes = poll.voted;

votes представляет собой массив идентификаторов участников (meeting.participant.id).

Доступ к общему числу голосов за вариант опроса можно получить следующим образом:

const poll = meeting.polls.items[0];
const options = poll.options;

options возвращает массив объектов, где каждый объект имеет тип PollOption.

Доступ к общему числу голосов в опросе можно получить следующим образом:

const poll = meeting.polls.items[0];
const votes = poll.voted;

votes представляет собой массив идентификаторов участников (meeting.participant.id).

Доступ к общему числу голосов за вариант опроса можно получить следующим образом:

const poll = meeting.polls.items[0];
const options = poll.options;

options возвращает массив объектов, где каждый объект имеет тип PollOption.

Доступ к общему числу голосов в опросе можно получить следующим образом:

val poll = meeting.polls.items[0]
val votes = poll.voted

votes представляет собой массив идентификаторов участников (meeting.participant.id).

Доступ к общему числу голосов за вариант опроса можно получить следующим образом:

val poll = meeting.polls.items[0]
val options = poll.options

options возвращает массив объектов, где каждый объект имеет тип PollOption.

Доступ к общему числу голосов в опросе можно получить следующим образом:

let poll = meeting.polls.items[0]
let votes = poll.voted

votes представляет собой массив идентификаторов участников (meeting.participant.id).

Доступ к общему числу голосов за вариант опроса можно получить следующим образом:

let poll = meeting.polls.items[0]
let options = poll.options

options возвращает массив объектов, где каждый объект имеет тип PollOption.

Доступ к общему числу голосов в опросе можно получить следующим образом:

const poll = meeting.polls.items[0];
const votes = poll.voted;

votes представляет собой массив идентификаторов участников (meeting.participant.id).

Доступ к общему числу голосов за вариант опроса можно получить следующим образом:

const poll = meeting.polls.items[0];
const options = poll.options;

options возвращает массив объектов, где каждый объект имеет тип PollOption.

Получение уведомлений о создании или обновлении опроса

Событие срабатывает каждый раз, когда meeting.polls.items обновляется или создаётся. Вы можете отслеживать это событие, чтобы получать обновлённый список опросов. Объект ответа содержит следующие свойства:

meeting.polls.on("pollsUpdate", ({ polls, newPoll }) => {
	console.log("Polls updated:", polls);
	console.log("Is new poll:", newPoll);
});

Событие срабатывает каждый раз, когда meeting.polls.items обновляется или создаётся. Вы можете отслеживать это событие, чтобы получать обновлённый список опросов. Объект ответа содержит следующие свойства:

meeting.polls.on("pollsUpdate", ({ polls, newPoll }) => {
	console.log("Polls updated:", polls);
	console.log("Is new poll:", newPoll);
});

Как вариант, используйте хуки React, чтобы отслеживать обновления опросов:

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

// useRealtimeKitSelector hook only works when `RealtimeKitProvider` is used.
const polls = useRealtimeKitSelector((m) => m.polls.items);

Событие срабатывает каждый раз, когда meeting.polls.items обновляется или создаётся. Вы можете отслеживать это событие, чтобы получать обновлённый список опросов. Объект ответа содержит следующие свойства:

meeting.polls.on("pollsUpdate", ({ polls, newPoll }) => {
	console.log(polls, newPoll);
});

Чтобы получать обновления о новых опросах или изменениях в опросах во время встречи, реализуйте RtkPollsEventListener интерфейс. Зарегистрируйте свой слушатель с помощью meeting.addPollsEventListener(rtkPollsEventListener).

onNewPoll() метод вызывается каждый раз при создании нового опроса во встрече.

onPollUpdate() метод вызывается при обновлении конкретного опроса, например когда участники голосуют или изменяются сведения об опросе. onPollUpdates() метод вызывается при обновлении списка опросов, в том числе при создании новых опросов или одновременном обновлении нескольких опросов. Используйте эти обратные вызовы, чтобы интерфейс опросов оставался синхронизирован с актуальными данными.

meeting.addPollsEventListener(object : RtkPollsEventListener {
    override fun onNewPoll(poll: Poll) {
    }

    override fun onPollUpdate(poll: Poll) {
    }

    override fun onPollUpdates(pollItems: List<Poll>) {
    }
  }
)

Чтобы получать новые сообщения опросов, необходимо реализовать метод onPollUpdates() метод из обратного вызова RtkPollsEventListener. Подписаться на эти события можно, вызвав meeting.addPollsEventListener(meetingViewModel)

extension MeetingViewModel: RtkPollsEventListener {
  func onNewPoll(poll: Poll) {
    // code to handle new poll
  }

  func onPollUpdates(pollItems: [Poll]) {
    // code to handle polls and their vote updates.
  }

  func onPollUpdate(poll: Poll) {}
}