Skip to main content

Iconos y colores de canal

Una sola fuente de verdad: CONNECTION_CHANNELS en features/connections/connections.constants.ts.

interface ConnectionChannelOption {
type: ConnectionChannelType;
icon: string; // clase Font Awesome 4
color: string;
enabled: boolean; // si se puede crear desde el selector
}
typeIconoColorenabled
webfa fa-globe#42a5f5true
whatsapp-qrfa fa-whatsapp#25d366true
whatsapp-cloudfa fa-whatsapp#128c7efalse
facebookfa fa-facebook#1877f2false
instagramfa fa-instagram#e1306ctrue (cambio de la rama; en main era false)

Los iconos son Font Awesome 4 (font-awesome ^4.7.0, cargado en angular.json > styles). CHANNEL_TYPE define las constantes de tipo con satisfies Record<string, ConnectionChannelType>.

Dónde se usan​

LugarComponenteUso
Selector de canalConnectionChannelModalComponentChip con el icono (fondo color + '26'), degradado sutil de la tarjeta (${color}14) e insignia "Próximamente" si enabled es falso
Tarjeta de conexiónConnectionsTableComponentIcono con [style.color] y degradado de cabecera linear-gradient(175deg, ${color}40, transparent 65%) (headerGradient); color de reserva #6c757d
Filtro de conexionesConnectionsFilterComponentOpciones de canal con nombre traducido (connections.channels.<type>)
Lista de chatsChatListItemComponentchannelOption y channelTooltip: icono del canal junto al ticket
Encabezado de conversaciónChatConversationComponentLo mismo en conv-header__channel-icon, con title

En el chat​

Tanto ChatListItemComponent como ChatConversationComponent resuelven el canal con:

const channelType = this.conversation?.channelType;
if (!channelType) return null;
return CONNECTION_CHANNELS.find((c) => c.type === channelType) ?? null;

El tooltip es conversation.connectionName (o el channelType si no hay nombre). Cuando el ticket no tiene conexión no se dibuja icono: el código documenta que "origen desconocido no es origen web". channelType llega al ChatConversation desde ticket.connection.channelType (chat-list.component.ts).

Cómo añadir un canal​

  1. Añadir el valor a ConnectionChannelType (core/interfaces/api/connection.interface.ts) y a CHANNEL_TYPE.
  2. Añadir la entrada en CONNECTION_CHANNELS con enabled: false hasta que exista el flujo de alta.
  3. Añadir claves i18n connections.channels.<type> y connections.channels.<type>Desc en es.json y en.json.
  4. Si el canal tiene flujo propio, ramificar en ConnectionsTableComponent.openChannelSelector() y en las acciones de la tarjeta.

:::note Facebook El backend habilita Facebook en webhooks y envío, pero el frontend lo mantiene enabled: false porque no hay flujo de alta (OAuth) para Facebook en esta rama. :::