# Opções de implantação do desktop do agente

<figure><img src="https://1821044411-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FctBXUMeBy4rtLMmMkKRG%2Fuploads%2Fgit-blob-293887229ce00b96a3ceaafd7dba2abb0458565f%2Fimage.png?alt=media" alt="A woman smiling, wearing a headset and working at a computer."><figcaption></figcaption></figure>

O Zoom CX fornece várias opções de implantação do desktop do agente para atender aos requisitos de negócios do seu Zoom Contact Center. Funções comuns de contact center, como screen pop e registro de chamadas, estão disponíveis para todas as opções de implantação.

Se você precisa de uma integração simples com seu CRM, de um aplicativo web personalizado incorporado no desktop do agente ou de integrações avançadas orientadas por eventos usando Flow Events ou API Webhooks, o Zoom CX tem a flexibilidade para apoiar suas necessidades.

Ao entender seus requisitos específicos e aproveitar as ferramentas e integrações apropriadas, você pode criar uma experiência de contact center perfeita e eficiente para seus agentes e clientes.

## Exemplos de integração

Uma pergunta muito comum que nossos clientes fazem é, "*O Zoom Contact Center pode integrar-se com o meu \[inserir sistema aqui]?*" A resposta geralmente não é um simples sim ou não.

Aqui estão alguns exemplos de integração de clientes:

* Preciso que meu agente humano esteja dentro de outro aplicativo
* Preciso que meus agentes humanos tenham screen pops e capacidade de click-to-call com meu CRM
* Preciso que meu IVR de voz consulte um banco de dados no meu sistema e forneça informações de autoatendimento
* Preciso processar pagamentos com cartão de crédito e integrar com meu sistema bancário
* Preciso que meu chatbot de IA entenda detalhes específicos sobre meu negócio
* Quando um agente fala com um cliente, quero que o sistema do contact center exiba automaticamente informações contextuais para ajudar o agente

Cada um desses exemplos requer uma abordagem diferente de integração. É crucial entender os requisitos de negócio para poder responder perguntas e projetar o Contact Center certo para sua empresa. Qual(is) recurso(s) é/são necessários para sua integração?

O Zoom CX oferece quatro opções de implantação do desktop do agente: Zoom Workplace App, Progressive Web App (PWA), Conectores CTI de CRM e Integração Smart Embed do ZCC.

## Recursos compatíveis

A tabela abaixo lista o suporte de canal para cada opção de implantação.

| Opções de implantação                  | SO suportado | Canais ZCC suportados                                                                                     | AI Companion                  | AI Expert Assist                                               |
| -------------------------------------- | ------------ | --------------------------------------------------------------------------------------------------------- | ----------------------------- | -------------------------------------------------------------- |
| Aplicativo desktop Zoom Workplace      | Windows, Mac | <ul><li>Voz</li><li>Vídeo</li><li>SMS</li><li>Chat web</li><li>Mensageria social</li><li>E-mail</li></ul> | Incluído em todas as licenças | Incluído com a licença Elite e o add-on AI Expert Assist       |
| Integrações CTI de CRM                 | Web          | <ul><li>Voz</li><li>Vídeo</li><li>SMS</li><li>Chat web</li><li>Mensageria social</li></ul>                | No roadmap                    | No roadmap. Exigirá licença Elite ou o add-on AI Expert Assist |
| Zoom Contact Center Smart Embed (CCSE) | Web          | <ul><li>Voz</li><li>Vídeo</li><li>Chat web</li></ul>                                                      | Não disponível                | Não disponível                                                 |

## Aplicativo Zoom Workplace

Nosso desktop padrão do agente é a interface padrão incorporada ao Zoom Workplace App, o mesmo aplicativo que você conhece para entrar em reuniões do Zoom ou fazer chamadas do Zoom Phone. Agentes com a licença do Zoom Contact Center terão acesso à aba Contact Center (mostrada abaixo), onde irão gerenciar seus atendimentos do Zoom Contact Center.

{% hint style="info" %}
**Observação**

Para obter mais informações sobre como configurar informações do Contact Center, consulte [Suporte Zoom](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0058394).
{% endhint %}

<figure><img src="https://media.zoom.com/images/assets/wpapp.png/Zz0wM2E5YWZhNjU0YzYxMWVmYmYzOGVlMmZlM2E4NDQ4Yg==" alt="Contact Center tab in Zoom Workplace application"><figcaption></figcaption></figure>

### **Screen Pops do navegador**

Você pode usar o [Launch URL](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0058616\&ampDeviceId=178f00fc-724f-4a48-8bc8-2e79500f8f07\&ampSessionId=1745602375311) recurso no aplicativo para construir uma URL web dinâmica com base em dados variáveis, que então será exibida no navegador do sistema no computador do agente. O screen pop da URL pode incluir variáveis padrão, como o número de telefone do chamador, mas também pode incluir dados personalizados coletados pelo Flow/IVR, como números de caso ou ticket.

<figure><img src="https://media.zoom.com/images/assets/Browser-screen-popup.png/Zz1jMGQ0Y2I0MjU0YzYxMWVmYTdkNzQyMjc2NTZiOWM0Mg==" alt="Custom URL screen pops"><figcaption></figcaption></figure>

### **Zoom Apps**

Você pode aproveitar o Zoom App Framework para integrar aplicativos web no desktop do agente do Zoom Contact Center. Os Zoom Apps são exibidos para os agentes no lado direito de um atendimento com base na configuração administrativa para cada fila. Isso permite que cada fila controle quais Zoom Apps são exibidos ao agente.

O Zoom App Framework suporta tanto apps públicos, como o app PCI Pal mostrado abaixo, quanto apps privados. Apps privados são normalmente direcionados a casos de uso internos e estão disponíveis apenas para a conta Zoom para a qual o app foi criado. Se você tiver recursos para construir seu próprio aplicativo web (HTML, CSS ou JavaScript), pode integrá-lo perfeitamente ao Zoom Workplace App.

<figure><img src="https://media.zoom.com/images/assets/Zoom+Apps.png/Zz1iNGJhMGExZTU0YzgxMWVmYTEzMTM2ZTI5YjBmM2E2Mw==" alt="Zoom App Framework with PCI Pal"><figcaption></figcaption></figure>

O JavaScript SDK dos Zoom Apps oferece suporte tanto a eventos quanto a APIs, permitindo que seu app receba atualizações de atendimentos e faça polling por dados.

{% hint style="info" %}
Para mais informações, consulte [Zoom Apps no site do desenvolvedor Zoom](https://developers.zoom.us/docs/contact-center/apps/?optimizely_user_id=efe7866fa2ae9ac46f7e6b8bb8e98da9\&ampDeviceId=178f00fc-724f-4a48-8bc8-2e79500f8f07\&ampSessionId=1745602375311).
{% endhint %}

## Progressive Web App (PWA)

O cliente web está disponível para clientes que preferem que seus agentes façam login no Zoom Contact Center usando um navegador web, como o Chrome. Os conjuntos de recursos são similares aos disponíveis no Zoom Workplace App.

{% hint style="info" %}
**Observação**

Para mais informações sobre o Progressive Web App, consulte o [Zoom Blog](https://www.zoom.com/en/blog/how-to-use-zoom-on-a-chromebook/).
{% endhint %}

<div data-full-width="false"><figure><img src="https://media.zoom.com/images/assets/Progressive+Web+App/Zz1iY2E0YmJhZTU0ZDAxMWVmYWZiMzdlNGQxM2VlNzY4ZA==" alt="Browser-based Zoom Contact Center"><figcaption></figcaption></figure></div>

## Conectores CTI de CRM

Se você prefere que seus agentes trabalhem incorporados dentro do seu CRM, você pode aproveitar os Conectores CTI de CRM do ZCC, que suportam os seguintes CRMs:

* Salesforce
* Zendesk
* ServiceNow
* Hubspot
* Microsoft Dynamics 365

Se você estiver usando uma dessas integrações, os agentes irão gerenciar atendimentos dentro do CRM usando a integração incorporada do Zoom Contact Center. As funções de screen pop e registro de chamadas estão incluídas prontas para uso.

{% hint style="info" %}
**Observação**

Para mais informações sobre Conectores CTI de CRM, consulte [Suporte Zoom](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0078354).
{% endhint %}

<figure><img src="https://media.zoom.com/images/assets/CRM-Int.png/Zz04YzczZTEzNDU0ZDExMWVmYjk1MmEyZTlmMWU2MmE2YQ==" alt="Zoom Contact Center within SalesForce"><figcaption></figcaption></figure>

O comportamento padrão das integrações é realizar screen pop baseado no Caller ID (canais de voz/SMS) ou e-mail (canais de chat web/vídeo), mas você pode configurar para realizar screen pop com base em dados adicionais coletados no Flow, como um número de caso ou ticket. Vamos ver essa configuração.

{% hint style="info" %}
**Observação**

As opções exibidas na tela de Configuração de Canal variam dependendo do CRM e do canal ZCC utilizado.
{% endhint %}

<figure><img src="https://media.zoom.com/images/assets/voice-channel.png/Zz1kMDVlNjhkODU0ZDExMWVmODg5N2IyNTcwYTNhNmUzYw==" alt="Voice Channel Configuration screen"><figcaption></figcaption></figure>

## Integração Zoom Contact Center Smart Embed (CCSE)

O Zoom CCSE é uma solução flexível que permite aos desenvolvedores incorporar rapidamente o Agente em seu próprio aplicativo web usando configurações de iFrame em HTML. Sua equipe de desenvolvedores web adicionará código JavaScript adicional ao seu aplicativo web para receber os eventos de chamada tocando/conectada, que podem ser usados para acionar screen pops e/ou registro de chamadas dentro do seu aplicativo web.

<figure><img src="https://media.zoom.com/images/assets/ZCC+Smart+Embed+Integration.png/Zz0xNjkwNjhhNDU0ZDQxMWVmOTRmZjJlODViYTAxOGVmNA==" alt="Phone screen"><figcaption></figcaption></figure>

{% hint style="info" %}
**Observação**

Para mais sobre o Smart Embed, confira a [documentação do desenvolvedor](https://developers.zoom.us/docs/contact-center/smart-embed/?optimizely_user_id=efe7866fa2ae9ac46f7e6b8bb8e98da9\&ampDeviceId=178f00fc-724f-4a48-8bc8-2e79500f8f07\&ampSessionId=1745602375311).
{% endhint %}

## Soluções de parceiros

Se você está procurando uma solução de agente não coberta acima, integrações adicionais estão disponíveis e são fornecidas por parceiros ISV (fornecedores de soluções inovadoras) da Zoom. O programa de parceiros ISV inclui soluções construídas para bancos, cooperativas de crédito, seguros, saúde e mais.

{% hint style="info" %}
**Observação**

Para mais informações, consulte [parceiros ISV do Zoom para Contact Center](https://partner.zoom.us/solutions/?filter-types=ISV\&filter-products=Contact+Center).
{% endhint %}

Integrações de desktop de agente mais sofisticadas podem aproveitar os eventos do Zoom CX Flow ou eventos de API do Zoom App Marketplace (webhooks/WebSockets). Com essas opções, a plataforma Zoom CX enviará solicitações HTTPS para endpoints de API externos com base em eventos do Zoom Contact Center.

Dependendo dos requisitos da sua integração, você pode optar por usar eventos do Flow, eventos de API ou ambos.

Você pode projetar uma integração para realizar screen pop ou registrar chamadas ao receber esses eventos. Tanto os Flow Events quanto os eventos do Zoom App Marketplace estão disponíveis para todas as opções de implantação do agente mencionadas acima.

| Tipo de evento                                                             | Atendimentos suportados | Tipo de payload    |
| -------------------------------------------------------------------------- | ----------------------- | ------------------ |
| [Scripts de evento ZCX Flow](#flow-event-script)                           | Apenas entrada          | JSON personalizado |
| [Eventos de API do Zoom App Marketplace](#zoom-app-marketplace-api-events) | Entrada e saída         | JSON fixo          |

Os scripts de Flow Event são acionados quando ações específicas acontecem dentro do Zoom Contact Center. Quando esse evento é acionado, o código do script de evento associado é executado no contexto do atendimento, o que significa que o script tem acesso às variáveis do atendimento.

## Scripts de Flow Event

Vamos dar uma olhada em dois scripts comuns de Flow Event.

| Nome do evento                                               | Gatilho do evento                                        |
| ------------------------------------------------------------ | -------------------------------------------------------- |
| [Atendimento aceito](#engagement-accepted-event-script-code) | Quando um agente aceita a chamada.                       |
| [Disposição salva](#disposition-saved-event-script-code)     | O agente salvou uma disposição e encerrou o atendimento. |

{% hint style="info" %}
**Observação**

Uma lista completa de scripts de evento está disponível em [artigo de suporte](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0059146\&ampDeviceId=178f00fc-724f-4a48-8bc8-2e79500f8f07\&ampSessionId=1745602375311).
{% endhint %}

Vamos ver um exemplo de como você poderia usar os eventos acima para enviar solicitações HTTP a um sistema externo. Quando o sistema externo recebe esses eventos, os dados podem ser usados para fornecer registros, screen pops ou outros casos de uso. As capacidades exatas fornecidas serão determinadas pelas capacidades do sistema externo.

### **Configuração de exemplo**

No Flow, começamos configurando os scripts de evento no widget Start. Na imagem abaixo, você pode ver que o widget Start tem os dois scripts de evento configurados.

<figure><img src="https://media.zoom.com/images/assets/agent-manage/Zz1hN2QxZDBjMDU1NzcxMWVmYmIyYmUyNzgyODUwNDI1OQ==" alt="Event Script Flow example"><figcaption></figcaption></figure>

Para criar o código do script de evento, adicione um novo script de evento ao widget Start e escreva o código diretamente no editor de fluxo, como mostrado abaixo.

<figure><img src="https://media.zoom.com/images/assets/asset-management.png/Zz1hN2JhYzVlYzU1NzcxMWVmYjE3ZTM2ZTI5YjBmM2E2Mw==" alt="Code sample in Flow editor"><figcaption></figcaption></figure>

Tanto o evento Engagement Accepted quanto o Disposition Saved usam código similar. Ambos são blocos de código JavaScript que usam a função HTTP incorporada para gerar uma requisição HTTPS POST de saída.

### Código do script de evento Engagement Accepted

Neste exemplo de código, estamos incluindo o ID do atendimento, o número de telefone do chamador, o e-mail do agente e o nome da fila. O código é executado quando o agente atende o atendimento e começa a falar com o consumidor.

Este é um exemplo do que provavelmente é a quantidade mínima de informações necessárias para gerar um screen pop ou iniciar o registro da nova chamada. Vale mencionar que, se sua configuração de Flow do ZCC estiver coletando dados sobre o chamador no Flow/IVR, é tão simples quanto adicionar variáveis adicionais ao `request_body` variável para incluir dados adicionais nesta requisição HTTP.

{% code overflow="wrap" %}

```javascript
async function main() {
    try {
        let request_body = {
            engagementId: var_get()["global_system.Engagement.engagementId"],
            caller_number: var_get()["global_system.Engagement.ANI"],
            agent_email: var_get()["global_system.Agent.email"],
            queue_name: var_get()["global_system.Engagement.queue"]
        };

        const result = await req.post('https://api.example.com/acceptedcall', request_body);
        let jsonResponseBody = result.data;

        log.debug("Axios jsonResponseBody=" + JSON.stringify(jsonResponseBody));
    } catch (error) {
        log.debug("Received HTTP error " + error);
    }
}
```

{% endcode %}

### Código do script de evento Disposition Saved

Para o evento Disposition Saved, reutilizaremos o código do exemplo anterior, com a adição da `disposition` variável. Este código é executado quando o agente seleciona a disposição para a chamada, o que acontece como a última ação realizada pelo agente no atendimento. Ao enviar esta requisição, o sistema externo pode rastrear que o agente concluiu a disposição do atendimento.

Como no evento Engagement Accepted, variáveis adicionais podem ser incluídas, dependendo do seu caso de uso.

{% code overflow="wrap" %}

```javascript
async function main() {
    try {
        let request_body = {
            engagementId: var_get()["global_system.Engagement.engagementId"],
            caller_number: var_get()["global_system.Engagement.ANI"],
            agent_email: var_get()["global_system.Agent.email"],
            queue_name: var_get()["global_system.Engagement.queue"],
            disposition_name: var_get()["global_system.Engagement.disposition"]
        };

        const result = await req.post('https://api.example.com/dispositionedcall', request_body);
        let jsonResponseBody = result.data;

        log.debug("Axios jsonResponseBody=" + JSON.stringify(jsonResponseBody));
    } catch (error) {
        log.debug("Received HTTP error " + error);
    }
}
```

{% endcode %}

Dependendo da sua solução, você pode achar que os scripts de evento do Flow são suficientes, ou pode precisar de alguns dos eventos de API do Zoom App Marketplace para ajudar a cobrir todos os casos de uso exigidos pela sua integração.

Por exemplo, você pode complementar os dois eventos de fluxo acima assinando-se nos eventos de API do Zoom App Marketplace para hold, resume, mute e unmute. Esses eventos adicionais forneceriam ao seu aplicativo uma visão sobre a frequência com que os agentes colocam chamadas em espera ou silenciam.

Tanto os scripts de evento de fluxo acima quanto os eventos webhook/WebSocket do Zoom App Marketplace estão disponíveis para sua solução.

## Eventos de API do Zoom App Marketplace

Como outros produtos da Zoom, o Zoom CX possui eventos de webhook/WebSocket de API disponíveis dentro do Zoom App Marketplace.

Eventos estão disponíveis para rastrear a atividade do agente, como login/logout, opt in/out da fila e eventos de mudança de status. Eventos de atendimento podem rastrear atendimentos através do sistema, incluindo eventos como atendimento iniciado, atendimento atendido, atendimento silenciado/desmutado, DTMF enviado, transferência iniciada, encerrada, nota adicionada, disposição adicionada. Ao rastrear eventos de atendimento, você obtém visibilidade em dados detalhados no nível do atendimento.

Veja o [Site do desenvolvedor Zoom](https://developers.zoom.us/docs/api/rest/reference/contact-center/methods/?optimizely_user_id=efe7866fa2ae9ac46f7e6b8bb8e98da9#overview) para mais informações sobre as APIs do Contact Center.
