聊天

你可以在页面上添加一个聊天室,使得参与者之间可以互相交流。

基本用法

在你的模板HTML中,放入:

{{ chat }}

这会创建一个同组玩家间的聊天室,玩家的昵称为“玩家1”,“玩家2”等等。(基于玩家的 id_in_group)。

定制昵称与聊天室成员

你可以像下面这样指定一个 channel 和/或 nickname

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

昵称

nickname is the nickname that will be displayed for that user in the chat. A typical usage would be {{ 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并没有特殊含义,关键在于这一值对所有人相同)

高级自定义

如果你在浏览器中查看了页面的源码,你会发现下面的这些选择器是可用的:

元素 CSS/jQuery 选择器
聊天窗体 .otree-chat
输入消息的文本框 .otree-chat__input (注意: __, 而不是 _)
提交消息的按钮 .otree-chat__btn-send
所有消息的div .otree-chat__messages
消息 .otree-chat__msg
消息的昵称 .otree-chat__nickname
消息的文本部分 .otree-chat__body

你可以使用CSS或JS改变这些元素的外观或者行为(或者将它们完全隐藏起来)。

For example, to customize the style, just include some CSS after the {{ chat }} element, e.g.:

{{ chat }}

<style>
    .otree-chat__messages {
        height: 400px;
    }
    .otree-chat__nickname {
        color: #0000FF;
        font-weight: bold;
    }
</style>

注意这里有2个下划线(__, 而不是 _)。

你也可以通过将其放入一个 <div> 并调整这个父 <div> 的样式来定制外观。例如像下面这样设置宽度:

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

同一页面上多个聊天

You can have multiple {{ chat }} boxes on each page, so that a player can be in multiple channels simultaneously.

将聊天日志导出为CSV

聊天日志的下载链接在oTree的常规数据导出页面。

See Chat between participants and experimenter.