# Outbound LivePerson

## Visão geral

Com a ferramenta *Proactive Messaging* da [LivePerson](https://authentication.liveperson.net/) é possível criar campanhas e templates para envio de mensagens ativas via WhatsApp e Apple Business Chat.

**Antes de habilitar a API de Outbound no Zenvia NLU**, você deverá[ consultar essa documentação](https://knowledge.liveperson.com/messaging-channels-proactive-messaging-proactive-messaging-user-guide.html) da LivePerson e **se** **certificar que** **cumpriu todos os requisitos**, com atenção especial ao template ([HSM](/mais/glossario.md))

![Caminho para o Proactive Messaging dentro da página LivePerson](/files/-MeQM4v4GCR0GEEMB-L-)

{% hint style="warning" %}
Caso você fique preso na tela de apresentação "LivePerson Proactive Messaging" realize a limpeza de cache e cookies do seu navegador
{% endhint %}

Os próximos passos serão dedicados a habilitar e configurar API para envio de outbound via WhatsApp.

## **Habilitar e configurar API**

Vá até **Canais > WhatsApp > LivePerson**

![Caminho até a integração com WhatsApp via LivePerson](/files/-MeQNJZOZ6aliE8v8xJY)

Ao clicar sobre o ícone da LivePerson, você irá visualizar uma tela com todos os assistentes já integrados a esse Broker. Escolha qual será o responsável pelo envio e clique em **editar integrações**, simbolizado pelo ícone de lápis ![](https://lh6.googleusercontent.com/xPbP-vo9TQFCV8kailK-fiycp7HUZKSUqX5WsTFXkcNHN_jpukbaSQJYcriHUywnjtflYP8KHux5uc4Yn3BEXpm12NxIpTqsYjBOj5oFv3eGvIEJ7bdZ68XYQs3EWbq-2HL-V4x4)&#x20;

![Edite a integração de um assistente para habilitar a API de Outbound](/files/-MeQOPwWT3eB3ubzcfnm)

## **Estrutura**

Na tela inicial da área de edição de integrações você verá todas as informações da integração. No fim da página você irá encontrar um botão para habilitar a API de outbound.

![Botão de habilitar API Outbound](/files/-MeWoEqunxaAXMnMXikZ)

{% hint style="info" %}
Você deverá escolher entre a **versão 1.0** ou **2.0**, conforme a versão da sua conta na **LivePerson**.
{% endhint %}

## Versão 1.0

Ao habilitar a API de outbound 1.0 é gerado um **endpoint** e um **token**. Eles serão utilizados para realizar o envio das mensagens ativas.\
\
Use a ferramenta de requisição de API’s de sua preferência, e a configure utilizando as seguintes informações:

<mark style="color:green;">`POST`</mark> `https://outbound.ms.altubots.com/liveperson/<slug>/<id_integracao>`

#### Headers

| Name          | Type   | Description      |
| ------------- | ------ | ---------------- |
| Content-type  | string | application/json |
| Authorization | string | \<token>         |

{% tabs %}
{% tab title="200 " %}

```
{
  "status": "pending",
  "messageId": 161
}
```

{% endtab %}

{% tab title="400 " %}

```
{
	"status": "error",
	"message": "Invalid destination!"
}
```

{% endtab %}

{% tab title="404 " %}

```
{ 
	"status": "error",
	"message": "Contact not found!" 
}
```

{% endtab %}

{% tab title="500 Caso receba esta resposta, verifique se o número do destino e o nome do template estão corretos" %}

```
{ 
	"status": "error",
	"message": "Unexpected error" 
}
```

{% endtab %}
{% endtabs %}

![Informações sobre endpoint e token versão v.1 no Zenvia NLU](/files/8aY2OE7wLrWFst1l5VQz)

Você encontra um exemplo de como fazer a requisição no campo de “documentação” que fica ao lado das configurações da API. Essas informações podem ser copiadas e coladas.<br>

### **Body's templates:**

{% tabs %}
{% tab title="HSM Padrão" %}
Utilize este body quando for enviar uma mensagem ativa **somente com texto e variáveis**, **SEM** imagens, botões ou documentos:

```
{
    "destination": "35999999999",
    "context": {
        "status": "aprovado"
    },
    "hsm": true,
    "richTemplateName": "meu_template",
    "richTemplateVariables": {
        "variable_number": "variable_value"
    },
    "restartContact": false,
    "skill": "minha_skill",
		"inactivityTime": 2
}
```

### Atributos:

* **destination**: número que irá receber a mensagem
* **context (opcional)**: variáveis que serão salvas no contexto do usuário
* **hsm**: campo necessário para envio de mensagem hsm
* **richTemplateName**: nome do template de mensagem a ser enviado
* **richTemplateVariables (opcional)**: variáveis do template
  * **variable\_number:** número da variável dentro do template (1, 2, 3...)
  * **variable\_value:** valor que substituirá o número da variável no template
* **restartContact (opcional):** boleano para resetar as variáveis de contexto do usuário
* **skill (opcional):** habilidade na liveperson que atenderá o usuário
* **inactivityTime (opcional)**: tempo em minutos que deve passar desde a última interação do usuário com o assistente para que a mensagem seja enviada. **Exemplo:** Se o usuário está interagindo ou interagiu com assistente a 1 minuto e o tempo de inatividade necessário para mensagem ser enviada é 2 minutos("inactivityTime": 2) a mensagem não é enviada, caso a interação tivesse ocorrido a 3 minutos a mensagem seria enviada.
  {% endtab %}

{% tab title="HSM Rich Template" %}
Com este body é possível enviar uma mensagem ativa **com imagens, documentos e botões**:

```
{
   "destination": "11999999999",
   "context": {
       "status": "aprovado",
   },
   "hsm": true,
   "richTemplateName": "richtemplate",
   "richTemplateVariables": {
       "pic": "https:imageURL.png",
       "variable_number": "variable_value"
   }
}
```

### Atributos:

* **destination**: número que irá receber a mensagem
* **context (opcional)**: variáveis que serão salvas no contexto do usuário
* **hsm**: campo necessário para envio de mensagem hsm
* **richTemplateName**: nome do template de mensagem a ser enviado
* **richTemplateVariables (opcional)**: variáveis do template
  * **variable\_number:** número da variável dentro do template (1, 2, 3...)
  * **variable\_value:** valor que substituirá o número da variável no template
    {% endtab %}

{% tab title="Notificação" %}
Caso o assistente tenha recebido uma mensagem da pessoa usuária nas últimas 24 horas, você pode enviar uma notificação para continuar a conversa. Utilize este body:&#x20;

```
{
    "destination": "35988841854",
    "messages": "Envie um 'Oi' para iniciar o atendimento",
    "context": {
        "status": "aprovado"
    },
		"inactivityTime": 2
}
```

### **Atributos:**

* **destination**: número que irá receber a mensagem
* **messages**: mensagem a ser enviada
* **context (opcional)**: variáveis de contexto do usuário que serão salvas
* **inactivityTime (opcional)**: tempo em minutos que deve passar desde a última interação do usuário com o assistente para que a mensagem seja enviada. **Exemplo**: Se o usuário interagiu com assistente a 1 minuto e o tempo de inatividade necessário para mensagem ser enviada é 2 minutos ("inactivityTime": 2) a mensagem não será enviada. Caso a interação tivesse ocorrido a 3 minutos a mensagem seria enviada.
  {% endtab %}
  {% endtabs %}

\
**Exemplo HSM Padrão:**

**TemplateName:** template\_test

**Mensagem:** Olá {{1}}! Temos uma atualização a respeito da sua solicitação aberta. Envie um "oi" para saber mais.

```
{
    "destination": "35998631234",
    "context": {
        "status": "aprovado"
    },
    "hsm": true,
    "richTemplateName": "template_test",
    "richTemplateVariables": {
        "1": "TESTE"
    },
    "restartContact": false,
    "skill": "atendimento",
		"inactivityTime": 2
}    
```

**Mensagem recebida:**&#x20;

```
Olá TESTE! Temos uma atualização a respeito da sua solicitação aberta. Envie um "oi" para saber mais.
```

## **Webhook de status**

Um webhook é uma infraestrutura que recebe informações sobre as mensagens de outbound enviadas. Ele é composto por um endpoint (link do webhook, onde o cliente receberá as atualizações de status) e um token (acesso gerado pela equipe Zenvia NLU para realizar a integração). \
Você vai precisar das seguintes informações, que são encontradas logo abaixo da área de configuração da API de outbound:

* **Header**: token gerado pelo Zenvia NLU, que é específico para cada assistente e canal
* **Post**: link com o endpoint informado para acesso

![Configuração de webhook no ALTU](/files/-MeQZGh-y3DSjb6m-lxB)

Os status retornados via webhook são:

* **Enviado** (sent): retorno exclusivo para ativos enviados pela LivePerson, indica o sucesso no encaminhamento da mensagem.
* **Entregue** (delivered): Indica que a mensagem foi entregue (equivalente ao sinal único de visto ✅ no WhatsApp).
* **Respondido** (replied): Indica que a mensagem foi respondida pelo usuário.
* **Erro** (error): Indica que houve um erro no envio da mensagem.

O status `<enviado>` é instantâneo. O `<respondido>`será entregue primeiro e tem prioridade no `<entregue>`

{% tabs %}
{% tab title="Enviado" %}

```
{
  "external_id": "36ef4510-9c96-11eb-8ccf-dfce354710ee",
  "status": "sent",
  "destination": "35999999999",
  "client": "demo",
  "date": "2021-04-13T17:24:16-03:00"
}
```

{% endtab %}

{% tab title="Entregue" %}

```
{
  "external_id": "36ef4510-9c96-11eb-8ccf-dfce354710ee",
  "status": "delivered",
  "destination": "35999999999",
  "client": "demo",
  "date": "2021-04-13T17:24:15-03:00"
}
```

{% endtab %}

{% tab title="Respondido" %}

```
{
  "external_id": "36ef4510-9c96-11eb-8ccf-dfce354710ee",
  "status": "replied",
  "destination": "35999999999",
  "client": "demo",
  "message": "Ola",   //resposta enviada pelo usuario
  "date": "2021-04-13T17:24:25-03:00"
}
```

{% endtab %}

{% tab title="Erro" %}

```
{
  "external_id": "36ef4510-9c96-11eb-8ccf-dfce354710ee",
  "status": "error",
  "destination": "35999999999",
  "client": "demo",
  "message": "Erro ao enviar HSM",
  "date": "2021-04-13T17:24:15-03:00"
}
```

{% endtab %}
{% endtabs %}

## Versão 2.0

Na tela de configuração da API de outbound, ao selecionar a opção V 2.0 a configuração passa a ser a seguinte:

* **ALTU Token**: token configurado que será usado na requisição
* **Domínio do serviço**: informação preenchida automaticamente de acordo com o id da conta cadastrado na integração
* **Domínio da API**: informação preenchida automaticamente de acordo com o id da conta cadastrado na integração

Os dados abaixo devem ser recuperados através da URL: <https://authentication.liveperson.net/>

* **Id do cliente**: Id do cliente localizado na conta LivePerson
* **Segredo do cliente**: Id do cliente localizado na conta LivePerson

{% hint style="danger" %}
Ao salvar a integração na versão 2.0, não será possível voltar para a 1.0
{% endhint %}

<mark style="color:green;">`POST`</mark> `https://outbound.ms.altubots.com/liveperson/<slug>/<id_integracao>`

#### Headers

| Name          | Type   | Description      |
| ------------- | ------ | ---------------- |
| Content-type  | string | application/json |
| Authorization | string | \<token>         |

{% tabs %}
{% tab title="200 " %}

```
{
  "status": "sent",
  "messageId": 163,
  "external_id": "1405d120-c801-11ea-bc3c-331e67fe876f",
  "contact_id": 1
}
```

{% endtab %}

{% tab title="400 " %}

```
{
  "status": "error",
  "message": "Invalid destination!"
}
```

{% endtab %}

{% tab title="500 Caso receba esta resposta, verifique se o número do destino e o nome do template estão corretos." %}

```
{
  "status": "error",
  "message": "5535988841852 is not eligible for wa."
}
```

{% endtab %}
{% endtabs %}

![Informações sobre endpoint e token versão v.2 no Zenvia NLU](/files/TZZjz8mIuo7rbvnm4scZ)

Você encontra um exemplo de como fazer a requisição no campo de “documentação” que fica ao lado das configurações da API. Essas informações podem ser copiadas e coladas.

### **Body's templates:**

{% tabs %}
{% tab title="HSM Padrão" %}
Utilize este body quando for enviar uma mensagem ativa **somente com texto e variáveis**, **SEM** imagens, botões ou documentos:

```
{
    "outboundNumber": "5511999999999",
    "destination": "35999999999",
    "context": {
        "status": "aprovado"
    },
    "hsm": true,
    "templateId": "1111111111111",
    "richTemplateVariables": {
        "variable_number": "variable_value"
    },
    "restartContact": false,
    "skill": "atendimento",
		"inactivityTime": 2
} 
```

### Atributos:

* **outboundNumber**: número que irá enviar a mensagem
* **destination**: número que irá receber a mensagem
* **context (opcional)**: variáveis que serão salvas no contexto do usuário
* **hsm**: campo necessário para envio de mensagem hsm
* **templateId**: nome do template de mensagem a ser enviado
* **richTemplateVariables (opcional)**: variáveis do template
  * **variable\_number:** número da variável dentro do template (1, 2, 3...)
  * **variable\_value:** valor que substituirá o número da variável no template
* **restartContact (opcional):** boleano para resetar as variáveis de contexto do usuário
* **skill :** habilidade na liveperson que atenderá o usuário
* **inactivityTime (opcional)**: tempo em minutos que deve passar desde a última interação do usuário com o assistente para que a mensagem seja enviada. **Exemplo:** Se o usuário está interagindo ou interagiu com assistente a 1 minuto e o tempo de inatividade necessário para mensagem ser enviada é 2 minutos("inactivityTime": 2) a mensagem não é enviada, caso a interação tivesse ocorrido a 3 minutos a mensagem seria enviada.
  {% endtab %}

{% tab title="HSM Rich Template" %}
Com este body é possível enviar uma mensagem ativa **com imagens, documentos e botões**:

```
{
    "outboundNumber": "5511999999999",
    "destination": "35999999999",
    "context": {
        "status": "aprovado"
    },
    "hsm": true,
    "templateId": "1111111111111",
    "richTemplateVariables": {
        "1": "TESTE"
    },
    {
    "headerVariables": {
        "video": "https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_640_3MG.mp4" 
    }
    },
    "restartContact": false,
    "skill": "atendimento",
		"inactivityTime": 2
} 
```

**Atributos:**

* **outboundNumber (opcional):** número que dispara a mensagem
* **destination**: número que irá receber a mensagem
* **context (opcional)**: variáveis de contexto do usuário que serão salvas
* **hsm**: campo necessário para envio de mensagem hsm
* **templateId**: ID template de mensagem a ser enviado
* **richTemplateVariables (opcional)**: variáveis do template
  * **variable\_number:** número da variável dentro do template( 1, 2 3 ...)
  * **variable\_value:** valor que substituirá o número da variável no template
* **headerVariables (opcional):** variáveis de mídia no cabeçalho do template
* **restartContact (opcional):** booleano para resetar as variáveis de contexto do usuário
* **skill:** habilidade na LivePerson que atenderá o usuário
* **inactivityTime (opcional)**: tempo em minutos que deve passar desde a última interação do usuário com o assistente para que a mensagem seja enviada. **Exemplo:** Se o usuário está interagindo ou interagiu com assistente a 1 minuto e o tempo de inatividade necessário para mensagem ser enviada é 2 minutos("inactivityTime": 2) a mensagem não é enviada, caso a interação tivesse ocorrido a 3 minutos a mensagem seria enviada.
  {% endtab %}

{% tab title="Notificação" %}
Caso o assistente tenha recebido uma mensagem da pessoa usuária nas últimas 24 horas, você pode enviar uma notificação para continuar a conversa. Utilize este body:&#x20;

```
{
    "destination": "35988841854",
    "messages": "Envie um 'Oi' para iniciar o atendimento",
    "context": {
        "status": "aprovado"
    },
		"inactivityTime": 2
}
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Na versão 2.0 o Webhook de status não está disponível.&#x20;
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.altu.d1.cx/connect/apis/outbound/liveperson.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
