A solução de CRM personalizada permite que as empresas aproveitem o portal da Contact Center AI Platform (CCAI Platform) ao usar um CRM que não é uma integração padrão atual com a CCAI Platform. A configuração personalizada funciona ao usar um CRM interno ou qualquer CRM não padrão.
Os agentes lidam com chamadas e chats, e os supervisores podem monitorar e extrair relatórios usando o portal da plataforma CCAI. Todos os detalhes sobre a sessão de chamada ou chat são armazenados em um arquivo de metadados de sessão. Esse arquivo pode conter mais de 20 pontos de dados, incluindo informações da sessão, transferências, duração do atendimento, participantes, informações de diagnóstico e muito mais. O arquivo de metadados da sessão pode ser analisado e usado para análise e rastreamento pós-sessão.
Os metadados de sessão e os arquivos de mídia enviados pelo consumidor são enviados para um serviço de armazenamento externo, e os agentes podem ver os arquivos de mídia enviados pelo consumidor diretamente no adaptador do agente durante a sessão.
Uma solução de CRM personalizada é implementada com uma combinação dos seguintes componentes. Alguns componentes podem ou não se aplicar à sua configuração:
Gerar o arquivo de metadados de sessão para cada sessão de ligação e chat
Enviar metadados e arquivos de mídia para um serviço de armazenamento externo
Integração de API genérica
URL de consulta personalizada
Atualização de registro de CRM por e-mail
Pesquisa de conta ou caso no adaptador do agente
Pré-requisitos
Para usar o recurso de CRM personalizado, primeiro configure o armazenamento externo. Consulte Armazenamento externo para soluções de CRM personalizadas para mais informações.
Metadados de sessão
O arquivo de metadados de sessão contém informações detalhadas sobre a sessão. Ele é enviado 15 minutos após o término da sessão. Consulte Arquivo de metadados de sessão para mais informações.
Métodos personalizados de interação e integração de CRM
| API genérica | URL personalizado | |
|---|---|---|
| Pesquisa de conta | Sim | Sim |
| Pesquisa de caso | Sim | |
| Atualização do caso | Sim | Não |
API genérica
O método de integração de API genérica permite usar a API do seu CRM personalizado para estabelecer uma conexão bidirecional com a CCAI Platform. Esse método integrado é igual à experiência de integração de CRM pronta para uso. O agente não precisa realizar uma ação para criar um registro de CRM para sessões de chamada ou chat, dependendo da configuração exclusiva da API. Ele pode permitir uma pesquisa e atualização de registros sem problemas.
URL personalizado
A opção "Link personalizado" permite que os agentes interajam com o CRM usando um link personalizado criado para cada sessão. Ao contrário da integração padrão com o CRM e da experiência com a API genérica, o agente precisa realizar uma ação para que um registro de CRM seja criado. Em alguns casos, isso pode ser apenas abrir uma guia com o link personalizado da sessão. Em outros, o agente pode precisar criar o registro manualmente.
Detalhes e configuração do URL de consulta personalizada
A funcionalidade básica do URL é realizar uma pesquisa de CRM, mas, dependendo do seu CRM, processos mais complexos podem ser acionados com base no conteúdo do URL personalizado. O URL do CRM personalizado pode ser configurado com variáveis que contêm informações da sessão e pode ser acessado no adaptador do agente durante a sessão. Depois que o URL for acessado, ele vai acionar o CRM personalizado para realizar uma pesquisa. Essa pesquisa de CRM é como os agentes podem usar um "pop-up de tíquete" para a sessão de chamada ou chat ativa. O processo de link personalizado depende exclusivamente da capacidade do CRM personalizado de processar esse link e modificá-lo ou reescrevê-lo, se necessário.
Os metadados de sessão, as gravações de chamadas e outros arquivos armazenados externamente não serão vinculados ao registro do CRM, a menos que o método de atualização de e-mail listado também seja usado.
Nessa configuração, o agente vai fazer login no portal da plataforma CCAI e no CRM em guias separadas. As ligações e os chats serão processados na guia da plataforma CCAI, e os detalhes do tíquete serão acessados em uma guia do CRM.
Para que essa configuração funcione:
O agente precisa estar conectado ao CRM no navegador.
O agente precisa estar conectado ao portal da plataforma CCAI no navegador
O URL de consulta personalizado precisa ser pré-configurado
Seu CRM precisa processar o URL personalizado para exibir o registro de CRM relevante.
Comportamento do URL de pesquisa personalizado
A plataforma CCAI só vai incluir parâmetros no URL que não estejam vazios.
A plataforma CCAI não armazena o URL gerado que contém ANI/UID/e-mail no banco de dados da plataforma CCAI após o término da sessão.
Configuração de URL de consulta personalizada
Devido à variação de identificadores exclusivos e recursos e comportamentos de CRM, você precisará criar dois URLs diferentes: um para sessões de IVR/PSTN/SMS e outro para sessões de SDK da Web e para dispositivos móveis. As sessões de IVR/PSTN/SMS usarão o ANI como identificador exclusivo, enquanto o SDK da Web e para dispositivos móveis provavelmente usará o CUID e o e-mail.
As seguintes variáveis podem ser usadas para configurar um URL de consulta:
| Variável | Valores |
|---|---|
{CUSTOMER_PHONE_NUMBER} |
O número de telefone do usuário final |
{ANI} |
O número de telefone do usuário final. Mantido para compatibilidade com versões anteriores. |
{CUID} |
ID do usuário personalizado |
{EMAIL} |
E-mail do usuário final |
{MENU_PATH} |
O caminho completo do menu da fila. Por exemplo, "Pedidos/Confirmação de pedido/Informações do pedido". |
{MENU_ID} |
ID do menu |
{CHANNEL} |
O canal da sessão. Valores possíveis:
|
{TYPE} |
O tipo de sessão. Valores possíveis para chamadas:
Valores possíveis para chats:
|
{SUPPORT_PHONE_NUMBER} |
O número de telefone da central de suporte para o qual o usuário final liga. |
{OUTBOUND_NUMBER} |
O número de telefone que um agente usa para fazer uma chamada. |
{SESSION_ID} |
O ID da sessão. Valores possíveis:
|
{CUSTOM_AGENT_ID} |
O campo opcional de ID do agente no objeto user. O ID do agente só pode ser obtido depois que a sessão é estabelecida e um agente é atribuído. Por esse motivo, configure sua instância para atrasar a criação de registros de chamadas ou
conversas, permitindo que essa variável seja definida. Você
pode atrasar a criação de registros de chamadas ou chats em Configurações >
Gerenciamento de operações > Detalhes da criação de registros do CRM. Para
mais informações, consulte Detalhes
da criação de registros de CRM. |
Configuração do portal da plataforma CCAI
Faça login no portal da plataforma CCAI usando uma conta com o papel de administrador atribuído.
Acesse Configurações > Configurações do desenvolvedor.
Na seção "CRM", selecione CRM personalizado.
Em Pesquisa de CRM, insira os URLs personalizados.
Selecione o formato do número de telefone que será usado nas solicitações do CRM.
Clique em Salvar alterações.
Se você ainda não tiver feito isso, configure o serviço de armazenamento externo. Para mais informações, consulte Armazenamento externo.
Atualização de registro de CRM por e-mail
Em configurações como o URL de pesquisa personalizado, depois que uma sessão é concluída, os metadados de sessão precisam ser atualizados no CRM. Com esse recurso, a plataforma CCAI pode enviar automaticamente dados de sessão por e-mail. Cerca de 15 minutos após o término de uma sessão, um e-mail é enviado para um local configurado, e o conteúdo do e-mail é usado para atualizar um registro no seu CRM. Esse recurso pode ser configurado globalmente e por fila. Depois que o e-mail for recebido, seu CRM poderá ser configurado para atualizar ou criar um novo registro de CRM para a sessão.
Detalhes de e-mail
Enviado por no-reply@ccaiplatform.com
Contém:
Subject line
Corpo com os metadados de sessão na sintaxe JSON
Anexo em formato TXT com a transcrição do chat, quando aplicável
A plataforma CCAI vai aguardar 15 minutos após o término da sessão e enviar o e-mail.
Os e-mails são enviados apenas para sessões concluídas. Ele não é enviado para sessões com falha ou abandonadas.
Configuração global
Faça login no portal da plataforma CCAI usando uma conta com o papel de administrador atribuído.
Acesse Configurações > Configurações do desenvolvedor.
Na seção "CRM", verifique se a opção CRM personalizado está selecionada.
Ative a opção Enviar resultado da sessão por e-mail.
Insira o endereço de e-mail para onde você quer que a mensagem seja enviada.
Clique em Salvar alterações.
Configuração por fila
Faça login no portal da plataforma CCAI usando uma conta com o papel de administrador atribuído.
Acesse Configurações > Fila e selecione qualquer subfila.
Ative a opção Enviar resultado da sessão por e-mail.
Insira o endereço de e-mail para onde você quer que o e-mail seja enviado.

Clique em Salvar configuração personalizada de CRM.
Herança e substituição de configurações
| Configurações | Comportamento |
|---|---|
| Global = NÃO ativado Fila = NÃO ativada |
Não enviar para todas as filas. |
| Global = NÃO ativado Fila = Ativado |
A configuração da fila (ou seja, o estado ativado/desativado) substitui a configuração global. O e-mail é enviado de uma determinada fila para um endereço de e-mail definido na configuração da fila. |
| Global = Ativado Fila = NÃO ativada |
A configuração da fila (endereço de e-mail, estado ativado/desativado) herda a configuração global. O e-mail é enviado de uma determinada fila para um endereço de e-mail definido na configuração global. |
| Global = Ativado Fila = Ativado |
A configuração da fila (endereço de e-mail) substitui a configuração global. O e-mail é enviado de uma determinada fila para um endereço de e-mail definido na configuração da fila. Se o endereço de e-mail estiver vazio, o e-mail não será enviado. |
Experiência com o agente
Consulta de registro de CRM
Faça login no portal da plataforma CCAI usando uma conta com o papel de agente atribuído.
Abra o adaptador de chamada ou chat.
Use o botão Abrir em uma nova janela do navegador para acionar a pesquisa.
Use o botão Copiar link para copiar o URL de consulta para a área de transferência.

Armazenamento externo para soluções de CRM personalizadas
O armazenamento externo para soluções personalizadas permite o uso de um serviço de armazenamento externo para armazenar e recuperar metadados de sessão da plataforma CCAI, gravações de chamadas, transcrições de chat e arquivos de mídia enviados pelo consumidor. Os arquivos são armazenados fora de um CRM.
Para configurar o armazenamento externo, você precisa ter:
Uma conta válida da CCAI Platform com as funções de administrador e agente atribuídas para configuração e teste
Um serviço de armazenamento externo
Estrutura da pasta
A estrutura de pastas a seguir será organizada no armazenamento externo em Caminho da pasta:
ujet-chat-transcripts
ujet-media
ujet-metadata
ujet-voice-recordings
ujet-voicemails
Formatos de arquivo e convenções de nomenclatura
Os seguintes tipos de arquivo podem ser enviados para o serviço de armazenamento externo. Os arquivos são criptografados durante o trânsito usando HTTPS:
| Arquivo | Nome |
|---|---|
| Gravações de ligações | - call-{id}.mp3 - call-{id}.wav |
| Arquivos de mídia | - call-{id}-photo-{photo-id}.jpg - call-{id}-video-{video-id}.mp4 - chat-{id}-photo-{photo-id}.jpg - chat-{id}-video-{video-id}.mp4 |
| Transcrições de chats | - chat-{id}.txt |
| Metadados de sessão | - call-{id}.json - chat-{id}.json |
Experiência do agente e do supervisor
Durante a chamada ou sessão de chat, as fotos e os vídeos enviados pelo consumidor usando ações inteligentes são exibidos no adaptador do agente.
Se você estiver usando a interação de CRM de URL personalizado combinada com o método de atualização de e-mail do arquivo de metadados de sessão, os agentes e supervisores poderão acessar as informações da sessão usando seu servidor externo.
Configurar o serviço de armazenamento externo
Siga estas etapas para configurar o armazenamento externo:
Faça login no portal da plataforma CCAI usando uma conta com o papel de administrador atribuído.
Acesse Configurações > Configurações do desenvolvedor.
Na página "Configurações do desenvolvedor", acesse a seção Armazenamento externo.
Ative o armazenamento de informações fora dos servidores de CRM, alternando a chave para Ativado, e selecione os tipos de arquivos que serão armazenados.
Na seção "Configuração do servidor", selecione o tipo de armazenamento e conclua as etapas de configuração: servidor SFTP, bucket do Google Cloud .
Servidor SFTP
Insira o host do SFTP (URL ou endereço IP).
Digite o número da porta.
Insira o ID do usuário de login do SFTP.
Se o servidor SFTP exigir uma senha para autenticação, insira-a no campo Senha.
Se o servidor SFTP exigir uma chave privada para autenticação, marque a caixa de seleção Chave privada SSH.
Insira (copie e cole) a chave privada SSH.
Digite a senha longa da chave privada. Se as informações da sessão precisarem ser armazenadas em uma pasta específica no servidor SFTP, marque a caixa de seleção Caminho da pasta e insira o caminho da pasta SFTP.
Clique em Salvar alterações.
Cloud Storage
Insira o Nome do bucket de destino Google Cloud .
Insira o Google Cloud ID do cliente.
Insira a Google Cloud chave secreta do cliente.
Se as informações da sessão precisarem ser armazenadas em uma pasta específica no bucket do Google Cloud , marque a caixa de seleção Caminho da pasta e insira o caminho da pasta doGoogle Cloud .
Clique em Vincular e salvar.
Como testar a configuração do armazenamento externo
Para CRMs com integração padrão:
Faça login no CRM.
Faça login na plataforma CCAI no CRM usando as credenciais da plataforma CCAI com um papel de agente atribuído.
Faça uma ligação ou envie uma mensagem. O registro de CRM associado à sessão é exibido.
Quando a sessão terminar, o arquivo de transcrição será enviado em segundos.
Acesse diretamente a pasta de armazenamento do servidor externo e verifique se o arquivo está disponível.
Como enviar arquivos de sessão para o CRM
Quando o armazenamento externo está ativado, as configurações para desenvolvedores de URLs de armazenamento do CRM e de armazenamento externo permitem enviar arquivos de sessão e decidir qual fonte usar para exibir arquivos no adaptador do agente.
Para ver essas configurações, o armazenamento externo precisa estar ativado em Configurações > Configurações do desenvolvedor > Armazenamento externo. Ative a opção Ativar o armazenamento de informações fora dos servidores do CRM.
Armazenamento de CRM
Acesse Configurações > Configurações do desenvolvedor > Armazenamento externo > Armazenamento do CRM.
Marque a caixa ao lado de Também enviar arquivos de sessão para o CRM para enviar arquivos de sessão, como gravações de chamadas ou transcrições de chat, para seu CRM e para o armazenamento externo configurado.
Clique em Salvar alterações.
Se a caixa de seleção estiver marcada, as gravações serão armazenadas no CRM e no armazenamento externo.
URLs de armazenamento externo
O URL de armazenamento externo é usado em dois lugares:
O adaptador do agente.
Relatórios: mostra o URL de mídia no relatório e nos menus, como "Configurações", "Chamadas" e "Concluídas".
Acesse Configurações > Configurações do desenvolvedor > Armazenamento externo > URLs de armazenamento externo.
Selecione os URLs de CRM ou URLs de armazenamento externo de origem para mostrar arquivos no adaptador do agente.
Clique em Salvar alterações.
Armazenamento de CRM
Se a caixa de seleção do armazenamento do CRM estiver desmarcada, as gravações serão armazenadas apenas no armazenamento externo, e um link para o CRM será usado.
Se a caixa de seleção estiver marcada, as gravações serão armazenadas no CRM e no armazenamento externo.
URLs de armazenamento externo
O URL é usado em dois lugares:
Uma delas é mostrar a mídia no adaptador da plataforma CCAI. O armazenamento externo ou o CRM.
A outra está no relatório. Revelamos o URL de mídia nos relatórios e nos menus, como "Configurações", "Chamadas" e "Concluídas".
Mostrar CRM personalizado no portal da CCAI Platform
Ao usar a integração de CRM personalizada com seu próprio CRM personalizado, é possível carregar seu CRM em uma página dedicada no portal da plataforma CCAI. Depois de ativada, a guia "CRM" no portal do CCAI Platform carrega e exibe sua página de CRM personalizada. Isso pode ser configurado em Configurações do desenvolvedor > CRM.
Esse recurso permite que os agentes lidem com sessões de suporte em tempo real usando os adaptadores de chamada e chat da plataforma CCAI enquanto trabalham no CRM personalizado. Isso inclui analisar os detalhes da conta e do registro abertos automaticamente, além de arquivos e dados específicos da sessão transmitidos pelo app para dispositivos móveis ou pelos consumidores, tudo usando o portal da plataforma CCAI.
Configurar uma página de CRM personalizada
Para configurar uma página de CRM personalizada, siga estas etapas:
No portal da plataforma CCAI, clique em Configurações > Configurações do desenvolvedor. Se o menu Configurações não aparecer, clique em Menu.
No painel CRM, clique em CRM personalizado.
Ative a opção Mostrar CRM no portal da plataforma CCAI.
Em URL de visualização, insira o URL da sua página de CRM personalizada e clique em Salvar.
Abrir pop-up de tela de URL personalizado
Use Abrir URL personalizado para exibir um pop-up de tela de URL personalizado quando um contato não for encontrado no sistema. Crie um registro de CRM com um ID de conta temporário e acionar um link personalizado com parâmetros com base na configuração do nível da fila.
Ativar o pop-up de tela por fila
Acesse Configurações > Fila > URA e clique em uma fila para editar.
Acesse Abrir URL personalizado no painel.
Insira um URL para abrir uma tela pop-up.
Inclua os parâmetros de variável {ACCOUNT_ID} e {PHONE_NUMBER} no URL.
Um exemplo é fornecido.
- Clique em Salvar.
Integração de API genérica de CRM personalizado
O método de integração de API genérico permite usar a API do seu CRM para estabelecer uma conexão bidirecional com o CCAI Platform. Esse método tem a mesma sensação da experiência de integração de CRM pronta para uso.
O agente não precisa realizar nenhuma ação para criar um registro de CRM para sessões de chamada ou chat. Dependendo da configuração exclusiva da API, ela pode permitir uma pesquisa e atualização de registros sem problemas.
Terminologia
Período do contrato |
Descrição |
Conta |
É usado para se referir à entidade Conta/Contato/Cliente/Lead no CRM. Seu CRM pode ter outro nome para essa entidade. As contas contêm registros. |
Gravar |
É usado para se referir à entidade de caso/tíquete/conversa/incidente no CRM. Seu CRM pode ter outro nome para essa entidade. Os registros pertencem às contas. |
Comentário |
Ele é usado para se referir à entidade de comentário/observação no CRM. Seu CRM pode ter outro nome para essa entidade. Os comentários pertencem aos registros. |
Configurações da API
Esta seção descreve as configurações específicas da API de CRM personalizada.
Método de autenticação
A plataforma CCAI é compatível com três métodos de autenticação para seu CRM:
Autenticação básica: configure as credenciais de autenticação que incluem Nome de usuário e Senha.
Cabeçalho personalizado: configure os pares de chave-valor do cabeçalho personalizado: Chave do campo e Valor do campo. Insira quantos pares forem necessários.
OAuth: a plataforma CCAI é compatível com o protocolo padrão do setor para autorização OAuth 2.0. Especifique as informações do OAuth se precisar ativar a opção "Incluir o URL de redirecionamento como parte do URL de autorização e do URL de token".
Configure os seguintes valores:
URL de autorização (obrigatório)
URL do token (obrigatório)
ID do cliente (obrigatório)
Chave secreta do cliente (obrigatória)
Escopo
Estado
Tipo de acesso
Formato do número de telefone
Selecione o formato do número de telefone que será usado nas solicitações de CRM:
Automático: criar: +1 222 333 4444, pesquisar: *222*333*4444
E.164: +12223334444
Local dos EUA: 2223334444
Padrão local dos EUA: (111) 222-3333
Internacional: +1 222 333 4444
Tempo limite da solicitação de API
Configure o tempo limite da solicitação de API de 1 a 10 segundos usando o menu suspenso. Esse tempo limite será aplicado a todos os endpoints que você configurar.
URLs de consulta de CRM
Especifique os URLs de pesquisa que serão usados para direcionar um agente para a conta e o registro atuais.
Insira os URLs de pesquisa como aparecem no CRM quando você tem uma conta ou página de registro aberta no navegador.
Também é possível usar URLs de consulta de CRM com o SDK da Web e os SDKs para dispositivos móveis. É possível configurar os SDKs para pesquisar informações de conta e registro de CRM para exibição no adaptador do agente. Para uma lista completa de URLs de pesquisa de CRM, consulte Parâmetros de URL de solicitação.
URL de pesquisa de conta
Use a variável {ACCOUNT_ID} para inserir o ID da conta real.
Exemplo:
https://www.example.com/contact/{ACCOUNT_ID}
URL de pesquisa de registro
Use a variável {RECORD_ID} para inserir o ID do registro real.
Exemplo:
https://www.example.com/record/{RECORD_ID}
Endpoints de API
Essa é a configuração mais importante para a API genérica.
Para disponibilizar a pesquisa de conta para seus agentes, você precisa configurar os endpoints Encontrar uma conta e Criar uma conta.
Além disso, é possível configurar os endpoints Encontrar um registro e Criar um registro para permitir que os agentes pesquisem ou criem registros. Para isso, é necessário configurar a conta na etapa anterior.
Por fim, se você inserir os endpoints Atualizar um registro, Fazer upload de um arquivo e Comentar, as atualizações de registro serão ativadas. Para isso, é necessário configurar o registro da etapa anterior.
Configuração do endpoint
Defina as configurações a seguir:
URL de solicitação: URL do endpoint de API.
Escolha o método de solicitação entre POST, GET, PUT ou PATCH.
Especifique os parâmetros da solicitação. É possível usar as variáveis definidas pela plataforma da CCAI para transmitir as informações necessárias (consulte a tabela abaixo). Além disso, é possível inserir texto simples ou números como valores de parâmetros. Você pode adicionar quantos parâmetros quiser.
Se o endpoint for POST/PUT/PATCH, a CCAI Platform oferece controles de ajuste sobre como a solicitação é criada. Escolha Formato de dados da solicitação em Propriedade ou Contêiner. Ele especifica o formato do JSON da solicitação.
Property. Isso indica que o objeto de solicitação é um mapa de propriedades básico quando o CCAI Platform cria o corpo da solicitação com base em parâmetros.
Contêiner. Isso indica que os dados do objeto de solicitação a serem enviados precisam ser aninhados em uma estrutura. Escolha Tipo de contêiner em Mapa ou Matriz. Insira o Nome do contêiner. Ele é usado como o nome do objeto pai ao criar o corpo da solicitação com base em parâmetros.
Exemplo: Map: { container_name : { ...parameters } }
Exemplo: matriz: {container_name : [ { ...parameters } ] }
Insira o Local dos dados de resposta. Ele é usado para localizar o objeto de resposta de destino na resposta JSON.
Parâmetros de URL de solicitação
| Parâmetro | Variável | Comentário |
|---|---|---|
| ID do agente | {AGENT_ID} |
O ID interno do agente. |
| ID personalizado do agente | {AGENT_CUSTOM_ID} |
Campo opcional do perfil do usuário. |
| E-mail do agente | {AGENT_EMAIL} |
O e-mail do agente que respondeu, se aplicável. |
| Nome do usuário final | {NAME} |
|
| Nome do usuário final | {FIRST_NAME} |
Com base em Name |
| Sobrenome do usuário final | {LAST_NAME} |
Retirado de Name, o padrão é -- se estiver ausente. |
| ID externo | {UJET_ID} |
ID do usuário final da plataforma CCAI |
{EMAIL} |
||
| Tipo de chamada/sessão | {SESSION_TYPE} |
|
| Número de telefone do usuário final | {PHONE_NUMBER} |
Formatado usando a opção de configuração |
| ID da ligação | {Call_ID} |
ID da chamada da plataforma CCAI. |
| ID do chat | {Chat_ID} |
ID do chat da plataforma CCAI. |
| Idioma | {LANG} |
|
| UID personalizado | {CUSTOM_USER_ID} |
Para dispositivos móveis: é o lado esquerdo do e-mail. Por exemplo, test.user3 de test.user3@test.co |
| ID da conta | {ACCOUNT_ID} |
Encontrado ao chamar o endpoint de localização/criação de contato. |
| ID do registro | {RECORD_ID} |
Encontrado ao chamar o endpoint de registro de localização/criação. |
| ID da sessão | {SESSION_ID} |
ID da sessão da plataforma CCAI |
| Caminho do menu | {MENU_PATH} |
|
| Número de telefone de saída | {OUTBOUND_PHONE_NUMBER} |
Formatado usando a opção de configuração |
| Nome da fila | {QUEUE_NAME} |
|
| ID da fila | {QUEUE_ID} |
O ID interno da fila. |
| Nome do SDK | {SDK_NAME} |
Nome de usuário final, conforme indicado no SDK da Web ou no SDK para dispositivos móveis. |
| E-mail do SDK | {SDK_EMAIL} | Endereço de e-mail do usuário final, conforme indicado no SDK da Web ou para dispositivos móveis. |
| SDK Phone | {SDK_PHONE} | Número de telefone do usuário final, conforme indicado no SDK da Web ou para dispositivos móveis. |
| Identificador do SDK | {SDK_IDENTIFIER} |
Identifica um usuário final ou uma conta do SDK para Web ou dispositivos móveis. Não inclua PII nessa propriedade. Ao criar uma conta, esse identificador é obrigatório na solicitação. |
| ID da sessão do SmartAction | {SMART_ACTION_SESSION_ID} |
|
| SmartAction: verificação | (Em breve) | |
| SmartAction: entrada de texto | (Em breve) | |
| Classificação | {RATING} |
Disponível apenas se um usuário tiver deixado uma |
| Mensagem de feedback | {FEEDBACK} |
Disponível apenas se um usuário tiver deixado uma |
| Duração da chamada | {CALL_DURATION} |
No formato mm:ss |
| Tempo de espera | {HOLD_TIME} |
No formato mm:ss |
| Tempo de espera | {WAIT_TIME} |
No formato mm:ss |
| Duração do trabalho após a ligação | (Em breve) | |
| Tipo de dispositivo | {DEVICE_TYPE} |
|
| Desconectado por | {DISCONNECTED_BY} |
|
| Canal | {CHANNEL} |
|
| Assunto do registro | {TICKET_SUBJECT} |
Usado como título do registro |
| Descrição do registro | {TICKET_DESCRIPTION} |
|
| HTML da descrição do registro | {TICKET_DESCRIPTION_HTML} |
Igual à descrição, mas formatada para HTML |
| Corpo do comentário | {COMMENT_BODY} |
Disponível apenas na situação de adicionar comentário (salvar classificação, encerrar chamada/chat, chamada/chat iniciado) |
| Dados de arquivo | {FILE_DATA} |
Disponível apenas no endpoint de upload de arquivos, mas contém o base64 ou os dados para o formulário de várias partes. |
Funções de parâmetro de URL de solicitação
As funções são fornecidas para ajudar com as variáveis dinâmicas da plataforma CCAI. Essas funções só estão disponíveis para uso na seção Parâmetro de solicitação das configurações do endpoint.
O valor resultante criado de uma função será uma string. Se nenhum valor for retornado da função, o parâmetro será removido da lista de parâmetros na solicitação antes da execução.
| Função | Sintaxe da função | Descrição |
|---|---|---|
| Valor padrão | =DEFAULT_VALUE(val1, val2) |
O valor vai usar val1, a menos que seja nulo ou vazio, e vai voltar para
val2. |
Concatenação Or | =CONCAT_OR(val1, val2,
val3) | Concatenação de vários valores com
or. Exemplo: "val1 ou val2 ou val3" |
Concatenação And | =CONCAT_AND(val1, val2,
val3) | Concatenação de vários valores com
and. Exemplo: "val1 and val2 and val3" |
Exemplos
Veja a seguir alguns exemplos de uso da função de parâmetro de URL de solicitação.
Padrão
O exemplo a seguir usa DEFAULT_VALUE no Create a Record Endpoint.
A chave e o valor para a configuração do agente usam a função padrão para ter um substituto em
caso de um valor vazio para um e-mail de agente. O e-mail do agente pode estar vazio na criação do registro por alguns motivos: um cliente pode ter encerrado a chamada de URA antes que um agente atribuído atendesse a chamada recebida ou, no caso de chats, um registro será criado antes que um agente responda. Dessa forma, os parâmetros obrigatórios podem ser
definidos como valores seguros até atualizações posteriores ou definidos em casos de chamadas abandonadas.

Concatenação
O exemplo a seguir usa CONCAT_OR no endpoint
Find an Account by Query. Este exemplo é específico para o Zoho CRM, mas mostra como o CONCAT_OR pode ser
usado. CONCAT_AND segue as mesmas regras, mas conecta valores com and
em vez de or. Consulte os casos a seguir para ver os valores presentes no endpoint
no momento da execução e o valor resultante transmitido como o parâmetro
de solicitação.

| Chaves presentes | Valor resultante |
|---|---|
ACCOUNT_ID |
(Id:equals:<uuid>) |
ACCOUNT_ID, EMAIL |
(Id:equals:<uuid>) ou (Email:equals:kim@example) |
PHONE_NUMBER, EMAIL |
(Phone:equals:+12223334444) ou (Email:equals:kim@example) |
Conta de API
Os endpoints de conta da API são compatíveis com a integração com contas no CRM.
As chamadas para endpoints que retornam um erro 400 são repetidas. As chamadas que retornam outros erros não são repetidas. As novas tentativas continuam por uma semana, diminuindo com uma redução exponencial. Para informações sobre fluxos de API, consulte API genérica de CRM personalizado: fluxos.
Encontrar uma conta por endpoint de consulta (antigo endpoint de localização de conta)
Esse endpoint é usado para encontrar uma conta por número de telefone, e-mail ou ID interno de CRM. Esse é o endpoint padrão usado para encontrar uma conta.
Exemplo de resposta:
{
"id": 123,
"name": "Kim",
"phone": "11234567890",
"email": "Kim@agents.co"
}
Encontrar uma conta pelo endpoint de ID
Esse endpoint é usado para encontrar uma conta pelo ID. Geralmente, esse ID faz parte do URL. A validação de URL também vai considerar se o URL não foi formado com o ID. Nesse caso, esse endpoint não será usado. Isso vai seguir os padrões REST. Se um erro 404 for retornado em uma pesquisa com falha, a próxima etapa será a localização por consulta.
Exemplo de resposta:
{
"id": 123,
"name": "Kim",
"phone": "11234567890",
"email": "Kim@agents.co"
}
Criar um endpoint de conta
Esse endpoint é usado para criar uma conta se não encontrarmos uma. A maioria dos CRMs exige que os registros sejam anexados às contas. Para criar um fluxo unificado, aplicamos esse requisito a todos os CRMs.
Registro de API
Os endpoints de registro da API permitem a integração com registros ou casos no seu CRM.
Encontrar um registro por consulta (antigo endpoint de localização de um registro)
Esse endpoint é usado para encontrar um registro por um critério. Em geral, isso é usado para encontrar registros associados a uma conta. Se a CCAI Platform estiver configurada para reutilizar registros, o registro encontrado será usado. Esse é o endpoint padrão usado para encontrar um registro.
Exemplo de resposta:
{
"id": 456,
"subject": "Record title",
"status": "open", // enumerated status open/closed, or 1,2,3
"contactId": 123, // contact attached to ticket
"phone": "11234567890", // contact phone
}
Criar um endpoint de registro
Esse endpoint é usado para criar um registro. Um novo registro será criado se um registro não for encontrado na solicitação Encontrar um registro ou se a plataforma CCAI estiver configurada para não reutilizar registros existentes.
Exemplo de solicitação:
{
"id": 123,
"subject": "Record title",
"description": "A longer description of the record, can be formatted in html",
"phone": "11234567890", // can be saved in multiple formats
"contactId": 123,
"sourceType": "PHONE", // PHONE/CHAT
"menu": "queue1",
"direction": "outgoing",
"rating": 5, // 1-5 scale
"feedback": "the agent was great!" // description of rating
}
Atualizar um endpoint de registro
Esse endpoint é usado para atualizar um registro. Ele atualiza o título e a descrição do registro. Esse endpoint também funciona opcionalmente para atualizar o registro de acordo com os eventos da CCAI Platform, como salvar a classificação de CSAT, eventos de encerramento de chamada ou chat, filas selecionadas, verificação de usuários e outros.
Fazer upload de um endpoint de arquivo
Esse endpoint é usado para fazer upload de um anexo.
Escolha o Tipo do endpoint de upload.
Formulário codificado em Base64
Formulário de várias partes
Selecione os arquivos que você quer anexar
Gravações de chamadas
Transcrição do chat
Mensagens de correio de voz
Google Fotos
Vídeos
Arquivo de metadados da sessão
Escolha Tipo de anexo em ID e URL do anexo. Ele especifica o formato do JSON de resposta.
ID
ID do anexo. Insira o local de um parâmetro na resposta JSON para o ID do anexo. Ele vai estar disponível para o URL do criador de anexos como {ATTACHMENT_ID}.
URL do criador de anexos. Insira o URL para fazer o download do anexo do arquivo. RECORD_ID e ATTACHMENT_ID são variáveis disponíveis.
Exemplo:
https://www.example.com/Accounts/{RECORD_ID}/Attachments/{ATTACHMENT_ID}URL do anexo
Insira o local de um parâmetro na resposta JSON para o URL de download do arquivo.
Marque a caixa de seleção Adicionar comentário ao registro do CRM se quiser que a plataforma CCAI deixe um comentário em um registro quando um arquivo for enviado. A configuração de formato de texto do endpoint de comentário será respeitada para esses comentários.
O exemplo a seguir é um formulário de várias partes que usa POST/PUT/PATCH:
{
"file": <file data>
"id": 123, // optional, this can also just be part of the URL;
// for example https://example-customer.com/upload/record/{RECORD_ID}
}
Exemplo de resposta:
Exemplo A: um URL de download existe
{
"id": 123,
"url": "https://some-hosted-url.com"
}
Exemplo B
Nesse caso, não há um URL de download, mas há um endpoint de anexo de download que usa esse ID. Por exemplo, https://www.customer-api.com/record/{RECORD_ID}/Attachments/{ATTACHMENT_ID}.
{
"id": 123
}
Endpoint de comentário
Esse endpoint é usado para adicionar um comentário a um registro. Se o endpoint estiver configurado, a plataforma CCAI vai adicionar comentários aos registros com os eventos:
início da ligação ou do chat
fim da ligação ou do chat
Classificação e comentário de CSAT
pacote de dados do cliente
transferir comentários
código de disposição e observações
perguntas e respostas da pesquisa
Escolha Formato de texto para comentários. Se a caixa de seleção Converter texto em HTML estiver marcada, o texto estará no formato HTML ou em texto simples, caso contrário.
Exemplo de solicitação, POST/PUT/PATCH:
{
"comment": "Some text",
// string can also be formatted on CCAI Platform side as HTML).
"id": 123,
// optional, this can also just be part of the URL;
// for example https://example-customer.com/comment/record/{RECORD_ID}
}
API genérica de CRM personalizada: fluxos
A integração do CRM personalizado (API genérica) da plataforma CCAI funciona como um conjunto de fluxos. No início de uma chamada, chat ou correio de voz, a plataforma executa as etapas de conta e registro configuradas, que encontram ou criam uma conta e um registro (como um tíquete ou caso) no CRM. Durante e após a interação, ele também executa ações como comentários, atualizações de registros e uploads de arquivos. Os fluxogramas a seguir mostram quando cada etapa é executada e o que precisa ser configurado para que isso aconteça.
Quando os fluxos são executados
Esses fluxos são executados em diferentes pontos de uma interação. As etapas de conta e registro são executadas durante a interação. As gravações, transcrições e correios de voz são enviados após o término da interação, junto com o comentário, o registro de atualização e outras ações pós-sessão. Os anexos (fotos, vídeos, documentos e áudios) são enviados conforme são compartilhados durante a interação. Antes de um desses fluxos ser executado:
- O acionador da ação ocorreu. Por exemplo, um arquivo está disponível para upload ou a chamada, o chat ou o correio de voz foi encerrado.
- A ação relevante está ativada nas configurações do CRM personalizado. Por exemplo, o tipo de arquivo está ativado para upload ou o endpoint de comentário ou atualização da API está configurado.
- Para qualquer ação que grave no CRM (fazer upload para um registro, postar um comentário ou atualizar um registro), os endpoints necessários são configurados e um registro existe para a sessão. Se o registro ainda não tiver sido criado, a plataforma vai reter a ação e executá-la automaticamente quando o registro existir.
O upload de um arquivo para o armazenamento externo não requer um registro. O requisito de registro se aplica às gravações de CRM.
Em algumas configurações, a conta atua como o registro da sessão: quando a criação do registro é ignorada e os dados da sessão são enviados para a conta do CRM, os endpoints de comentário, upload e atualização no nível da conta são usados em vez dos endpoints no nível do registro. Nos diagramas, "registro" inclui uma conta que atua como o registro da sessão quando essa configuração está ativada.
Para saber mais sobre a conta, o registro e a ordenação pós-sessão, o tempo de nova tentativa e o comportamento de erro, consulte Tratamento de erros, novas tentativas e ordenação de chamadas no CRM personalizado (API genérica).
Fluxogramas
Nesses fluxogramas, três resultados aparecem repetidamente:
| Resultado | O que significa |
|---|---|
| Ignorado | A ação está desativada pela configuração, então nada é enviado. |
| Retido | A ação é configurada, mas aguarda até que o registro exista e, em seguida, é executada automaticamente. |
| Configuração incompleta | Um endpoint obrigatório está ausente, então a ação não pode ser executada. |
Fluxo básico
Uma interação executa a etapa da conta, depois a etapa de registro e, em seguida, as ações pós-sessão. Cada etapa é executada somente quando as próprias configurações e endpoints são configurados. Os uploads de armazenamento externo são executados sem um registro. Outras ações pós-sessão gravam no CRM e aguardam até que um registro exista. Esta visão geral mostra o caminho pós-sessão. Os arquivos compartilhados durante a interação seguem o fluxo de upload de arquivos assim que ficam disponíveis.

Encontrar ou criar conta
A plataforma procura a conta usando um ID, número de telefone, e-mail ou um método de correspondência configurado. Se nenhuma conta for encontrada e a criação de conta estiver ativada, uma conta será criada. Se não houver detalhes de identificação, uma conta anônima será criada. Uma conta encontrada ou criada é vinculada à sessão.

Encontrar ou criar registro
Quando o modo de gravação está ativado, a plataforma reutiliza um registro atual para a sessão, se ele ainda estiver disponível. Caso contrário, ela cria um novo registro. O ID do registro pode vir com a solicitação ou de um registro já associado à interação. Quando um ID de registro é fornecido com a solicitação, a plataforma também adiciona um comentário informando se reutilizou esse registro ou criou um novo.

Atualizar registro
Quando um registro existe, a plataforma envia uma solicitação de atualização criada com base no modelo configurado. Se o endpoint de atualização estiver definido como um valor de marcador, a atualização será ignorada.

Ações pós-sessão
Após uma sessão, várias ações independentes podem ser executadas, cada uma acionada pelo próprio evento: uma chamada, um chat ou um e-mail finalizado, uma avaliação enviada, uma pesquisa respondida ou uma gravação, transcrição ou correio de voz pós-sessão que se torna disponível. Os uploads de arquivos seguem o fluxo de upload de arquivos. As ações de comentário e atualização gravam no CRM e aguardam até que um registro exista.

Comentário
Um comentário pode ser postado por uma ação de conclusão, classificação, pesquisa ou upload de arquivo. Ele requer um endpoint de comentário da API e um registro atual, e aguarda até que o registro exista. O comentário é postado como HTML ou texto simples, dependendo da sua configuração de comentários.

Fluxo de upload de arquivos
O armazenamento externo é ativado por tipo de arquivo. Quando ele está ativado para um tipo de arquivo, o arquivo vai para o armazenamento externo. Caso contrário, ele vai para o CRM. Uma configuração separada também pode fazer upload do arquivo para o CRM depois de enviá-lo para o armazenamento externo. As gravações no CRM (um anexo de arquivo ou um comentário) são executadas apenas quando um registro existe.

Adaptadores de agente
Um CRM personalizado oferece um método genérico para integrar adaptadores (widgets UI) aos sistemas de CRM. O sistema de CRM precisa ser capaz de lidar com a forma como os adaptadores são ativados e acionados nele.
Para integrar adaptadores de interface do usuário, geralmente é necessário um software ou aplicativo de CRM. Já oferecemos esse recurso para vários softwares de CRM, como Salesforce, Kustomer, Zendesk e outros.
iFrame
Os adaptadores de agente podem ser integrados a um CRM ou a qualquer outra ferramenta usando uma tag de iframe. Para saber mais sobre a tag de iframe HTML, consulte Tag de iframe HTML.
No entanto, o CRM precisa lidar com a forma como os adaptadores são apresentados ao usuário. Por exemplo, ela pode ter botões UI para mostrar e ocultar os adaptadores. Além disso, os adaptadores podem ser projetados para serem arrastáveis, permitindo que o agente os reposicione na tela conforme necessário. Os exemplos a seguir demonstram o formato do URL.
Adaptador de chamada:
https://tenant.loc.ccaiplatform.com/agent/?type=call&from=custom
Adaptador de chat:
https://tenant.loc.ccaiplatform.com/agent/?type=chat&from=custom
Modelo de iframe
Adaptador de chamada:
html
<iframe src="https://tenant.loc.ccaiplatform.com/agent/?type=call&from=custom" allow="microphone; camera; geolocation" width="290" height="600"></iframe>
Adaptador de chat:
html
<iframe src="https://tenant.loc.ccaiplatform.com/agent/?type=chat&from=custom" allow="microphone; camera; geolocation" width="450" height="590"></iframe>
Observe o seguinte ao incorporar os adaptadores:
O atributo
allowé obrigatório. O adaptador de chamada usa WebRTC e precisa demicrophone.cameraegeolocationsão necessários para o compartilhamento de tela e recursos de reconhecimento de local. Se as permissões não forem delegadas ao iframe, o navegador vai bloqueá-las silenciosamente, e o agente não poderá receber chamadas.Incorporar um adaptador por iframe. Cada adaptador mantém a própria conexão em tempo real. Portanto, os adaptadores de chamada e chat são dois iframes separados e postam eventos de forma independente.
O adaptador detecta que está incorporado pelo fato de que a janela mãe está em uma origem diferente. Disponibilize a página do host no seu próprio domínio, em vez do domínio do locatário da plataforma CCAI.
Parâmetros de URL
Os parâmetros de URL podem ser usados para fornecer mais informações ao software, como o tipo de interação (ligação ou chat), a origem da interação (personalizada) e outros detalhes relevantes.
Se a configuração de CRM do locatário não estiver disponível nas listas, o parâmetro De precisará ser definido como Personalizado.
Tipo
- Ligar
- Chat
De
- Personalizado (precisa corresponder à configuração de CRM do locatário). Ele precisa ser sempre custom para qualquer CRM que não esteja nas listas. Se não houver uma configuração de CRM, pule esse parâmetro.
Eventos em adaptadores de agente
Os adaptadores de agente publicam eventos que podem ser conectados pelo sistema de CRM, que processa as atualizações no CRM. Para isso, o CRM precisa detectar as postagens da janela mãe e ler os dados delas. Com base nos dados, ele pode acionar ações como abrir uma guia de tíquete para um ID de sessão específico.
Os adaptadores de chamada e de chat têm eventos específicos que podem ser usados para melhorar os recursos de CRM.
Adaptador de chamada
- Nova chamada
- Consumidor entrou
- A edição de chamadas foi iniciada
- A edição da chamada foi encerrada
- Encerrar chamada
Adaptador de chat
- Novo chat
- Chat ativo
- Mensagem recebida do chat
- Mensagem de saída do chat
- Formulário enviado
- Formulário preenchido
- Encerrar chat
- Chat dispensado
Ambos os adaptadores
- Login do agente
- Sessão de compartilhamento de tela iniciada
- O controle remoto da sessão de compartilhamento de tela mudou
- A sessão de compartilhamento de tela do dispositivo completo mudou
- A sessão de compartilhamento de tela foi encerrada
- Transferir
- Grupo adicionado
- O agente se conecta à sessão
- Sair do agente
- Agent Assist adicionado
- O assistente de tarefas virtual entrou
- O assistente de tarefas virtual saiu
- Variáveis de sessão de assistência com tarefas virtual recebidas
- Pop-up de registro de CRM
- Abrir página de terceiros
Formato de mensagem
Cada evento é enviado com a API
window.postMessage()
do navegador do iframe do adaptador para a janela pai direta (window.parent). A
janela pai o recebe como um
MessageEvent.
A mensagem tem as seguintes características:
event.dataé uma string JSON, não um objeto. Sempre chameJSON.parse(event.data)antes de ler. Como outros scripts na página também podem usarpostMessage()com payloads que não são JSON, envolva a análise em umtry/catch.O objeto analisado tem exatamente duas chaves de nível superior:
{ "type": "<event type>", "data": { ... } }typeé uma das strings listadas em Tipos de evento.datacontém os campos de evento descritos em Dados para eventos. Todos os campos específicos de eventos estão dentro dedata, nunca no nível superior.Os campos vazios são omitidos. Antes de postar, o adaptador remove qualquer campo em
datacujo valor sejanull,undefinedou uma string vazia. Trate cada campo como potencialmente ausente e não dependa de uma chave presente com um valornull.O adaptador posta com uma origem de destino de
*, então a mensagem é entregue a qualquer página que incorpore o iframe. O adaptador não restringe quem pode receber os eventos. O listener precisa compararevent.origincom o host do locatário (por exemplo,https://tenant.loc.ccaiplatform.com) e ignorar mensagens de qualquer outra origem para que um iframe diferente na mesma página não possa falsificar eventos do adaptador.Os valores de
typediferenciam maiúsculas de minúsculas e não são uniformes. A maioria éTitle_Case(New_Call,End_Chat). Alguns são em letras minúsculas (call_redaction_started,call_redaction_ended,agent_assist_added) ou camelCase (openThirdPartyPage). Compare com as strings exatas neste documento.Os eventos só são postados enquanto o adaptador está incorporado (a janela mãe é diferente). Se o adaptador for aberto como uma página de nível superior, nada será postado.
O exemplo a seguir mostra um listener mínimo que aplica essas regras:
// Replace with the origin of your tenant.
const ADAPTER_ORIGIN = 'https://tenant.loc.ccaiplatform.com'
window.addEventListener('message', (event) => {
if (event.origin !== ADAPTER_ORIGIN) {
return
}
let message
try {
message = JSON.parse(event.data)
} catch (e) {
// Not an agent adapter event; another script on the page posted it.
return
}
const { type, data = {} } = message
switch (type) {
case 'New_Call':
// data.call_id, data.agent_id, data.queue_id, ...
break
case 'New_Chat':
// data.chat_id, data.agent_id, data.queue_id, ...
break
case 'CRM_Record_Pop':
// data.recordUrl
break
default:
// Ignore event types you don't handle; new types may be added over time.
break
}
}, false)
Mensagens para o adaptador do agente
A comunicação é principalmente unidirecional (do adaptador para o host), mas a página do host pode enviar um
pequeno conjunto de comandos para o adaptador de chamada com postMessage(). Essas mensagens
são objetos simples (não strings JSON) com o seguinte esquema:
iframe.contentWindow.postMessage({
channel: '<channel name>',
eventType: '<event type>'
}, ADAPTER_ORIGIN)
Os comandos a seguir são compatíveis com o canal api:redaction. Eles são
usados para pausar e retomar a gravação para edição de chamadas na página do host.
eventType |
Descrição |
|---|---|
start_call_redaction |
Pause a gravação da chamada ativa para iniciar a edição. |
stop_call_redaction |
Retome a gravação da chamada ativa para interromper a ocultação. |
Observe o seguinte:
Os comandos só são executados quando a edição de chamada está ativada para o locatário e há uma chamada ativa. Caso contrário, o adaptador registra que a mensagem foi ignorada e não faz nada.
Quando o adaptador age de acordo com o comando, ele publica o evento
call_redaction_startedoucall_redaction_endedcorrespondente de volta ao host, para que você possa confirmar que o estado da gravação realmente mudou.Sempre transmita a origem do locatário como o segundo argumento para
postMessage(), em vez de*, para que o comando não seja entregue a uma página diferente se o iframe for navegado.O canal
crm:authorityanterior com os tipos de eventoredact_call:starteredact_call:stopainda é aceito pelo adaptador de CRM personalizado para compatibilidade com versões anteriores, mas as novas integrações precisam usarapi:redaction.
Para mais informações, consulte Encobrir chamadas.
Dados para eventos
call_id: é um identificador para uma ligação recebida por voz com IVR (unidade de resposta audível).chat_id: é um identificador de uma ligação recebida de mensagens (chat na Web ou em dispositivos móveis).cobrowse_session_id: é um identificador de uma sessão de compartilhamento de tela. Uma sessão de compartilhamento de tela pode ser iniciada em uma ligação ou sessão de chat.session_type: é o tipo de sessão, como voz, chat ou mensagem.va_data_parameters: todas as variáveis configuradas na fila para enviar ao agente virtual. Isso só é necessário para eventos que envolvem o agente virtual. Opcional.session_variable: todas as variáveis do agente virtual que são enviadas para a plataforma CCAI no payload. Opcional.custom_sip_headers: permite que cabeçalhos SIP personalizados de chamadas SIP recebidas apareçam no log de eventos POST. Ele só é necessário se cabeçalhos SIP personalizados forem usados. Opcional.custom_data_secured: contém dados personalizados assinados do seu servidor. Opcional.custom_data_not_secured: contém dados personalizados não assinados da sua página da Web. Para mais informações, consulte Dados personalizados não assinados do Chat. Opcional.
IDs de agentes
agent_id: é um identificador de um agente.from_agent_id: usado ao encaminhar chamadas ou chats de um agente para outro, para indicar o agente de origem.to_agent_id: usado ao encaminhar chamadas ou chats de um agente para outro, para indicar o agente de destino.agent_custom_id: é um ID de agente do perfil de usuário, se ele tiver sido inserido no perfil. Opcional.from_agent_custom_id: usado ao encaminhar chamadas ou chats de um agente para outro, para indicar o agente de origem.to_agent_custom_id: usado ao encaminhar chamadas ou chats de um agente para outro, para indicar o agente de destino.agent_email: o endereço de e-mail do agente.from_agent_email: usado ao encaminhar chamadas ou chats de um agente para outro, para indicar o agente de origem.to_agent_email: usado ao encaminhar chamadas ou chats de um agente para outro, para indicar o agente de destino.
IDs de agente virtual
virtual_agent_id: é o número de ID atribuído a um agente virtual específico.
IDs de fila
queue_id: é o identificador de uma fila da plataforma CCAI e só existe quando a chamada se origina de uma fila.from_queue_id: usado ao encaminhar chamadas ou chats de uma fila para outra, para indicar a fila de origem.to_queue_id: usado ao encaminhar chamadas ou chats de uma fila para outra, para indicar a fila de destino.queue_path: é o caminho para uma fila da plataforma CCAI e só existe quando a chamada se origina de uma fila.from_queue_path: usado ao encaminhar chamadas ou chats de uma fila para outra, para indicar a fila de origem.to_queue_path: usado ao encaminhar chamadas ou chats de uma fila para outra, para indicar a fila de destino.
Campaign ID
campaign_id: ID da campanha da plataforma CCAI. Eles só são incluídos se o tipo de chamada for uma chamada de campanha.campaign_name: um nome de campanha da plataforma CCAI. Eles só serão incluídos se o tipo de chamada for uma chamada de campanha.
Mensagem
message: evento que indica que uma nova mensagem do consumidor foi recebida, além do conteúdo da mensagem.
Tipos de sessão
session_type: um tipo de sessão da CCAI Platform.cobrowse_session_remote_control: indica o status de uma sessão de compartilhamento de tela de controle remoto solicitada. Valores:off,requested,rejected,on.cobrowse_session_full_device: indica o status de uma sessão de compartilhamento de tela completa do dispositivo. Valores:off,requested,rejected,on.
Participantes
type: tipo de participante:end_user;agent; (da resposta participants.type de /api/v1/calls ou /api/v1/chats).cobrowse_session_requested_by: indica quem iniciou uma sessão de compartilhamento de tela. Os valores possíveis sãoagentouend_user.cobrowse_session_ended_by: indica quem encerrou uma sessão de compartilhamento de tela. Os valores possíveis sãoagent,end_userouapi.end_user_id:participants.end_user_idda resposta/api/v1/callsou/api/v1/chats. Este campo só estará presente se o tipo forend_user.
Tipos de interação / sessão
Tipos de chamada
- Entrada de voz: chamadas PSTN padrão.
- Entrada de voz (IVR usando dispositivo móvel): chamadas PSTN de fallback feitas pelo SDK para dispositivos móveis.
- Chamadas de voz recebidas (dispositivos móveis): feitas por consumidores usando um SDK para dispositivos móveis instalado.
- Retorno de chamada de voz (Web): iniciado pelo SDK da Web.
- Voz de entrada (API): iniciada usando a API.
- Voz programada (dispositivo móvel): programada usando um SDK para dispositivos móveis instalado.
- Voz programada (Web): programada usando um SDK da Web instalado.
- Voz de saída: iniciada por um agente ao discar um número.
- Voz de saída (API): iniciada usando a API.
- Campanha de voz: iniciada usando um discador de saída (campanha).
Tipos de chat
- Mensagens (WhatsApp): iniciadas usando o WhatsApp.
- Mensagens recebidas (SMS)
- Mensagens enviadas (SMS)
- Mensagens enviadas (SMS usando API)
- Mensagens (Web): iniciadas usando um SDK da Web instalado.
- Mensagens (dispositivos móveis): iniciadas usando um SDK para dispositivos móveis instalado.
Tipo de ligação ou chat
- Sessão de compartilhamento de tela: iniciada por um agente ou usuário final durante uma chamada ou um chat.
Tipos de evento
Confira os tipos de evento que são postados pelo adaptador do agente. A coluna type
é a string exata que diferencia maiúsculas de minúsculas que aparece no campo type da
mensagem.
O listener precisa ignorar os valores de type que não reconhece. Novos tipos de eventos
podem ser adicionados ao longo do tempo, e o adaptador também publica mensagens destinadas a outras
superfícies da plataforma CCAI (por exemplo, quando ele é hospedado no
desktop do agente da plataforma CCAI) que não fazem parte deste contrato.
Login do agente
Um evento de login do agente ocorre quando o agente faz login no adaptador.
Veja um exemplo de evento Agent_Login:
{
"type": "Agent_Login",
"data": {
"agent_id": 1,
"agent_custom_id": "007",
"agent_email": "Kim@example.com",
}
}
Confira as descrições dos campos de dados de eventos:
agent_id: o identificador do agenteOpcional:
agent_custom_id: o identificador personalizado do agente, se ele foi inserido no perfil do agente.agent_email: o endereço de e-mail associado à conta do agente.
Nova chamada
Um novo evento de chamada ocorre quando um agente atende uma chamada. Esse evento contém informações como quando a chamada começou, qual agente a processou e de onde ela se originou.
Confira um exemplo de evento New_Call:
{
"type": "New_Call",
"data": {
"agent_id": 1,
"agent_custom_id": "007",
"agent_email": "Kim@example.com",
"queue_id": 8469,
"queue_path": "Developers / Kim",
"campaign_id": 1432,
"campaign_name": "Survey Movie",
"call_id": 103646,
"session_type": "Voice Campaign (UJET)"
}
}
Confira as descrições dos campos de dados de eventos:
agent_id: o identificador do agenteagent_custom_id: o identificador personalizado do agente, se tiver sido inserido no perfil dele. Opcional.agent_email: o endereço de e-mail associado à conta do agente.queue_id: o identificador da fila de origem da chamada. Esse campo é incluído quando a chamada é originada de uma fila. Opcional.queue_path: o caminho da fila de onde a chamada se originou. Esse campo é incluído quando a chamada é originada de uma fila. Opcional.campaign_id: o identificador da campanha. Esse campo é incluído em uma chamada de campanha. Opcional.campaign_name: o nome da campanha. Esse campo é incluído em uma chamada de campanha. Opcional.call_id: o identificador da chamada.session_type: o tipo de sessãovirtual_agent_id: o identificador do agente virtual. Esse campo é incluído em eventos que envolvem o agente virtual. Opcional.va_data_parameters: as variáveis configuradas na fila para enviar ao agente virtual. Este campo é incluído para eventos que envolvem o agente virtual. Opcional.session_variable: todas as variáveis do agente virtual que são enviadas para a plataforma CCAI. Opcional.custom_sip_headers: permite que cabeçalhos personalizados do protocolo de início de sessão (SIP) de chamadas SIP recebidas apareçam no log de eventos POST. Esse campo é incluído se cabeçalhos SIP personalizados forem usados. Opcional.custom_data_secured: contém dados personalizados assinados do seu servidor. Opcional.custom_data_not_secured: contém dados personalizados não assinados da sua página da Web. Para mais informações, consulte Dados personalizados não assinados do Chat. Opcional.
Consumidor entrou
Um evento de entrada de consumidor ocorre em uma chamada de campanha (discador de saída) quando o registro do consumidor é resolvido e carrega uma chave do gerenciador de campanhas de lista (LCM, na sigla em inglês). Ele permite que a página host procure o contato discado no próprio sistema antes que o restante dos dados da chamada chegue. Esse evento só é postado para chamadas de campanha em que o contato tem uma chave de LCM.
Confira um exemplo de evento Consumer_Joined:
{
"type": "Consumer_Joined",
"data": {
"lcmKey": "acqueon:12345",
"custom_sip_headers": {
"X-Account-Id": "A-100"
},
"va_data_parameters": {
"param1": "one"
},
"session_variable": {
"key_one": "value"
}
}
}
Confira as descrições dos campos de dados de eventos:
lcmKey: a chave do gerenciador de campanhas de lista do contato discado.custom_sip_headers: cabeçalhos SIP personalizados da chamada. Esse campo será incluído se cabeçalhos SIP personalizados forem usados. Opcional.va_data_parameters: as variáveis configuradas na fila para enviar ao agente virtual. Opcional.session_variable: as variáveis do agente virtual que são enviadas para a Contact Center AI Platform. Opcional.
A edição de chamadas foi iniciada
Um evento de início de edição de chamada ocorre quando uma edição de chamada é iniciada e não está sendo gravada. Os dados de eventos consistem no ID do agente que processou a chamada e no ID da chamada.
O type desse evento está em letras minúsculas: call_redaction_started.
agent_id: o ID do agente que atendeu à chamada.call_id: o ID da chamada
Veja um exemplo de evento de início de edição de chamada:
{
"type": "call_redaction_started",
"data": {
"agent_id": 2896,
"call_id": 97939
}
}
A edição de chamadas foi interrompida
O evento de interrupção de encobrimento de chamada ocorre quando um encobrimento de chamada é encerrado e
a gravação é retomada. Esse evento consiste no ID do agente que processou
a chamada e no call ID.
O type desse evento está em letras minúsculas: call_redaction_ended.
agent_id: oIDdo agente que atendeu à chamadacall_id: oIDda chamada
Veja um exemplo de dados de evento de interrupção de encobrimento de chamada:
{
"type": "call_redaction_ended",
"data": {
"agent_id": 2896,
"call_id": 97939
}
}
Encerrar chamada
Um evento de encerramento de chamada ocorre quando uma ligação é encerrada. Esse evento contém informações como quando a chamada terminou, qual agente a processou e de onde ela veio.
Veja um exemplo de evento End_Call:
{
"type": "End_Call",
"data": {
"agent_id": 1,
"agent_custom_id": "007",
"agent_email": "Kim@example.com",
"queue_id": 8469,
"queue_path": "Developers / Kim",
"campaign_id": 1432,
"campaign_name": "Survey Movie",
"call_id": 103646,
"session_type": "Voice Campaign (UJET)"
}
}
Confira as descrições dos campos de dados de eventos:
agent_id: o identificador do agenteagent_custom_id: o identificador personalizado do agente, se tiver sido inserido no perfil dele. Opcional.agent_email: o endereço de e-mail associado à conta do agente.queue_id: o identificador da fila de origem da chamada. Esse campo é incluído quando a chamada é originada de uma fila. Opcional.queue_path: o caminho da fila de onde a chamada se originou. Esse campo é incluído quando a chamada é originada de uma fila. Opcional.campaign_id: o identificador da campanha. Esse campo é incluído em uma chamada de campanha. Opcional.campaign_name: o nome da campanha. Esse campo é incluído em uma chamada de campanha. Opcional.call_id: o identificador da chamada.session_type: o tipo de sessãovirtual_agent_id: o identificador do agente virtual. Esse campo é incluído para eventos que envolvem o agente virtual. Opcional.va_data_parameters: as variáveis configuradas na fila para enviar ao agente virtual. Este campo é incluído para eventos que envolvem o agente virtual. Opcional.session_variable: todas as variáveis do agente virtual que são enviadas para a Contact Center AI Platform. Opcional.custom_sip_headers: permite que cabeçalhos personalizados do protocolo de início de sessão (SIP) de chamadas SIP recebidas apareçam no log de eventos POST. Esse campo é incluído se cabeçalhos SIP personalizados forem usados. Opcional.custom_data_secured: contém dados personalizados assinados do seu servidor. Opcional.custom_data_not_secured: contém dados personalizados não assinados da sua página da Web. Para mais informações, consulte Dados personalizados não assinados do chat (opcional). Opcional.
Novo chat
Um novo evento de chat ocorre quando um agente inicia uma sessão de chat. Esse evento indica quando o chat começou e contém informações como qual agente lidou com o chat de onde ele se originou.
Veja um exemplo de evento New_chat:
{
"type": "New_Chat",
"data": {
"chat_id": 73522,
"session_type": "messaging inbound (web chat)",
"agent_id": 1,
"agent_email": "ariel@example.com",
"queue_id": 7678,
"queue_path": "HB TEAM / Ariel"
}
}
Confira as descrições dos campos de dados de eventos:
chat_id: o identificador do chat.session_type: o tipo de sessãoagent_id: o identificador do agenteagent_custom_id: o identificador personalizado do agente, se tiver sido inserido no perfil dele. Opcional.agent_email: o endereço de e-mail associado à conta do agente.queue_id: o identificador da fila de origem da chamada. Esse campo é incluído quando a chamada é originada de uma fila. Opcional.queue_path: o caminho da fila de onde a chamada se originou. Esse campo é incluído quando a chamada se origina de uma fila. Opcional.custom_data_secured: contém dados personalizados assinados do seu servidor. Opcional.custom_data_not_secured: contém dados personalizados não assinados da sua página da Web. Para mais informações, consulte Dados personalizados não assinados do chat (opcional). Opcional.
Encerrar chat
Um evento de encerramento de chat ocorre quando uma sessão de chat termina. Esse evento indica quando o chat terminou e contém informações como qual agente lidou com o chat e onde ele se originou.
Veja um exemplo de evento End_Chat:
{
"type": "End_Chat",
"data": {
"chat_id": 73522,
"session_type": "Messaging Inbound (Web Chat)",
"agent_id": 1,
"agent_email": "ariel@example.com",
"queue_id": null,
"queue_path": null,
"agent_custom_id": null
}
}
Confira as descrições dos campos de dados de eventos:
chat_id: o identificador do chat.session_type: o tipo de sessão.agent_id: o identificador do agente.agent_custom_id: o identificador personalizado do agente, se tiver sido inserido no perfil dele. Opcional.agent_email: o endereço de e-mail associado à conta do agente.queue_id: o identificador da fila de origem da chamada. Esse campo é incluído quando a chamada é originada de uma fila. Opcional.queue_path: o caminho da fila de onde a chamada se originou. Esse campo é incluído quando a chamada é originada de uma fila. Opcional.custom_data_secured: contém dados personalizados assinados do seu servidor. Opcional.custom_data_not_secured: contém dados personalizados não assinados da sua página da Web. Para mais informações, consulte Dados personalizados não assinados do chat (opcional). Opcional.
Chat ativo
Um evento de chat ativo ocorre quando o agente muda para uma guia de chat no adaptador de chat.
Veja um exemplo de evento Active_Chat:
{
"type": "Active_Chat",
"data": {
"chat_id": 73521,
"session_type": "messaging inbound (web chat)",
"agent_id": 1,
"agent_email": "ariel@example.com",
"queue_id": 7678,
"queue_path": "HB TEAM / Ariel"
}
}
Confira as descrições dos campos de dados de eventos:
chat_id: o identificador do chat.session_type: o tipo de sessãoagent_id: o identificador do agenteagent_custom_id: o identificador personalizado do agente, se tiver sido inserido no perfil dele. Opcional.agent_email: o endereço de e-mail associado à conta do agente.queue_id: o identificador da fila de origem da chamada. Esse campo é incluído quando a chamada é originada de uma fila. Opcional.queue_path: o caminho da fila de onde a chamada se originou. Esse campo é incluído quando a chamada é originada de uma fila. Opcional.custom_data_secured: contém dados personalizados assinados do seu servidor. Opcional.custom_data_not_secured: contém dados personalizados não assinados da sua página da Web. Para mais informações, consulte Dados personalizados não assinados do chat (opcional). Opcional.
Mensagem recebida do chat
Um evento de mensagem de chat recebida indica que uma nova mensagem de cliente foi recebida. Inclui o conteúdo da mensagem.
Os dados dos seguintes campos são informados para um evento de mensagem recebida do chat:
chat_id: identifica a sessão de chat.session_type: indica o tipo de sessão que está sendo criada, como mensagens recebidas pelo chat na Web.agent_id: identifica o agente que está lidando com a sessão de chat.agent_custom_id: esse campo só existe se o perfil do agente incluir um ID personalizado. Opcional.agent_email: o endereço de e-mail do agente que está lidando com a sessão de chat. Esse campo é incluído apenas quando o chat se origina de uma fila. Opcional.queue_id: o ID da fila de origem da sessão de chat. Esse campo é incluído apenas quando o chat se origina de uma fila.queue_path: o caminho da fila de origem da sessão de chat. Esse campo é incluído apenas quando o chat se origina de uma fila.message: um evento que indica que uma nova mensagem do consumidor foi recebida, além do conteúdo da mensagemcustom_data_secured: permite a transmissão de dados personalizados protegidos do SDK. Opcional.custom_data_not_secured: permite a transmissão de dados personalizados do SDK não seguros. Opcional.
Veja um exemplo de evento Chat_Inbound_Message:
{
"type": "Chat_Inbound_Message",
"data": {
"chat_id": 73522,
"session_type": "messaging inbound (web chat)",
"agent_id": 1,
"agent_email": "ariel@example.com",
"queue_id": 7678,
"queue_path": "HB TEAM / Ariel",
"message" : "Can you help me with my order tracking number?"
}
}
Mensagem de chat enviada
Um evento de mensagem de saída do chat ocorre quando uma nova mensagem do consumidor é recebida. Inclui o conteúdo da mensagem.
Os dados dos campos a seguir são informados para um evento de mensagem de saída do chat:
chat_id: identifica a sessão de chat.session_type: indica o tipo de sessão que está sendo criada, como mensagens recebidas pelo chat na Web.agent_id: identifica o agente que está lidando com a sessão de chat.agent_custom_id: esse campo só será incluído se o perfil do agente tiver um ID personalizado. Opcional.agent_email: o endereço de e-mail do agente que está lidando com a sessão de chat. Esse campo só é incluído quando o chat se origina de uma fila. Opcional.queue_id: o ID da fila de origem da sessão de chat. Esse campo só é incluído quando o chat se origina de uma fila.queue_path: o caminho da fila de origem da sessão de chat. Esse campo é incluído apenas quando o chat se origina de uma fila.message: o evento indica que uma nova mensagem do consumidor foi recebida, além do conteúdo da mensagemcustom_data_secured: permite a transmissão de dados personalizados protegidos do SDK. Opcional.custom_data_not_secured: permite a transmissão de dados personalizados do SDK não seguros. Opcional.
Veja um exemplo de evento Chat_Outbound_Message:
{
"type": "Chat_Outbound_Message",
"data": {
"chat_id": 73522,
"session_type": "messaging inbound (web chat)",
"agent_id": 1,
"agent_email": "ariel@example.com",
"queue_id": 7678,
"queue_path": "HB TEAM / Ariel",
"message" : "Please give me a moment to look up your account information"
}
}
Formulário enviado
Um evento de envio de formulário ocorre quando um formulário é enviado ao consumidor durante uma sessão de chat. Os dois eventos são postados pelo adaptador de chat quando o chat recebe a mensagem do sistema correspondente.
Confira um exemplo de evento Form_Sent:
{
"type": "Form_Sent",
"data": {
"chat_id": 73522,
"session_type": "Messaging Inbound (Web Chat)",
"agent_id": 1,
"agent_custom_id": "007",
"agent_email": "Kim@example.com",
"end_user_id": 5512,
"form_external_id": "payment-details",
"form_name": "Payment details",
"form_type": "secure",
"queue_id": 7678,
"queue_path": "HB TEAM / Kim",
"queue_language_id": "en",
"timestamp": 1727853575000
}
}
Confira as descrições dos campos de dados de eventos:
chat_id: o identificador do chat.session_type: o tipo de sessãoagent_id: o identificador do agenteagent_custom_id: o identificador personalizado do agente, se tiver sido inserido no perfil dele. Opcional.agent_email: o endereço de e-mail associado à conta do agente.end_user_id: o identificador do consumidor no chat. Opcional.form_external_id: o identificador externo do formulário que foi enviado. Opcional.form_name: o nome do formulário que foi enviado. Opcional.form_type: o tipo de formulário que foi enviado. Opcional.queue_id: o identificador da fila de origem do chat. Esse campo é incluído quando o chat se origina de uma fila. Opcional.queue_path: o caminho da fila de origem do chat. Esse campo é incluído quando o chat se origina de uma fila. Opcional.queue_language_id: o idioma da fila. Opcional.timestamp: o horário em que o evento foi postado, em milissegundos desde a época Unix.va_data_parameters: as variáveis configuradas na fila para enviar ao agente virtual. Opcional.session_variable: todas as variáveis do agente virtual que são enviadas para a Contact Center AI Platform. Opcional.custom_data_secured: contém dados personalizados assinados do seu servidor. Opcional.custom_data_not_secured: contém dados personalizados não assinados da sua página da Web. Para mais informações, consulte Dados personalizados não assinados do Chat. Opcional.
Formulário preenchido
Um evento de formulário preenchido ocorre quando o consumidor envia um formulário que foi enviado durante uma sessão de chat. Os dados de eventos têm os mesmos campos do evento Formulário enviado.
Confira um exemplo de evento Form_Completed:
{
"type": "Form_Completed",
"data": {
"chat_id": 73522,
"session_type": "Messaging Inbound (Web Chat)",
"agent_id": 1,
"agent_custom_id": "007",
"agent_email": "Kim@example.com",
"end_user_id": 5512,
"form_external_id": "payment-details",
"form_name": "Payment details",
"form_type": "secure",
"queue_id": 7678,
"queue_path": "HB TEAM / Kim",
"queue_language_id": "en",
"timestamp": 1727853601000
}
}
Chat dispensado
Um evento de chat dispensado ocorre quando o agente fecha a guia de chat no adaptador de chat.
Veja um exemplo de evento Dismissed_Chat:
{
"type":"Dismissed_Chat",
"data":{"chat_id":73522,
"session_type":"Messaging Inbound (Web Chat)",
"agent_id":1,
"agent_email":"ariel@example.com"
}
}
Confira as descrições dos campos de dados de eventos:
chat_id: o identificador do chat.session_type: o tipo de sessãoagent_id: o identificador do agenteagent_custom_id: o identificador personalizado do agente, se tiver sido inserido no perfil dele. Opcional.agent_email: o endereço de e-mail associado à conta do agente.queue_id: o identificador da fila de origem da chamada. Esse campo é incluído quando a chamada é originada de uma fila. Opcional.queue_path: o caminho da fila de origem da chamada. Esse campo é incluído quando a chamada é originada de uma fila. Opcional.custom_data_secured: contém dados personalizados assinados do seu servidor. Opcional.custom_data_not_secured: contém dados personalizados não assinados da sua página da Web. Para mais informações, consulte Dados personalizados não assinados do chat (opcional). Opcional.
Sessão de compartilhamento de tela iniciada
Um evento de sessão de compartilhamento de tela iniciada ocorre quando uma sessão de compartilhamento de tela é iniciada por um agente ou usuário final. As sessões de compartilhamento de tela podem ser iniciadas durante uma ligação ou um chat. Para mais informações, consulte Compartilhamento de tela.
Veja um exemplo de um objeto JSON para um evento de início de sessão de compartilhamento de tela:
{
"type": "Cobrowse_Session_Started",
"data": {
"agent_id": 5,
"chat_id": 791,
"cobrowse_session_id": "Y1zYY6XIYX4oapqpEz3qHw",
"cobrowse_session_requested_by": "agent",
"cobrowse_session_remote_control": "off",
"cobrowse_session_full_device": "off"
}
}
Confira as descrições dos campos de dados de eventos:
agent_id: o identificador do agente.call_id: o identificador de uma ligação recebida no canal de IVR (unidade de resposta audível). Esse campo será incluído se a sessão de compartilhamento de tela tiver sido iniciada durante uma chamada.chat_id: o identificador de um chat recebido no canal da Web ou de dispositivos móveis. Esse campo será incluído se a sessão de compartilhamento de tela tiver sido iniciada durante um chat.cobrowse_session_id: o identificador de uma sessão de compartilhamento de tela.cobrowse_session_requested_by: indica quem iniciou uma sessão de compartilhamento de tela. Os valores sãoagenteend-user.cobrowse_session_remote_control: indica o status de uma sessão de compartilhamento de tela de controle remoto. Os valores sãoon,rejected,requestedeoff.cobrowse_session_full_device: indica o status de uma sessão de compartilhamento de tela completa do dispositivo. Os valores sãoon,rejected,requestedeoff.custom_data_secured: contém dados personalizados assinados do seu servidor. Opcional.custom_data_not_secured: contém dados personalizados não assinados da sua página da Web. Para mais informações, consulte Dados personalizados não assinados do chat (opcional). Opcional.
O controle remoto da sessão de compartilhamento de tela mudou
Um evento de mudança de controle remoto da sessão de compartilhamento de tela ocorre quando o status de uma sessão de compartilhamento de tela de controle remoto muda. Esse evento indica o status da sessão de compartilhamento de tela do controle remoto. Para mais informações, consulte Compartilhamento de tela.
Veja um exemplo de um objeto JSON para um evento Cobrowse_Session_Remote_Control_Changed:
{
"type": "Cobrowse_Session_Remote_Control_Changed",
"data": {
"agent_id": 5,
"chat_id": 791,
"cobrowse_session_id": "Y1zYY6XIYX4oapqpEz3qHw",
"cobrowse_session_remote_control": "requested"
}
}
Confira as descrições dos campos de dados de eventos:
agent_id: o identificador do agente.call_id: o identificador de uma ligação recebida no canal de IVR (unidade de resposta audível). Esse campo será incluído se a sessão de compartilhamento de tela tiver sido iniciada durante uma chamada.chat_id: o identificador de um chat recebido no canal da Web ou de dispositivos móveis. Esse campo será incluído se a sessão de compartilhamento de tela tiver sido iniciada durante um chat.cobrowse_session_id: o identificador de uma sessão de compartilhamento de tela.cobrowse_session_remote_control: indica o status de uma sessão de compartilhamento de tela de controle remoto. Os valores sãoon,rejected,requestedeoff.custom_data_secured: contém dados personalizados assinados do seu servidor. Opcional.custom_data_not_secured: contém dados personalizados não assinados da sua página da Web. Para mais informações, consulte Dados personalizados não assinados do chat (opcional). Opcional.
A sessão de compartilhamento de tela do dispositivo completo mudou
Um evento de mudança de sessão de compartilhamento de tela de todo o dispositivo ocorre quando o status de uma sessão de compartilhamento de tela de todo o dispositivo muda. Esse evento indica o status da sessão de compartilhamento de tela inteira do dispositivo. Para mais informações, consulte Compartilhamento de tela.
Veja um exemplo de evento Cobrowse_Session_Full_Device_Changed:
{
"type": "Cobrowse_Session_Full_Device_Changed",
"data": {
"agent_id": 5,
"cobrowse_session_id": "9-Kshrag-gn6ZSuIxoMtWQ",
"cobrowse_session_full_device": "rejected"
}
}
Confira as descrições dos campos de dados de eventos:
agent_id: o identificador do agente.call_id: o identificador de uma ligação recebida no canal de IVR (unidade de resposta audível). Esse campo será incluído se a sessão de compartilhamento de tela tiver sido iniciada durante uma chamada.chat_id: o identificador de um chat recebido no canal da Web ou de dispositivos móveis. Esse campo será incluído se a sessão de compartilhamento de tela tiver sido iniciada durante um chat.Cobrowse_session_id: o identificador de uma sessão de compartilhamento de tela.Cobrowse_session_full_device: indica o status de uma sessão de compartilhamento de tela completa do dispositivo. Os valores sãoon,rejected,requestedeoff.custom_data_secured: contém dados personalizados assinados do seu servidor. Opcional.custom_data_not_secured: contém dados personalizados não assinados da sua página da Web. Para mais informações, consulte Dados personalizados não assinados do chat (opcional). Opcional.
A sessão de compartilhamento de tela foi encerrada
Um evento de início de sessão de compartilhamento de tela ocorre quando uma sessão de compartilhamento de tela é encerrada por um agente, um usuário final ou a API. Para mais informações, consulte Configurar o compartilhamento de tela.
Veja um exemplo de evento Cobrowse_Session_Ended:
{
"type": "Cobrowse_Session_Ended",
"data": {
"agent_id": 5,
"cobrowse_session_id": "9-Kshrag-gn6ZSuIxoMtWQ",
"cobrowse_session_requested_by": "end_user",
"cobrowse_session_ended_by": "agent",
"cobrowse_session_remote_control": "on",
"cobrowse_session_full_device": "rejected"
}
}
Confira as descrições dos campos de dados de eventos:
agent_id: o identificador do agente.call_id: o identificador de uma ligação recebida no canal de IVR (unidade de resposta audível). Esse campo será incluído se a sessão de compartilhamento de tela tiver sido iniciada durante uma chamada.chat_id: o identificador de um chat recebido no canal da Web ou de dispositivos móveis. Esse campo será incluído se a sessão de compartilhamento de tela tiver sido iniciada durante um chat.cobrowse_session_id: o identificador de uma sessão de compartilhamento de tela.cobrowse_session_ended_by: indica quem encerrou a sessão de compartilhamento de tela. Os valores sãoagent,end-usereapi.cobrowse_session_remote_control: indica o status de uma sessão de compartilhamento de tela de controle remoto. Os valores sãoon,rejected,requestedeoff.cobrowse_session_full_device: indica o status de uma sessão de compartilhamento de tela completa do dispositivo. Os valores sãoon,rejected,requestedeoff.custom_data_secured: contém dados personalizados assinados do seu servidor. Opcional.custom_data_not_secured: contém dados personalizados não assinados da sua página da Web. Para mais informações, consulte Dados personalizados não assinados do chat (opcional). Opcional.
Transferir
Um evento de transferência ocorre quando uma chamada ou um chat é transferido. Pode se referir a uma transferência cega ou interna de chamada.
Os campos de evento a seguir fazem parte de um evento de transferência.
chat_idoucall_id: identifica a sessão de ligação ou chat.session_type: indica o tipo de sessão que está sendo criada, como uma mensagem recebida por chat na Web.campaign_id: o ID da campanha. Esse campo só estará presente se o tipo de chamada for uma chamada de campanha. Opcional.campaign_name: o nome da campanha. Esse campo só estará presente se o tipo de chamada for uma chamada de campanha. Opcional.from_agent_id: usado ao encaminhar chamadas ou chats de um agente para outro, para indicar o agente de origem.from_agent_custom_id: usado ao encaminhar chamadas ou chats de um agente para outro, para indicar o agente de origem. Opcional.from_agent_email: usado ao encaminhar chamadas ou chats de um agente para outro, para indicar o agente de origem.to_agent_id: usado ao encaminhar chamadas ou chats de um agente para outro, para indicar o agente de destino.to_agent_custom_id: usado ao encaminhar ligações ou chats de um agente para outro, para indicar o agente de destino. Opcional.to_agent_email: usado ao encaminhar chamadas ou chats de um agente para outro, para indicar o agente de destino.from_queue_id: usado ao encaminhar chamadas ou chats de uma fila para outra, para indicar a fila de origem.from_queue_path: usado ao encaminhar chamadas ou chats de uma fila para outra, para indicar a fila de origem.to_queue_id: usado ao encaminhar chamadas ou chats de uma fila para outra para indicar a fila de destinoto_queue_path: usado ao encaminhar chamadas ou chats de uma fila para outra para indicar a fila de destinovirtual_agent_id: o ID atribuído a um agente virtual. Opcional.va_data_parameters: todas as variáveis configuradas na fila para enviar ao agente virtual. Isso só é necessário para eventos que envolvem o agente virtual. Opcional.session_variable: todas as variáveis do agente virtual que são enviadas para a plataforma CCAI no payload. Opcional.custom_sip_headers: permite que cabeçalhos SIP personalizados de chamadas SIP recebidas apareçam no log de eventos POST. Ele só é obrigatório se cabeçalhos SIP personalizados forem usados. Opcional.custom_data_secured: permite a transmissão de dados personalizados protegidos do SDK. Opcional.custom_data_not_secured: permite a transmissão de dados personalizados do SDK não seguros. Opcional.
Veja um exemplo de evento de transferência:
{
"type": "Transfer_Chat",
"data": {
"chat_id": 103646,
"session_type": "Messaging Inbound (SMS)",
"campaign_id": 1432,
"campaign_name": "Survey Movie",
"from_agent_id": 1,
"from_agent_custom_id": "007",
"from_agent_email": "Ira@example.com",
"to_agent_id" : 5
"to_agent_custom_id": "100"
"to_agent_email" : "ariel@example.com"
"from_queue_id": 8469,
"from_queue_path": "Developers / Ariel",
"to_queue_id" : 1234,
"to_queue_path" : "Schemes / Auric"
}
}
Grupo adicionado
Um evento de adição de parte se refere a qualquer transferência. Pode ser uma transferência de chamada ou de chat.
Um evento de adição de parte contém os seguintes dados:
chat_idoucall_id: identifica a sessão de ligação ou chat.session_type: indica o tipo de sessão que está sendo criada, como uma mensagem recebida por chat na Web.agent_custom_id: esse campo só existe se o perfil do agente incluir um ID personalizado. Opcional.agent_email: o endereço de e-mail do agente que está lidando com a chamada ou sessão de chat.queue_id: o ID da fila de origem da sessão de chat. Esse campo é incluído apenas quando o chat se origina de uma fila. Opcional.queue_path: o caminho da fila de origem da sessão de chat. Esse campo é incluído apenas quando o chat se origina de uma fila. Opcional.campaign_id: o ID da campanha. Esse campo só é incluído quando o tipo de chamada é uma chamada de campanha. Opcional.campaign_name: o nome da campanha. Esse campo só é incluído quando o tipo de chamada é uma chamada de campanha. Opcional.type: o tipo de participante, por exemplo, um end_user ou agent. Esse campo é retornado como parte da resposta participants.type de/api/v1/callsou/api/v1/chats.end_user_id: o end_user_id. Esse campo é retornado como parte da resposta de/api/v1/callsou/api/v1/chats. Esse campo só está presente em chamadas ou chats de usuários finais que são encaminhados de um agente para outro, para indicar o agente de destino. Opcional.virtual_agent_id: o identificador atribuído a um agente virtual. Opcional.va_data_parameters: todas as variáveis configuradas na fila para enviar ao agente virtual. Isso só é necessário para eventos que envolvem o agente virtual. Opcional.session_variable: todas as variáveis do agente virtual que são enviadas para a plataforma do CCAI no payload. Opcional.custom_sip_headers: permite que cabeçalhos SIP personalizados de chamadas SIP recebidas apareçam no log de eventos POST. Ele só é obrigatório se cabeçalhos SIP personalizados forem usados. Opcional.custom_data_secured: permite a transmissão de dados personalizados protegidos do SDK. Opcional.custom_data_not_secured: permite a transmissão de dados personalizados do SDK não seguros. Opcional.
Veja um exemplo de evento Party_Added.
{
"type": "Party_Added",
"data": {
"chat_id": 103646,
"session_type": "Messaging Inbound (SMS)",
"campaign_id": 1432,
"campaign_name": "Survey Movie",
"agent_id": 1,
"agent_custom_id": "007",
"agent_email": "ariel@example.com",
"queue_id": 8469,
"queue_path": "Developers / Ariel",
"type" : "agent"
}
}
O agente se conecta à sessão
Um evento de conexão de agente à sessão ocorre quando um agente se conecta a uma sessão. Há dois tipos diferentes de eventos. O tipo é determinado se é uma ligação ou um chat.
Os campos de evento a seguir fazem parte de um evento de conexão do agente à sessão.
agent_id: identifica o agente que está lidando com a chamada ou sessão de chat.agent_email: o endereço de e-mail do agente que está lidando com a chamada ou sessão de chat.agent_custom_id: esse campo só existe se o perfil do agente incluir um ID personalizado. Opcional.chat_idoucall_id: identifica a sessão de ligação ou chat.virtual_agent_id: o ID atribuído a um agente virtual específico. Opcional.campaign_id: o ID da campanha. Esse campo só é incluído quando o tipo de chamada é uma chamada de campanha. Opcional.campaign_name: o nome da campanha. Esse campo só é incluído quando o tipo de chamada é uma chamada de campanha. Opcional.queue_id: o ID da fila de origem da sessão de chat. Esse campo é incluído apenas quando o chat se origina de uma fila. Opcional.queue_path: o caminho da fila de origem da sessão de chat. Esse campo é incluído apenas quando o chat se origina de uma fila. Opcional.session_type: indica o tipo de sessão que está sendo criada, como uma mensagem recebida pelo chat na Web.virtual_agent_id: o ID atribuído a um agente virtual. Opcional.va_data_parameters: todas as variáveis configuradas na fila para enviar ao agente virtual. Isso só é necessário para eventos que envolvem o agente virtual. Opcional.session_variable: todas as variáveis do agente virtual que são enviadas para a plataforma do CCAI no payload. Opcional.custom_sip_headers: permite que cabeçalhos SIP personalizados de chamadas SIP recebidas apareçam no log de eventos POST. Ele só é obrigatório se cabeçalhos SIP personalizados forem usados. Opcional.custom_data_secured: permite a transmissão de dados personalizados protegidos do SDK. Opcional.custom_data_not_secured: permite a transmissão de dados personalizados do SDK não seguros. Opcional.
Veja um exemplo de dados de evento Agent_Joined_Chat:
{
"type": "Agent_Joined_Chat",
"data": {
"chat_id": 103646,
"campaign_id": 1432,
"campaign_name": "Survey Movie",
"agent_id": 1,
"agent_custom_id": "007",
"agent_email": "ariel@example.com",
"queue_id": 8469,
"queue_path": "Developers / Ariel",
"session_type": "Messaging Inbound (SMS)",
}
}
Sair do agente
Um evento de logout do agente ocorre quando um agente sai do adaptador de agente.
Os campos de evento a seguir fazem parte de um evento Agent_Logout.
agent_id: o identificador do agente que fez login;agent_email: o endereço de e-mail associado à conta do agente.agent_custom_id: o ID personalizado do agente, se tiver sido inserido no perfil dele. Opcional.
Veja um exemplo de evento Agent_Logout:
{
"type": "Agent_Logout",
"data": {
"agent_id": 1,
"agent_custom_id": "007",
"agent_email": "ariel@example.com",
}
}
Agent Assist adicionado
Um evento de adição do Agent Assist ocorre quando um agente ativa o Agent Assist durante uma chamada ou sessão de chat.
Observe o seguinte sobre esse evento:
O
typedesse evento está em letras minúsculas:agent_assist_added.O campo de carimbo de data/hora é chamado de
Timestamp(T maiúsculo) e é o número de milissegundos desde a época Unix.
Veja um exemplo de evento agent_assist_added:
{
"type": "agent_assist_added",
"data": {
"conversation_id": "12345",
"queue_id": 65,
"agent_id": 1,
"session_id": "78534G4RT4284",
"queue_language_id": "en",
"Timestamp": 1727853575000
}
}
Estes são os campos de evento:
conversation_id: o identificador da conversa. Esse campo é incluído quando a sessão usa um perfil de conversa. Opcional.queue_id: o identificador da fila. Opcional.agent_id: o identificador do agentesession_id: o identificador da sessão. Opcional.queue_language_id: o idioma da fila. Opcional.Timestamp: o horário em que o evento foi postado, em milissegundos desde a época Unix.
O assistente de tarefas virtual entrou
Um evento de entrada de um assistente virtual de assistência com tarefas ocorre quando um assistente virtual de assistência com tarefas (VTA, na sigla em inglês) entra em uma chamada ou sessão de chat.
Veja um exemplo de evento Task_VA_Joined:
{
"type": "Task_VA_Joined",
"data": {
"chat_id": 103646,
"campaign_id": 1432,
"campaign_name": "Survey Movie",
"virtual_agent_id": 1,
"virtual_agent_name": "Order status assistant",
"participant_id": 1,
"queue_id": 8469,
"queue_path": "Developers / Kim",
"queue_language_id": "en",
"session_type": "Messaging Inbound (SMS)",
"conversation_id": "12345",
"session_id": "78534G4RT4284",
"timestamp": 1727853575000,
"data_parameters": {
"param1": "one",
"param2": "two"
}
}
}
Estes são os campos de evento:
call_idouchat_id: o identificador da chamada ou do chat.campaign_id: o identificador da campanha. Esse campo é incluído em uma chamada de campanha. Opcional.campaign_name: o nome da campanha. Esse campo é incluído em uma chamada de campanha. Opcional.virtual_agent_id: o identificador do VTA.virtual_agent_name: o nome do VTA conforme configurado no portal da plataforma CCAIparticipant_id: o identificador do participante do VTA na sessão.queue_id: o identificador da fila de origem da sessão. Opcional.queue_path: o caminho da fila de origem da sessão. Opcional.queue_language_id: o idioma da fila. Opcional.session_type: o tipo de sessãoconversation_id: o identificador da conversa. Esse campo é incluído quando a sessão usa um perfil de conversa. Opcional.session_id: o identificador da sessão. Opcional.timestamp: o horário em que o evento foi postado, em milissegundos desde a época Unix.data_parameters: as variáveis configuradas no portal da plataforma CCAI e enviadas ao VTA. Opcional.
O assistente de tarefas virtual saiu
Um evento de saída do assistente virtual de tarefas ocorre quando o VTA sai da sessão. Além dos campos do evento Assistência com tarefas virtual entrou, ele inclui o motivo pelo qual a sessão do VTA terminou e as variáveis de sessão capturadas pelo VTA.
Veja um exemplo de evento Task_VA_Left:
{
"type": "Task_VA_Left",
"data": {
"chat_id": 103646,
"virtual_agent_id": 1,
"virtual_agent_name": "Order status assistant",
"participant_id": 1,
"queue_id": 8469,
"queue_path": "Developers / Kim",
"queue_language_id": "en",
"session_type": "Messaging Inbound (SMS)",
"conversation_id": "12345",
"session_id": "78534G4RT4284",
"timestamp": 1727853600000,
"finish_reason": "Task VA completed",
"data_parameters": {
"param1": "one"
},
"captured_variables": [
{
"intent_name": null,
"variables": {
"order_number": "A-100"
},
"captured_at": "2024-11-15 16:46:31 UTC",
"timestamp": 1727853590000
}
]
}
}
Os campos extras de evento são:
finish_reason: o motivo do encerramento da sessão de VTA.captured_variables: as variáveis de sessão capturadas pelo VTA, cada uma com a intent que as capturou e quando foram capturadas. Opcional.
Variáveis de sessão de assistência com tarefas virtual recebidas
Um evento de variáveis de sessão recebidas do Assistente de Tarefas Virtual ocorre sempre que o
VTA envia um payload de variável de sessão personalizada durante a sessão. O evento tem
os mesmos campos que o evento O assistente de assistência com tarefas virtual saiu,
exceto finish_reason, e captured_variables contém as variáveis recebidas
até o momento.
Veja um exemplo de evento Task_VA_Variables_Received:
{
"type": "Task_VA_Variables_Received",
"data": {
"chat_id": 103646,
"virtual_agent_id": 1,
"virtual_agent_name": "Order status assistant",
"participant_id": 1,
"queue_id": 8469,
"queue_path": "Developers / Kim",
"queue_language_id": "en",
"session_type": "Messaging Inbound (SMS)",
"conversation_id": "12345",
"session_id": "78534G4RT4284",
"timestamp": 1727853590000,
"data_parameters": {
"param1": "one"
},
"captured_variables": [
{
"intent_name": null,
"variables": {
"order_number": "A-100"
},
"captured_at": "2024-11-15 16:46:31 UTC",
"timestamp": 1727853590000
}
]
}
}
Somente as variáveis em que capture_type inclui event no payload da variável de sessão personalizada do agente virtual são incluídas, e as chaves listadas em invisible_to_adapter_events são excluídas.
Pop-up de tela em segundo plano
O recurso de pop-up de tela permite que os agentes façam um pop-up de tela de CRM em segundo plano, o que significa que as informações do cliente são exibidas na tela do agente sem que ele precise fazer nenhuma ação necessária. Isso oferece uma experiência mais integrada para os consumidores e reduz o tempo de processamento para os agentes.
Pop-up de registro de CRM
O evento CRM_Record_Pop é um evento do lado do servidor que é acionado quando um tíquete
precisa ser exibido. Esse evento inclui um parâmetro chamado recordUrl que
contém o URL do registro do CRM, permitindo que você realize um pop-up de tela
inscrevendo-se em eventos POST se estiver usando adaptadores incorporados.
Veja um exemplo de evento CRM_Record_Pop:
{
"type": "CRM_Record_Pop",
"data": {
"recordUrl": "https://crm.example.com/tickets/4711"
}
}
O evento tem um único campo:
recordUrl: o URL do registro de CRM a ser exibido.
Para isso, o exemplo a seguir demonstra como adicionar um listener de eventos que detecta mensagens enviadas de outro frame ou janela. Esse snippet de código foi projetado para permitir a comunicação entre diferentes frames ou janelas e atualizações dinâmicas no conteúdo exibido no iframe com base nas mensagens recebidas.
// Replace with the origin of your tenant.
const ADAPTER_ORIGIN = 'https://tenant.loc.ccaiplatform.com'
// name is the html property of the iframe that shows the CRM record
const iframeTarget = document.querySelector('iframe[name="target_iframe_adapter"]')
// example usage of add event listener
// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
window.addEventListener('message', (e) => {
// Only accept events posted by the agent adapter.
if (e.origin !== ADAPTER_ORIGIN) {
return
}
let message
try {
message = JSON.parse(e.data)
} catch (err) {
// Not an agent adapter event.
return
}
const { type, data = {} } = message
console.log('EventListener: ', type)
switch (type) {
case 'CRM_Record_Pop': {
const recordUrl = data.recordUrl
if (!recordUrl) {
return
}
console.log(`Opening recordUrl in iframe ${iframeTarget.getAttribute('name')}`)
// changing an iframe target to the record URL pop
iframeTarget.src = recordUrl
break
}
case 'New_Chat':
console.log('Chat started...')
// handling here for New_Chat events
break
case 'End_Chat':
console.log('Chat ended...')
// handling here for End_Chat events
break
default:
// code handling for other types
break
}
}, false)
Abrir página de terceiros
O evento openThirdPartyPage é postado pelo adaptador de chamada quando uma chamada carrega
uma chave de terceiros (por exemplo, uma chave do Campaign Manager de lista em uma chamada de campanha)
e o adaptador está prestes a abrir a página de terceiros correspondente. Se você estiver usando
adaptadores incorporados, poderá se inscrever nesse evento para abrir a página na sua própria
UI.
Veja um exemplo de evento openThirdPartyPage:
{
"type": "openThirdPartyPage",
"data": {
"thirdPartyKey": "acqueon:12345",
"callId": 103646
}
}
Estes são os campos de evento:
thirdPartyKey: a chave de terceiros associada à chamada.callId: o identificador da chamada.