# Iniciar LiveChat

As integrações de Live Chat são configuradas no menu "Live Chat". Contendo integrações com a LivePerson e Zendesk.

```javascript
[
    {
        "name": "start_live_chat",
        "parameters": {
            "integration_id": "ID da integração configurada",
	    "start_message": "Mensagem para o agente"
        },
        "result_variable": "response",
    }
]
```

## LivePerson

### Atributos

* **parameters:** {}
  * **skill\_id (opcional):** ID da skill (habilidade) que deve receber o atendimento na LivePerson. Se esse atributo não for setado será usado a configuração padrão na LivePerson.
  * **agent (opcional):** ID do agente que atenderá o usuário. O valor pode ser número ou string.
  * **start\_message (opcional):** Mensagem que será enviada para o agente quando a conversa iniciar.
  * **campaign\_info&#x20;**&#x20;**(opcional):** {}
    * **campaign\_id (opcional):** ID da campanha na LivePerson. Se esse atributo não for setado será usado a configuração padrão na LivePerson.
    * **engagement\_id( opcional):** ID do engagement na LivePerson. Se esse atributo não for setado será usado a configuração padrão na LivePerson.
* **result\_variable:** variável de contexto que receberá o resultado do envio do atendimento para a LivePerson. Em caso de sucesso, essa variável conterá um JSON como o do exemplo abaixo:

  ```javascript
  {
    "status": "ok",
      "body": {
        "reqId": "2a0b043e-7d81-45d0-9907-689564fdaeb1",
        "code": "OK",
        "body": {
              "conversationId": "ebe75240-0e78-4ca5-bf5c-4818ae5d137f"
        }
      }
  }
  ```

### Exemplo

```javascript
[
    {
        "name": "start_live_chat",
        "parameters": {
            "skill_id": "1589664150",
            "campaign_info": {
                "campaign_id": "1614784350",
                "engagement_id": "1614784550"
            },
            "integration_id": 7,
	    "start_message": "Mensagem inicial para o agente"
        },
        "result_variable": "lp_widget_response"
    }
]
```

## Informações para o agente&#x20;

Insira informações adicionais para serem enviadas ao agente, para isso utilize o `extra_info :`

```
[
    {
        "name": "start_live_chat",
        "parameters": {
            "extra_info": {
                "endereco": {
                    "país": "Brasil",
                    "estado": "SP",
                    "cidade": "São Paulo",
                    "bairro": "Consolação",
                    "logradouro": "R. Sergipe",
                    "numero": "475",
                    "complemento": "5º Andar"
                }
            }
        },
        "result_variable": "response"
    }
]
```

## Atributos

* **extra\_info:** Informações adicionais que serão enviadas para o agente, `obj/array`, `string` ou `num`
* **contact\_info:** informações sobre o atendimento que serão repassadas ao agente, `obj/array` . O limite do json é de 1024 caracteres. Só será enviado para ALTU SDK, ficando de fora Liveperson e Zendesk.

Esse atributo só funcionará para Live Chat com a LivePerson e ALTU SDK, ficando de fora a Zendesk.&#x20;

Em Liveperson, o atributo **`extra_info`** terá um limite de 256 caracteres, passando disso a action enviará um valor vazio.

Para o ALTU SDK o limite é de 1024 caracteres.&#x20;

Para saber mais:

{% content-ref url="../../../../../connect/apis/agent-connector-sdk" %}
[agent-connector-sdk](https://docs.altu.d1.cx/connect/apis/agent-connector-sdk)
{% endcontent-ref %}

### Encerramento da chamada

Após o transbordo o bot "sai de cena" e os agentes da Liveperson assumem a conversa com o usuário. Após o encerramento dessa conversa o bot é acionado novamente. O mesmo se aplica caso aconteça algum erro ou ninguém atenda a chamada após o tempo máximo de espera.

Nessas situações o builder é acionado novamente com a variável `input` contendo as seguintes informações em cada situação:

**Agente encerrou a chamada:**

```javascript
{
    "live_chat": {
        "status": "agent_closed"
    }
}
```

**Usuário (cliente) encerrou a chamada:**

```javascript
{
    "live_chat": {
        "status": "user_closed"
    }
}
```

**Nenhum agente atendeu a chamada dentro do tempo de espera:**

```javascript
{
    "live_chat": {
        "status": "timeout"
    }
}
```

**Erro inesperado:**

```javascript
{
    "live_chat": {
        "status": "error"
    }
}
```

## Zendesk

```javascript
[
    {
        "name": "start_live_chat",
        "parameters": {
            "assignee_id":"9999999",
            "tags": [
                "<? $zendeskTag ?>",
                "canal_smkwhatsapp",
                "smkreceptivo"
            ],
            "subject": "<? $zendeskSubject ?>",
            "custom_fields": [
                {
                    "id": "360023232032",
                    "value": "<? contact.cpf ?>"
                },
                {
                    "id": "360024868372",
                    "value": "<? contact.phone ?>"
                }
            ],
            "integration_id": "1",
            "before_action_messages": [
                "Aguarde um minuto..."
            ]
        },
        "result_variable": "ticketResponse"
    }
]
```

### Atributos

* **parameters:** {}
  * **assignee\_id(opcional): I**D do agente para qual o ticket será automaticamente atribuído. Se não for setado, será enviado para uma listagem junto aos demais tickets.
  * **subject:** assunto do ticket.
  * **integration\_id:** id da integração.
  * **tags:** tags para definir/orientar o ticket.
  * **user\_fields (opcional):** campos do usuário, visíveis apenas para agentes. Clique [aqui](https://developer.zendesk.com/rest_api/docs/support/user_fields) para ver lista completa.
  * **custom\_fields (opcional):** campos customizados, visíveis apenas para agentes.
  * **brand\_id (opcional):** Id da marca
  * **requester\_id (opcional)**: o id do usuário (solicitante) cadastrado previamente na Zendesk
  * **ticket\_form\_id (opcional)**: o id do formulário de ticket associado a solicitação se o formulário estiver visível para os usuários finais
  * **group\_id (opcional)**: A id do grupo atribuído se o campo estiver visível para os usuários finais.
  * **before\_action\_messages**: mensagem que será enviada ao usuário antes da abertura do ticket.
* **result\_variable:** variável de contexto que receberá o resultado da operação. Em caso de sucesso, essa variável conterá o seguinte JSON:

  ```javascript
  {
    "response": {
      "body": "<retorno esperado>",
      "status": "ok"
    }
  }
  ```
