チャット

参加者が互いに交流できるように、ページにチャットルームを追加できます。

基本的な使い方

テンプレートのHTMLに、次のように入力します。

{{ chat }}

これにより、同じグループ内のプレイヤー間でチャットルームが作成されます。各プレイヤーのニックネームは "プレイヤー1" 、 "プレイヤー2" など id_in_group に基づいて表示されます。

ニックネームとチャットルームのメンバーをカスタマイズする

あなたは channel および/または nickname をこのように指定できます:

{{ chat nickname="abc" channel="123" }}

ニックネーム

nickname はチャットでそのユーザーに表示されるニックネームです。 {{ chat nickname=player.role }} の形で指定されることが多いです。

チャンネル

channel は、チャットルームの名前です。2人のプレイヤーが同じ channel にいる場合に、お互いにチャットできます。また、 channel はユーザーインターフェイスには表示されず、内部で使用されるだけです。デフォルト値は group.id となっています。この場合、グループ内のすべてのプレイヤーが一緒にチャットすることができます。チャットを現在のページまたはグループのサブディビジョンなどにスコープする代わりに、 channel を使用できます(以下の例を参照)。 channel の値に関係なく、チャットは少なくとも同じセッションと同じアプリのプレイヤーにスコープされます。

例: 役割ごとのチャット

これは、グループ内のコミュニケーションの代わりに、役割に基づいてグループ間でコミュニケーションをとる例です。たとえば、すべての買い手が互いに話し、すべての売り手が互いに話すことができます。

def chat_nickname(player):
    group = player.group

    return 'Group {} player {}'.format(group.id_in_subsession, player.id_in_group)

ページ内:

class MyPage(Page):

    @staticmethod
    def vars_for_template(player):
        return dict(
            nickname=chat_nickname(player)
        )

テンプレート内:

{{ chat nickname=nickname channel=player.id_in_group }}

例: ラウンドの違いに関係なくチャットする

現在別のラウンドにいるプレイヤーとチャットする必要がある場合は、次のことができます。

{{ chat channel=group.id_in_subsession }}

例: すべてのラウンドのすべてのグループ間でチャット

セッションの全員がお互いに自由にチャットできるようにしたい場合は、次のようにします。

{{ chat channel=1 }}

(番号1は重要ではありません。重要なのは、それがすべての人にとって同じ値であるということです。)

高度なカスタマイズ

ブラウザのインス​​ペクタでページのソースコードを見ると、 otree-chat__ で始まるクラスがたくさんあります。

CSSまたはJSを使用して、これらの要素の外観や動作を変更できます(または完全に非表示にできます)。

<div> の中にコードを挿入し、その親 の``<div>`` をスタイリングすることで、外観をカスタマイズすることもできます。たとえば、幅を設定するには:

<div style="width: 400px">
    {{ chat }}
</div>

1ページに複数のチャット

各ページに複数の {{ chat }} を配置することで、プレイヤーは複数のチャネルに同時に参加することができます。

チャットログのCSVをエクスポートする

チャットログのダウンロードリンクは、oTreeの通常のデータエクスポートページに表示されます。

参加者と実験者間のチャット を参照してください。