Event Flowの共有状態

ユーザーメモリー(User Memory)

プラットフォーム上の役割を永続的な全体状態にせずに、参加者を重複なく記録し、後のメッセージで照合し、ランダムに当選者を選び、意図したリストだけをリセットできます。

日本語

1つの名前付きメモリーを複数の操作で使う

1つの ユーザーメモリー(User Memory) 状態ノードは、独立した1つのユーザー集合を保持します。Remember、Forget、Check、Draw、Clearの各ノードは、その状態ノードを選択します。「配信にいいねした人」と「プレゼント企画に応募した人」など、別のリストが必要な場合は、別のUser Memoryノードを作成します。
青緑色の実線:このイベントが次に実行される 紫色の破線:このノードはそのメモリーを使用する

側面の小さな紫色のひし形をUser Memoryノードにドラッグするか、ノードのプロパティでメモリー名を選択します。内部では、操作が状態ノードのIDを保存します。メモリーを選択すると、リンクされたすべての操作が強調表示され、削除時にはリンクが切れる前に警告が表示されます。

Remember UserとUser Is Rememberedが、紫色の破線でPrize Draw EntrantsメモリーにリンクされたEvent Flowのキャンバス
記録済みの応募者が2人いる実際のSSAppフロー。イベントの経路は青緑色、共有状態への参照は紫色の破線で表示されます。

設定する

  1. ドラッグする項目: State Nodes → User Memory をキャンバスに配置します。
  2. 保持するリストに応じて名前を付けます。例: Heart Me対象者, 配信にいいねした人、または 抽選応募者.
  3. 選ぶ項目: 今回のアプリセッションのみ または 再起動後も保存(Save across restarts).
  4. 必要なチェックとアクションを追加し、それぞれを側面のひし形またはドロップダウンで名前付きメモリーにリンクします。
  5. 通常のイベント経路を青緑色の線で接続し、次を使用します: フローをテスト(Test Flow) で、配信前に異なる2つのユーザー名を使って確認します。

使用できる操作

ノード動作
ユーザーを記録(Remember User)現在のイベントのユーザーを1回だけ追加します。繰り返し参加した場合は、そのユーザーの参加回数が増えますが、抽選の応募枠は重複しません。
記録済みユーザーか確認(User Is Remembered)現在のメッセージのユーザーが選択したメモリーに含まれる場合にtrueを返すトリガー/チェック。
ユーザーを削除(Forget User)現在のイベントのユーザーだけを削除します。
ランダムにユーザーを選択(Pick Random User)記録された重複のないユーザーから1人を選びます。必要に応じて当選者を削除し、再当選を防げます。
全ユーザーを消去(Clear All Users)選択したUser Memoryオブジェクトだけを空にします。
状態ノードをリセット(Reset State Node)リセット対象にUser Memoryが選択されている場合は、そのメモリーも消去します。
現在のユーザー2人とSave across restartsを示すUser Memoryノードのプロパティ
メモリーは現在の重複を除いたユーザー数を表示し、永続化とリセットの設定を保持します。
ユーザー識別のルール: ユーザーはプラットフォームとユーザーIDの組み合わせで識別されます。表示ユーザー名は代替としてのみ使います。ユーザー情報のない匿名イベントや集計イベントは安全に無視されます。

実用的なレシピ

TikTok Heart Meまたはチームメンバー → ? TTS

ギフトイベントで送信者を記録してください。1件のギフト行を、永続的な「メンバー」の役割に変えようとしないでください。

TikTokギフトイベント+「Heart Me」に一致 → AND → Remember User ···→ [Heart Me対象者]
?コマンド+TikTokソース+(TikTok Team Member OR User Is Remembered)→ AND → Speak Text ?コマンド+NOT TikTokソース → AND ────────────────────────────────→ Speak Text
  • TikTokのチーム/ファンの状態を判定するには、次を選択します: User Role → TikTok Team Member。受信したTikTokのバッジ/レベルデータを直接読み取るため、Main Chat Overlayの「メンバーとして扱う」表示設定は不要です。
  • ギフトのペイロードは取得モードによって異なります。よく使う設定は次です: Event Type → Other:gift に加え、 Message Contains:Heart Me。Test Flow/イベントリファレンスで取得した行を確認し、ソースが提供する最も適切なフィールドで照合してください。
  • どちらの分岐でも先頭の条件が必要です: ?。これにより、ほかのプラットフォームでは全員を読み上げ、TikTokだけを制限できます。

いいねや参加をした人を記録する

Event Type → Other:liked → Remember User ···→ [配信にいいねした人]

取得したいいね/参加イベントにユーザー情報が含まれる場合に使えます。いいね数の集計更新では個人を特定できないため、記録できません。判定や抽選を分けたい場合は、参加の種類ごとに別のメモリーを使ってください。

重複応募のない抽選

Message Starts With !enter → Remember User ···→ [抽選応募者] Moderator+Message Starts With !draw → AND → Pick Random User ···→ [抽選応募者] Moderator+Message Starts With !resetdraw → AND → Clear All Users ···→ [抽選応募者]

有効化 選択したユーザーを削除(Remove selected user) を、同じ人の再当選を防ぎたい場合に有効にします。公開配信では、モデレーター、管理者、または特定ユーザーとの完全一致で抽選/リセットコマンドを制限してください。

参加者の記録と抽選のサンプルフローをダウンロード

リセットと永続化

手動(Manual)

使う項目: 今すぐ全ユーザーを消去(Clear All Users Now) を、作成/テスト中にメモリーのプロパティで使用します。

フローから

使う項目: 全ユーザーを消去(Clear All Users) または汎用の 状態ノードをリセット(Reset State Node)で、対象のメモリーを正確に選択します。

自動(Automatic)

一定時間の無操作後、配信開始時、または配信停止時に消去します。無操作時間を0にすると、無操作によるリセットは無効になります。

再起動後も保持

セッションのメモリーはアプリ起動時に空になります。保存されたメモリーは、そのメモリーを消去するまで再読み込みされます。

無操作、配信開始、配信停止、Clear All Users Nowを含むUser Memoryのリセット設定
各リセット設定は、その名前付きメモリーだけに適用されます。ほかのUser Memoryノードには影響しません。
「すべて消去」には対象範囲があります: 選択したメモリー内の全ユーザーを意味します。Event Flowの全状態、すべての抽選、Social Stream Ninjaの全メモリーを消す操作ではありません。

抽選と参加の出力を利用する

メモリーのアクションはメッセージにフィールドを追加するため、後続のShow Text、Send Message、Webhook、カスタムアクションで利用できます。

フィールド意味
userMemoryName選択したメモリーの名前。
userMemoryCount現在記録されている、重複を除いたユーザー数。
userMemoryAddedRemember Userが新しいユーザーを追加した場合だけtrue。
userMemoryEntryCountその人の参加回数。
selectedUser抽選で選ばれたユーザーの表示名。
selectedUserId, selectedUserSource抽選で選ばれたユーザーの固定IDとプラットフォーム。
selectedUserParticipationCount当選者に記録された参加回数。
selectedUserReasonRemember Userが最後に保存した理由テンプレート。
selectedUserRemoved抽選で選んだ当選者を削除したかどうか。
選択された当選者と残りの応募者1人を示すTest Flowの結果
実際のTest Flowの出力。Aliceが選ばれ、「remove selected」が有効だったため、メモリーの人数が1人に減りました。

トラブル対処

破線が表示されない操作を選び、対象のUser Memoryを指定するか、側面の紫色のひし形をメモリーにドラッグします。
同じ人が2回表示されるイベントが異なるプラットフォームから届いていないか確認してください。プラットフォーム+ユーザーIDを使うため、意図的に別のユーザーとして扱います。
いいねでユーザーが追加されないイベントにユーザー識別情報がなかった可能性があります。イベントのペイロードを確認してください。集計値だけでは名前付きの応募者として登録できません。
保存されたメモリーが復元されたそのメモリーでClear All Usersを使用します。フローを変更したり、別のメモリーを消去したりしても消えません。
誰でも抽選/リセットコマンドを実行できてしまうアクションの前にANDゲートを置き、User Roleのmoderator/admin条件(または配信者のユーザーを完全一致で確認する条件)を追加します。