Cadastro dos chats
A tabela dim_chat armazena as conversas da loja com cada consumidor e mostra a situação atual de cada uma: em que estado está, com quem está, qual foi a última mensagem e os dados do contato. Cada linha é uma conversa, identificada pela coluna chat_id. Com dados atualizados de hora em hora, entre 6h e 22h (horário de Brasília); de madrugada não há atualização.
Exemplo
Um consumidor que já foi atendido no mês passado volta a falar e hoje está com uma atendente. A conversa chat789 continua sendo uma linha só, que é atualizada a cada mudança:
• created_at mostra quando a conversa foi aberta pela primeira vez, no mês passado; updated_at e last_message_date mostram a última movimentação, hoje às 10:05.
• internal_state = USER, sales_person_id = atendente e csr_id = abc123, o atendimento em aberto.
• Quando a atendente finaliza, a mesma linha passa para internal_state = FINISHED e csr_id fica vazio.
• meta = {"name": "Maria", "phone": "5511900000000"}, com os dados do contato.
internal_state traz INITIAL (ainda sem atendente nem time), USER (com um atendente, indicado em sales_person_id), TEAM (na fila de um time, indicado em team_id), UNASSIGNED e FINISHED. As colunas csr_id, sales_person_id e team_id só ficam preenchidas enquanto há um atendimento em aberto: numa conversa finalizada elas vêm vazias. Para o histórico de atendimentos da conversa, use a dim_customer_support_request pelo chat_id.
A tabela guarda só a foto mais recente da conversa, não o histórico: uma conversa antiga com mensagem nova aparece com updated_at recente. A coluna meta é um texto em JSON com dados do contato, como name e phone; leia com get_json_object (ex.: get_json_object(tb.meta, '$.name')). Ela pode vir vazia ou com só parte das chaves.
Esta tabela tem as mesmas colunas da dim_chat_labels, sem as etiquetas. Use a dim_chat para contar conversas (uma linha por chat_id) e a dim_chat_labels quando precisar das etiquetas.
Atenção: Os registros desta tabela utilizam o fuso horário UTC, ou seja, para que as datas sejam referentes ao fuso horário brasileiro, é preciso inserir nas queries o fuso horário brasileiro.
SET TIME ZONE '-3:00';
SELECT tb.chat_id
,tb.platform
,tb.last_message_date
FROM dim_chat AS tb
;
Dicionário de dados
Variável | Tipo | Descrição | Obs |
chat_id | string | Código identificador do chat | Chave primária |
customer_cel_number | string | Número de telefone do cliente no chat | |
created_at | timestamp | Data de criação do chat | |
updated_at | timestamp | Data da última atualização do chat | |
retailer_id | string | Código identificador da loja. Em contas com mais de uma loja, separa os registros de cada uma | Chave estrangeira para a tabela dim_retailer |
order_id | string | Código identificador do pedido vinculado ao chat | Chave estrangeira para a tabela dim_orders |
customer_id | string | Código identificador do consumidor | Chave estrangeira para a tabela dim_customer |
csr_id | string | Código identificador do atendimento atual do chat. Registros mais antigos podem vir vazios | Chave estrangeira para a tabela dim_customer_support_request |
campaign_omni_id | string | Código identificador da última campanha enviada no chat | Chave estrangeira para a tabela dim_campaign |
last_finished_by | string | Código identificador do último usuário que finalizou atendimento no chat | Chave estrangeira para a tabela dim_user |
last_message_id | string | Código identificador da última mensagem do chat | Chave estrangeira para a tabela dim_message |
origin_team_id | string | Código identificador do time de origem do chat | Chave estrangeira para a tabela dim_team |
contact_owner | string | Código identificador do usuário responsável pelo contato (carteira) | Chave estrangeira para a tabela dim_user |
pipeline_stage | string | Código identificador da etapa do funil em que o chat está | Chave estrangeira para a tabela dim_funnel_stage |
sales_person_id | string | Código identificador do atendente responsável pelo chat | Chave estrangeira para a tabela dim_user |
team_id | string | Código identificador do time do chat | Chave estrangeira para a tabela dim_team |
first_unanswered_message_date | timestamp | Data da primeira mensagem do cliente ainda sem resposta | |
snoozed_until_date | timestamp | Data até quando a contagem do tempo de atendimento está adiada | |
last_message_date | timestamp | Data da última mensagem do chat | |
expires_at | timestamp | Data de expiração do chat | |
client_platform | string | Plataforma do cliente (ex.: Android, iOS, web) | |
fb_messenger_id | string | Código do Facebook Messenger associado ao chat | |
internal_state | string | Situação do chat (ex.: INITIAL, USER, TEAM, FINISHED) | |
last_message_client_platform | string | Plataforma de onde veio a última mensagem do cliente | |
platform | string | Canal do chat (ex.: WAB-OMNICHAT para WhatsApp, FBMESSENGER para Messenger) | |
retailer_chat_id | string | Código identificador da integração (canal/número) da loja usada no chat | |
unread_messages_count | int | Quantidade de mensagens não lidas no chat | |
is_replied | boolean | Indica se o chat já foi respondido | |
meta | string | Dados do contato no canal, em JSON (ex.: nome e identificador do usuário no WhatsApp) |
