Chat

Puedes agregar un chat a una página para que los participantes puedan comunicarse entre sí.

Uso básico

En tu plantilla HTML, pon:

{{ chat }}

Esto creará un chat entre los jugadores en el mismo Grupo, donde el apodo de cada jugador se mostrará como «Jugador 1», «Jugador 2», etc. (basado en el id_in_group del jugador).

Personalizando el apodo y los miembros del chat

Puedes especificar un channel y/o nickname de esta manera:

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

Apodo

nickname es el apodo que se mostrará para ese usuario en el chat. Un uso típico sería {{ chat nickname=player.role }}.

Canal

channel es el nombre de la sala de chat, lo que significa que si 2 jugadores tienen el mismo channel, pueden chatear entre sí. channel no se muestra en la interfaz de usuario; se utiliza solo internamente. Su valor predeterminado es group.id, lo que significa que todos los jugadores en el grupo pueden chatear juntos. Puedes usar channel para limitar el chat a la página actual o a una subdivisión del grupo, etc. (ver ejemplos a continuación). Independientemente del valor de channel, el chat estará al menos limitado a los jugadores en la misma sesión y la misma aplicación.

Ejemplo: chat por rol

Aquí hay un ejemplo donde, en lugar de comunicación dentro de un grupo, tenemos comunicación entre grupos basada en el rol, por ejemplo, todos los compradores pueden hablar entre sí, y todos los vendedores pueden hablar entre sí.

def chat_nickname(player):
    group = player.group

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

En la página:

class MyPage(Page):

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

Entonces en la plantilla:

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

Ejemplo: chat entre rondas

Si necesitas que los jugadores chateen con jugadores que están actualmente en una ronda diferente del juego, puedes hacer lo siguiente:

{{ chat channel=group.id_in_subsession }}

Ejemplo: chat entre todos los grupos en todas las rondas

Si deseas que todos en la sesión puedan chatear libremente entre sí, simplemente haz lo siguiente:

{{ chat channel=1 }}

(El número 1 no es significativo; lo único que importa es que sea el mismo para todos.)

Personalización avanzada

Si miras el código fuente de la página en el inspector de tu navegador, verás un montón de clases que comienzan con otree-chat__.

Puedes usar CSS o JS para cambiar la apariencia o el comportamiento de estos elementos (o ocultarlos por completo).

También puedes personalizar la apariencia colocándolo dentro de un <div> y estilizando ese <div> padre. Por ejemplo, para establecer el ancho:

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

Múltiples chats en una página

Puedes tener múltiples cajas {{ chat }} en cada página, de modo que un jugador pueda estar en múltiples canales simultáneamente.

Exportar CSV de registros de chat

El enlace de descarga de los registros de chat aparecerá en la página de exportación de datos regular de oTree.

Consulta experimenter-chat.