このガイドでは、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;
}新しい投票は、meeting.polls オブジェクトの create メソッドで作成できます。meeting.polls.create() メソッドは次のパラメーターを受け取ります。
question(string) - 投票の質問options(string[]) - 投票の選択肢の配列anonymous(boolean) - 投票を匿名にするかどうかhideVotes(boolean, 任意) - 投票数を非表示にするかどうか
次のスニペットは、匿名投票を作成します。
await meeting.polls.create(
"Are you an early bird or a night owl?",
["Early bird", "Night owl"],
true,
);新しい投票は、meeting.polls オブジェクトの create メソッドで作成できます。meeting.polls.create() メソッドは次のパラメーターを受け取ります。
question(string) - 投票の質問options(string[]) - 投票の選択肢の配列anonymous(boolean) - 投票を匿名にするかどうかhideVotes(boolean, 任意) - 投票数を非表示にするかどうか
次のスニペットは、匿名投票を作成します。
await meeting.polls.create(
"Are you an early bird or a night owl?",
["Early bird", "Night owl"],
true,
);新しい投票を作成するには、meeting.polls オブジェクトの create メソッドを使います。meeting.polls.create() には次のパラメーターが必要です。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| question | String |
はい | 投票対象の質問です。 |
| options | List<String> |
はい | 投票の選択肢です。 |
| anonymous | 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
)新しい投票は、meeting.polls オブジェクトの create メソッドで作成できます。meeting.polls.createPoll() メソッドは次のパラメーターを受け取ります。
| パラメーター | 型 | デフォルト値 | 必須 | 説明 |
|---|---|---|---|---|
| question | string |
- | はい | 投票対象の質問です。 |
| options | string[] |
- | はい | 投票の選択肢です。 |
| anonymous | 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
)新しい投票は、meeting.polls オブジェクトの create メソッドで作成できます。meeting.polls.create() メソッドは次のパラメーターを受け取ります。
| パラメーター | 型 | デフォルト値 | 必須 | 説明 |
|---|---|---|---|---|
| question | string |
- | はい | 投票対象の質問です。 |
| options | string[] |
- | はい | 投票の選択肢です。 |
| anonymous | 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() メソッドを使います。次のパラメーターを受け取ります。
pollId(string) - 投票の IDoptionIndex(number) - 選んだ選択肢のインデックス
次のスニペットは、ミーティングで最初に作成された投票の、最初の選択肢に投票します。
const poll = meeting.polls.items[0];
await meeting.polls.vote(poll.id, 0);票を登録するには meeting.polls.vote() メソッドを使います。次のパラメーターを受け取ります。
pollId(string) - 投票の IDoptionIndex(number) - 選んだ選択肢のインデックス
次のスニペットは、ミーティングで最初に作成された投票の、最初の選択肢に投票します。
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 |
- | はい | 投票対象の投票 ID です。 |
| 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 は参加者 ID(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 は参加者 ID(meeting.participant.id)の配列です。
投票の選択肢ごとの合計票数は、次のように取得できます。
const poll = meeting.polls.items[0];
const options = poll.options;options はオブジェクトの配列を返します。各オブジェクトは PollOption 型です。
投票の合計票数は、次のように取得できます。
val poll = meeting.polls.items[0]
val votes = poll.votedvotes は参加者 ID(meeting.participant.id)の配列です。
投票の選択肢ごとの合計票数は、次のように取得できます。
val poll = meeting.polls.items[0]
val options = poll.optionsoptions はオブジェクトの配列を返します。各オブジェクトは PollOption 型です。
投票の合計票数は、次のように取得できます。
let poll = meeting.polls.items[0]
let votes = poll.votedvotes は参加者 ID(meeting.participant.id)の配列です。
投票の選択肢ごとの合計票数は、次のように取得できます。
let poll = meeting.polls.items[0]
let options = poll.optionsoptions はオブジェクトの配列を返します。各オブジェクトは PollOption 型です。
投票の合計票数は、次のように取得できます。
const poll = meeting.polls.items[0];
const votes = poll.voted;votes は参加者 ID(meeting.participant.id)の配列です。
投票の選択肢ごとの合計票数は、次のように取得できます。
const poll = meeting.polls.items[0];
const options = poll.options;options はオブジェクトの配列を返します。各オブジェクトは PollOption 型です。
meeting.polls.items が更新または作成されるたびにイベントが発火します。これを購読すると、最新の投票一覧を取得できます。レスポンスオブジェクトには次のプロパティがあります。
polls- すべての投票の一覧newPoll- 新しい投票が作成されたときにtrueになる boolean 変数
meeting.polls.on("pollsUpdate", ({ polls, newPoll }) => {
console.log("Polls updated:", polls);
console.log("Is new poll:", newPoll);
});meeting.polls.items が更新または作成されるたびにイベントが発火します。これを購読すると、最新の投票一覧を取得できます。レスポンスオブジェクトには次のプロパティがあります。
polls- すべての投票の一覧newPoll- 新しい投票が作成されたときにtrueになる boolean 変数
meeting.polls.on("pollsUpdate", ({ polls, newPoll }) => {
console.log("Polls updated:", polls);
console.log("Is new poll:", newPoll);
});代わりに、React hooks で投票の更新を購読することもできます。
import { useRealtimeKitSelector } from "@cloudflare/realtimekit-react";
// useRealtimeKitSelector hook only works when `RealtimeKitProvider` is used.
const polls = useRealtimeKitSelector((m) => m.polls.items);meeting.polls.items が更新または作成されるたびにイベントが発火します。これを購読すると、最新の投票一覧を取得できます。レスポンスオブジェクトには次のプロパティがあります。
polls- すべての投票の一覧newPoll- 新しい投票が作成されたときにtrueになる boolean 変数
meeting.polls.on("pollsUpdate", ({ polls, newPoll }) => {
console.log(polls, newPoll);
});ミーティング中の新しい投票や投票の変更を受け取るには、RtkPollsEventListener インターフェースを実装します。リスナーは meeting.addPollsEventListener(rtkPollsEventListener) で登録します。
onNewPoll() メソッドは、ミーティングで新しい投票が作成されるたびに呼ばれます。
onPollUpdate() メソッドは、参加者が投票したときや投票の詳細が変わったときなど、特定の投票が更新されたときに呼ばれます。onPollUpdates() メソッドは、新しい投票の作成や複数投票の一括更新など、投票一覧に更新があるときに呼ばれます。これらのコールバックで、投票 UI を最新のデータに合わせます。
meeting.addPollsEventListener(object : RtkPollsEventListener {
override fun onNewPoll(poll: Poll) {
}
override fun onPollUpdate(poll: Poll) {
}
override fun onPollUpdates(pollItems: List<Poll>) {
}
}
)新しい投票メッセージを受け取るには、コールバック RtkPollsEventListener の onPollUpdates() メソッドを実装します。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) {}
}