> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ycloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Exemplos de mensagens do WhatsApp

> Envie mensagens de modelo, de mídia, interativas, de comércio, de Flow e de chamada com exemplos de requisição anotados.

## O que é

Envie mensagens de modelo, de mídia, interativas, de comércio, de Flow e de chamada com exemplos de requisição anotados.

## Antes de começar

* Armazene uma chave de API da YCloud em um segredo do lado do servidor.
* Conecte a conta do WhatsApp Business e o número de telefone usados pela requisição.
* Crie e aprove qualquer modelo referenciado por uma requisição de mensagens.
* Substitua cada espaço reservado por um valor da sua própria conta.

## Como funciona

Escolha o cenário correspondente à mensagem ou ao modelo que deseja criar. Compare seus campos com a Referência da API, substitua os espaços reservados e teste com um destinatário controlado antes de usar a requisição em produção.

## Requisição

Cada cenário inclui uma requisição de mensagem completa. Os exemplos usam o envio direto para obter feedback rápido, mas os mesmos objetos de mensagem também podem ser enfileirados.

## Resposta

Uma resposta de envio bem-sucedida confirma que a YCloud aceitou a requisição de mensagem; use a recuperação de mensagens ou webhooks de `whatsapp.message.updated` para determinar o status final de entrega.

<Note>Use o [guia de mensagens do WhatsApp](/pt/api-reference/guides/whatsapp-platform/send-whatsapp-message) para orientações sobre o ciclo de vida e a Referência da API para o esquema completo.</Note>

## Escolha um exemplo

<CardGroup cols={2}>
  <Card title="Mensagens de modelo" icon="rectangle-list" href="#template-message-examples">
    Envie modelos aprovados para casos de uso de autenticação, marketing, utilidade e comércio.
  </Card>

  <Card title="Mensagens de formato livre" icon="message" href="#free-form-message-examples">
    Envie mensagens de texto, mídia, localização, contato e reação dentro de uma janela de atendimento ao cliente aberta.
  </Card>

  <Card title="Mensagens interativas" icon="list-check" href="#interactive-list-message">
    Adicione listas, botões, Flows, produtos, chamadas e interações em carrossel.
  </Card>

  <Card title="Mensagens de comércio" icon="cart-shopping" href="#interactive-order-details-message">
    Envie experiências de produtos, detalhes do pedido, status do pedido e checkout.
  </Card>
</CardGroup>

Os exemplos abaixo se aplicam tanto à API [Enviar uma mensagem do WhatsApp diretamente](/api-reference/whatsapp-messages/send-a-message-directly) quanto à API [Enfileirar uma mensagem do WhatsApp](/api-reference/whatsapp-messages/enqueue-a-message).

Começar com mensagens de modelo é uma maneira fácil de iniciar uma [conversa](https://developers.facebook.com/docs/whatsapp/pricing#opening-conversations). **Assim que o cliente responde ao modelo de mensagem da empresa, a empresa pode começar a enviar qualquer tipo de mensagem para o cliente dentro de 24 horas.**

<br />

## Exemplos de mensagens de modelo

Os exemplos abaixo são exemplos de modelos de mensagens do WhatsApp. Cada modelo deve ser criado e aprovado antes de poder ser usado para enviar mensagens.

<br />

### Mensagem de modelo de autenticação com botões de senha de uso único (OTP)

Neste caso, você tem um **[Modelo de autenticação com botão Copiar código](/pt/api-reference/guides/examples/api-examples/whatsapp-template-creation-examples#authentication-template-with-copy-code-button)**, **[Modelo de autenticação com botão de um toque](/pt/api-reference/guides/examples/api-examples/whatsapp-template-creation-examples#authentication-template-with-one-tap-button)** ou **[Modelo de autenticação sem toque (zero-tap)](/pt/api-reference/guides/examples/api-examples/whatsapp-template-creation-examples#zero-tap-authentication-template)**, e envia uma mensagem de modelo:

* Contém uma senha de uso único ou código de verificação a ser entregue ao cliente.
* Contém um botão **copiar código** , um botão **preenchimento automático de um toque** ou nenhum botão se estiver usando **zero-tap**.

![example-messaging-otp.webp](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-otp.webp)

![](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-template-zerotap.webp)<br />
**<p align="center" style={{ color: '#67777F' }}>ZERO-TAP</p>**

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "template",
  "template": {
    "name": "otp_one_tap",
    "language": {
      "code": "{{LANGUAGE-CODE}}",
      "policy": "deterministic"
    },
    "components": [
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "797011"
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "url",
        "index": "0",
        "parameters": [
          {
            "type": "text",
            "text": "797011"
          }
        ]
      }
    ]
  }
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione eventos posteriores de `whatsapp.message.updated`.

#### Explicação

* O texto do corpo da mensagem conterá o código de verificação encontrado no componente body. Por outro lado, o código que é realmente usado quando os usuários clicam nos botões de um toque ou de copiar código é aquele no componente button. Eles devem ser iguais na maioria dos casos.

### Mensagem de modelo com variáveis

Neste caso, você tem um **[Modelo de utilidade com variáveis no corpo](/pt/api-reference/guides/examples/api-examples/whatsapp-template-creation-examples#utility-template-with-variables-in-body)**, e envia uma mensagem de modelo:

* Contém texto com 3 variáveis no corpo.

![example-template-body.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-template-body.png)

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "template",
  "template": {
    "name": "order_confirmation",
    "language": {
      "code": "{{LANGUAGE-CODE}}",
      "policy": "deterministic"
    },
    "components": [
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "ORDER-TITLE"
          },
          {
            "type": "text",
            "text": "9.9 USD"
          },
          {
            "type": "text",
            "text": "February 25"
          }
        ]
      }
    ]
  }
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione eventos posteriores de `whatsapp.message.updated`.

#### Explicação

* Certifique-se de que o modelo correspondente tenha sido aprovado.
* **Defina o `type` correto para as mensagens que você envia. Neste caso, `type` está definido como `template`, e o `components` e o `parameters` da requisição de mensagens devem corresponder ao modelo.**

### Mensagem de modelo com imagem e botões de Resposta Rápida

Neste caso, você tem um **[Modelo de marketing com imagem e botões de Resposta Rápida](/pt/api-reference/guides/examples/api-examples/whatsapp-template-creation-examples#marketing-template-with-image-and-quick-reply-buttons)**, e envia uma mensagem de modelo:

* Contém uma imagem no cabeçalho.
* Contém texto com 1 variável no corpo.
* Contém texto no rodapé.
* Contém 2 botões de Resposta Rápida. O número máximo de botões de Resposta Rápida é 3.

![example-template-quickreply.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-template-quickreply.png)

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "template",
  "template": {
    "name": "marketing_friday",
    "language": {
      "code": "{{LANGUAGE-CODE}}",
      "policy": "deterministic"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "image",
            "image": {
              "link": "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.jpg"
            }
          }
        ]
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "Lucy"
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "quick_reply",
        "index": 0,
        "parameters": [
          {
            "type": "payload",
            "payload": "more_about_marketing_friday"
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "quick_reply",
        "index": 1,
        "parameters": [
          {
            "type": "payload",
            "payload": "unsubscribe_marketing_notifications"
          }
        ]
      }
    ]
  }
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione eventos posteriores de `whatsapp.message.updated`.

#### Explicação

* O parâmetro `caption` (usado para descrever a mídia `image`, `video` ou `document` especificada) não é suportado em mensagens `template` ou `interactive`.
* Para obter mais informações sobre as limitações de mídia de cabeçalho, consulte [Tipos de mídia suportados](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
* Use `payload` para rastrear os cliques do usuário nos botões. A carga útil do botão não é visível, mas será incluída quando um usuário clicar em um botão; consulte também [Mensagem de botão de modelo recebida](/pt/api-reference/guides/examples/webhook-examples/whatsapp-inbound-message-webhook-examples#inbound-template-button-message).

### Modelo de mensagem com vídeo e botões de chamada para ação (Call To Action)

Neste caso, você tem um **[modelo de Marketing com vídeo e botões de chamada para ação](/pt/api-reference/guides/examples/api-examples/whatsapp-template-creation-examples#marketing-template-with-video-and-call-to-action-buttons)** e envia um modelo de mensagem:

* Contém um vídeo no cabeçalho.
* Contém texto com 1 variável no corpo.
* Contém texto no rodapé.
* Contém 2 botões de chamada para ação: 1 botão `PHONE_NUMBER` e 1 botão `URL`. O botão `URL` pode ter no máximo 1 variável no final da URL.

![example-template-calltoaction.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-template-calltoaction.png)

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "template",
  "template": {
    "name": "marketing_friday_more",
    "language": {
      "code": "{{LANGUAGE-CODE}}",
      "policy": "deterministic"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "video",
            "video": {
              "link": "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.mp4"
            }
          }
        ]
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "The Friday"
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "url",
        "index": 0,
        "parameters": [
          {
            "type": "text",
            "text": "qptHJVK2EjU"
          }
        ]
      }
    ]
  }
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e correlacione eventos posteriores do `whatsapp.message.updated`.

#### Explicação

* O parâmetro `caption` (usado para descrever a mídia `image`, `video` ou `document` especificada) não é suportado em mensagens `template` ou `interactive`.

### Modelo de mensagem de cupom

Neste caso, você tem um **[modelo de Cupom](/pt/api-reference/guides/examples/api-examples/whatsapp-template-creation-examples#coupon-template)** e envia um modelo de mensagem:

* Contém texto com 2 variáveis no corpo.
* Contém 1 botão Copiar código.

![example-messaging-coupon.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-coupon.png)

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "template",
  "template": {
    "name": "marketing_coupon",
    "language": {
      "code": "{{LANGUAGE-CODE}}",
      "policy": "deterministic"
    },
    "components": [
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "Tom"
          },
          {
            "type": "text",
            "text": "25OFF"
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "copy_code",
        "index": 0,
        "parameters": [
          {
            "type": "coupon_code",
            "coupon_code": "25OFF"
          }
        ]
      }
    ]
  }
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e correlacione eventos posteriores do `whatsapp.message.updated`.

#### Explicação

* Os códigos de cupom estão limitados a 15 caracteres.
* O texto do botão não pode ser personalizado.

### Modelo de mensagem de localização

Neste caso, você tem um **[modelo de Localização](/pt/api-reference/guides/examples/api-examples/whatsapp-template-creation-examples#location-template)** e envia um modelo de mensagem de localização:

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "template",
  "template": {
    "name": "location_header",
    "language": {
      "code": "{{LANGUAGE-CODE}}",
      "policy": "deterministic"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "location",
            "location": {
              "latitude": 37.483307,
              "longitude": 122.148981,
              "name": "Pablo Morales",
              "address": "1 Hacker Way, Menlo Park, CA 94025"
            }
          }
        ]
      }
    ]
  }
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e correlacione eventos posteriores do `whatsapp.message.updated`.

#### Explicação

* `latitude` e `longitude` são obrigatórios.

### Modelo de mensagem de oferta por tempo limitado

Neste caso, você tem um **[modelo de Oferta por tempo limitado](/pt/api-reference/guides/examples/api-examples/whatsapp-template-creation-examples#limited-time-offer-template)** e envia um modelo de mensagem de oferta por tempo limitado (LTO):

* Contém uma imagem no cabeçalho.
* Exibe datas de expiração e cronômetros de contagem regressiva para o código da oferta.
* Contém texto com 2 variáveis no corpo.
* Contém 2 botões: 1 botão `COPY_CODE` e 1 botão `URL`.

![example-messaging-carousel.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-limitedtimeoffer.png)

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "template",
  "template": {
    "name": "limited_time_offer_caribbean_pkg_2023",
    "language": {
      "code": "{{LANGUAGE-CODE}}",
      "policy": "deterministic"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "image",
            "image": {
              "link": "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.jpg"
            }
          }
        ]
      },
      {
        "type": "limited_time_offer",
        "parameters": [
          {
            "type": "limited_time_offer",
            "limited_time_offer": {
              "expiration_time_ms": 1698118200000
            }
          }
        ]
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "Tom"
          },
          {
            "type": "text",
            "text": "C025"
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "copy_code",
        "index": "0",
        "parameters": [
          {
            "type": "coupon_code",
            "coupon_code": "C025"
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "url",
        "index": "1",
        "parameters": [
          {
            "type": "text",
            "text": "param025"
          }
        ]
      }
    ]
  }
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e correlacione eventos posteriores do `whatsapp.message.updated`.

#### Explicação

Faça a correspondência dos campos da requisição com o tipo de mensagem selecionado e use o ID da mensagem retornado para correlação de status.

### Modelo de mensagem de carrossel

Neste caso, você tem um **[modelo de Carrossel](/pt/api-reference/guides/examples/api-examples/whatsapp-template-creation-examples#carousel-template)** e envia um modelo de mensagem de carrossel:

* Contém texto com 2 variáveis no corpo.
* Contém 2 cartões de carrossel em uma visualização rolável horizontalmente.

![example-messaging-carousel.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-carousel.png)

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "template",
  "template": {
    "name": "summer_carousel_promo_2023",
    "language": {
      "code": "{{LANGUAGE-CODE}}",
      "policy": "deterministic"
    },
    "components": [
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "C015"
          },
          {
            "type": "text",
            "text": "15%"
          }
        ]
      },
      {
        "type": "carousel",
        "cards": [
          {
            "card_index": 0,
            "components": [
              {
                "type": "header",
                "parameters": [
                  {
                    "type": "image",
                    "image": {
                      "link": "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.jpg"
                    }
                  }
                ]
              },
              {
                "type": "body",
                "parameters": [
                  {
                    "type": "text",
                    "text": "C015"
                  },
                  {
                    "type": "text",
                    "text": "15%"
                  }
                ]
              },
              {
                "type": "button",
                "sub_type": "quick_reply",
                "index": 0,
                "parameters": [
                  {
                    "type": "payload",
                    "payload": "summer_lemons_2023"
                  }
                ]
              },
              {
                "type": "button",
                "sub_type": "url",
                "index": 1,
                "parameters": [
                  {
                    "type": "text",
                    "text": "summer_lemons_2023"
                  }
                ]
              }
            ]
          },
          {
            "card_index": 1,
            "components": [
              {
                "type": "header",
                "parameters": [
                  {
                    "type": "image",
                    "image": {
                      "link": "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.jpg"
                    }
                  }
                ]
              },
              {
                "type": "body",
                "parameters": [
                  {
                    "type": "text",
                    "text": "20OFFEXOTIC"
                  },
                  {
                    "type": "text",
                    "text": "20%"
                  }
                ]
              },
              {
                "type": "button",
                "sub_type": "quick_reply",
                "index": 0,
                "parameters": [
                  {
                    "type": "payload",
                    "payload": "summer_blues_2023"
                  }
                ]
              },
              {
                "type": "button",
                "sub_type": "url",
                "index": 1,
                "parameters": [
                  {
                    "type": "text",
                    "text": "summer_blues_2023"
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e correlacione eventos posteriores do `whatsapp.message.updated`.

#### Explicação

* Os balões de mensagem são apenas em texto e suportam variáveis. Não há limite máximo de caracteres para variáveis, mas isso conta contra o limite de 1024 caracteres do balão de mensagem.
* O texto do corpo do cartão suporta variáveis. Não há limite máximo de caracteres para variáveis, mas elas contam contra o limite de 160 caracteres do texto do corpo do cartão.

### Modelo de mensagem de catálogo

Neste caso, você tem um [modelo de Catálogo](/pt/api-reference/guides/examples/api-examples/whatsapp-template-creation-examples#catalog-template) e envia uma mensagem para compartilhar seu catálogo de produtos com os clientes.

![example-messaging-catalog.webp](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-catalog.webp)

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "template",
  "template": {
    "name": "intro_catalog_offer",
    "language": {
      "code": "{{LANGUAGE-CODE}}"
    },
    "components": [
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "100"
          },
          {
            "type": "text",
            "text": "400"
          },
          {
            "type": "text",
            "text": "3"
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "catalog",
        "index": 0,
        "parameters": [
          {
            "type": "action",
            "action": {
              "thumbnail_product_retailer_id": "2lc20305pt"
            }
          }
        ]
      }
    ]
  }
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e correlacione eventos posteriores do `whatsapp.message.updated`.

#### Explicação

* `thumbnail_product_retailer_id` é opcional. O número SKU é rotulado como Content ID no [Commerce Manager](https://business.facebook.com/commerce/). A miniatura deste item será usada como a imagem do cabeçalho da mensagem. Se o objeto `parameters` for omitido, a imagem do primeiro item do seu catálogo será usada.

### Modelo de mensagem MPM

Neste caso, você tem um [modelo MPM](/pt/api-reference/guides/examples/api-examples/whatsapp-template-creation-examples#multi-product-message-template) e envia uma mensagem para compartilhar produtos com os clientes.

Este exemplo envia um modelo aprovado chamado "abandoned\_cart" e insere uma variável (o primeiro nome do cliente) no cabeçalho do modelo e um código de desconto no corpo do modelo. Ele também define duas seções ("Popular Bundles" e "Premium Packages") e identifica os produtos (um total de 3) que devem ser inseridos nessas seções.

![example-messaging-mpm.webp](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-mpm.webp)

#### Solicitação

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "template",
  "template": {
    "name": "abandoned_cart",
    "language": {
      "code": "{{LANGUAGE-CODE}}"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "text",
            "text": "Pablo"
          }
        ]
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "10OFF"
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "mpm",
        "index": 0,
        "parameters": [
          {
            "type": "action",
            "action": {
              "thumbnail_product_retailer_id": "2lc20305pt",
              "sections": [
                {
                  "title": "Popular Bundles",
                  "product_items": [
                    {
                      "product_retailer_id": "2lc20305pt"
                    },
                    {
                      "product_retailer_id": "nseiw1x3ch"
                    }
                  ]
                },
                {
                  "title": "Premium Packages",
                  "product_items": [
                    {
                      "product_retailer_id": "n6k6x0y7oe"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    ]
  }
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e faça a correlação com eventos futuros de `whatsapp.message.updated`.

#### Explicação

* Os clientes devem estar usando o WhatsApp v2.22.24 ou superior.
* Mensagens de modelo MPM não podem ser encaminhadas para outros clientes.
* Quando um cliente adiciona um ou mais produtos ao carrinho e envia um pedido, enviaremos um webhook descrevendo o pedido. Veja também [Mensagem de Pedido Recebida](/pt/api-reference/guides/examples/webhook-examples/whatsapp-inbound-message-webhook-examples#inbound-order-message).

### Mensagem de modelo de Flow

O [WhatsApp Flows](https://developers.facebook.com/docs/whatsapp/flows) é uma forma de criar interações estruturadas para mensagens de negócios. Com os Flows, as empresas podem definir, configurar e personalizar mensagens com interações ricas que oferecem aos clientes mais estrutura na forma de comunicação.

![example-flow-intro.webp](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-flow-intro.png)

Neste caso, você envia uma mensagem com um [modelo de Flow](/pt/api-reference/guides/examples/api-examples/whatsapp-template-creation-examples#flow-template):

#### Solicitação

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "template",
  "template": {
    "name": "TEMPLATE_NAME",
    "language": {
      "code": "{{LANGUAGE-CODE}}"
    },
    "components": [
      {
        "type": "button",
        "sub_type": "flow",
        "index": 0,
        "parameters": [
          {
            "type": "action",
            "action": {
              "flow_token": "<FLOW_TOKEN>",
              "flow_action_data": {
                "data1": "value1"
              }
            }
          }
        ]
      }
    ]
  }
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e faça a correlação com eventos futuros de `whatsapp.message.updated`.

#### Explicação

* `flow_action_data` é o objeto JSON com o payload de dados para a primeira tela. Veja também [Enviar modelo com Flow - Plataforma do WhatsApp Business](https://developers.facebook.com/docs/whatsapp/flows/guides/sendingaflow#send-template-with-flow).
* Para enviar uma mensagem interativa com um Flow, consulte [Mensagem interativa de Flow](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#interactive-flow-message).
* Para receber a resposta do Flow, consulte [Mensagem de resposta de Flow interativo recebida](/pt/api-reference/guides/examples/webhook-examples/whatsapp-inbound-message-webhook-examples#inbound-interactive-flow-response-message).

### Mensagem de modelo de Detalhes do Pedido

A mensagem de modelo de detalhes do pedido permite que as empresas enviem mensagens de detalhes do pedido como parâmetros de componente de botão de call-to-action pré-definidos `Open order details`. Ela permite que as empresas enviem qualquer integração de pagamento (como [UPI Intent](https://developers.facebook.com/docs/whatsapp/cloud-api/payments-api/payments-in/upi-intent), [Payment Gateway](https://developers.facebook.com/docs/whatsapp/cloud-api/payments-api/payments-in/pg) ou [Links de Pagamento](https://developers.facebook.com/docs/whatsapp/cloud-api/payments-api/payments-in/payment-links)) como parâmetros de botão.

Aqui está um exemplo de envio de Payment Gateway nos parâmetros da mensagem de modelo de detalhes do pedido para solicitar que o consumidor efetue o pagamento.

#### Solicitação

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "template",
  "template": {
    "name": "order_details_example",
    "language": {
      "policy": "deterministic",
      "code": "{{LANGUAGE-CODE}}"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "text",
            "text": "<HEADER_TEXT>",
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "order_details",
        "index": 0,
        "parameters": [
          {
            "type": "action",
            "action": {
              "order_details": {
                "currency": "INR",
                "order": {
                  "discount": {
                    "offset": 100,
                    "value": 250
                  },
                  "items": [
                    {
                      "amount": {
                        "offset": 100,
                        "value": 400
                      },
                      "name": "<ORDER_ITEM_NAME>",
                      "quantity": 1,
                      "retailer_id": "<ORDER_ITEM_RETAILER_ID>",
                      "country_of_origin": "<ORIGIN_COUNTRY>",
                      "importer_name": "<IMPORTER_NAME>",
                      "importer_address": {
                        "address_line1": "<IMPORTER_ADDRESS>",
                        "city": "<CITY>",
                        "country_code": "<COUNTRY>",
                        "postal_code": "<ZIP_CODE>"
                      }
                    }
                  ],
                  "shipping": {
                    "offset": 100,
                    "value": 0
                  },
                  "status": "pending",
                  "subtotal": {
                    "offset": 100,
                    "value": 400
                  },
                  "tax": {
                    "offset": 100,
                    "value": 500
                  }
                },
                "payment_settings": [
                  {
                    "type": "payment_gateway",
                    "payment_gateway": {
                      "type": "billdesk",
                      "configuration_name": "<payment-config-id>",
                      "billdesk": {
                        "additional_info1": "additional_info1-value",
                        "additional_info2": "additional_info2-value",
                        "additional_info3": "additional_info3-value",
                        "additional_info4": "additional_info4-value",
                        "additional_info5": "additional_info5-value",
                        "additional_info6": "additional_info6-value",
                        "additional_info7": "additional_info7-value",
                      }
                    }
                  }
                ],
                "reference_id": "<reference_id_value>",
                "total_amount": {
                  "offset": 100,
                  "value": 650
                },
                "type": "digital-goods"
              }
            }
          }
        ]
      }
    ]
  }
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e faça a correlação com eventos futuros de `whatsapp.message.updated`.

#### Explicação

* Para saber mais sobre os parâmetros `template`, consulte também [Enviando mensagem de modelo de detalhes do pedido](https://developers.facebook.com/docs/whatsapp/cloud-api/payments-api/payments-in/orderdetailstemplate#sending-order-details-template-message).
* Antes de poder enviar mensagens de modelo de detalhes do pedido, crie um [modelo de Detalhes do Pedido](/pt/api-reference/guides/examples/api-examples/whatsapp-template-creation-examples#order-details-template).
* Você será notificado via webhooks quando o cliente tentar pagar e o status do pagamento for alterado. Consulte [Transação de pagamento atualizada](/pt/api-reference/guides/examples/webhook-examples/whatsapp-payment-updated-webhook-examples).
* Se não tiverem se passado mais de 24 horas desde que o cliente respondeu pela última vez ao número de telefone da sua empresa, você também poderá enviar uma [Mensagem interativa de Detalhes do Pedido](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#interactive-order-details-message).

### Mensagem de modelo de Status do Pedido

O modelo de status do pedido é um dos modelos de mensagem interativos que estende o botão de call-to-action para permitir a atualização do status do pedido por meio de um modelo. Ele permite que as empresas atualizem o status do pedido fora da janela de sessão do cliente em casos de uso como cobrança no cartão referente a pedidos anteriores e atualizações sobre o envio de pedidos feitos no passado.

Ao receber os sinais de pagamento, as empresas devem atualizar o status do pedido para manter o usuário informado. Atualmente, oferecemos suporte aos seguintes valores de status de pedido.

#### Solicitação

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "template",
  "template": {
    "name": "order_status_template",
    "language": {
      "policy": "deterministic",
      "code": "{{LANGUAGE-CODE}}"
    },
    "components": [
      {
        "type": "order_status",
        "parameters": [
          {
            "type": "order_status",
            "order_status": {
              "reference_id": "<reference_id_value>",
              "order": {
                "status": "processing | partially_shipped | shipped | completed | canceled",
                "description": "<OPTIONAL_DESCRIPTION>"
              }
            }
          }
        ]
      }
    ]
  }
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e faça a correlação com eventos futuros de `whatsapp.message.updated`.

#### Explicação

* Para saber mais sobre os parâmetros `template`, consulte também [Enviando mensagem de modelo de status do pedido](https://developers.facebook.com/docs/whatsapp/cloud-api/payments-api/payments-in/orderstatustemplate#sending-order-status-template-message).
* Antes de poder enviar mensagens de modelo de status do pedido, crie um [modelo de Status do Pedido](/pt/api-reference/guides/examples/api-examples/whatsapp-template-creation-examples#order-status-template).
* Se não tiverem se passado mais de 24 horas desde que o cliente respondeu pela última vez ao número de telefone da sua empresa, você também poderá enviar uma [Mensagem interativa de Status do Pedido](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#interactive-order-status-message).

<br />

***

<br />

## Exemplos de mensagens de formato livre

Os exemplos a seguir são mensagens de formato livre. Essas mensagens não exigem um modelo pré-aprovado e podem ser enviadas diretamente. No entanto, elas só podem ser enviadas dentro da janela de atendimento ao cliente de 24 horas, iniciada a partir da mensagem mais recente do cliente.

<br />

### Mensagem de texto

Neste caso, você envia uma mensagem de texto:

* Contém apenas texto simples.
* Contém uma URL e inclui uma caixa de pré-visualização em mensagens de texto definindo `preview_url` como `true`.
* Especifica uma mensagem (`context.message_id`) à qual você está respondendo.

![example-messaging-text.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-text.png)

#### Solicitação

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "text",
  "text": {
    "body": "*Learn* how to format your messages: https://faq.whatsapp.com/539178204879377",
    "preview_url": true
  },
  "context": {
    "message_id": "wamid.BgNODYxN..."
  }
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. O status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione os eventos posteriores de `whatsapp.message.updated`.

#### Explicação

* **Você só pode enviar mensagens de modelo antes que o cliente responda à sua mensagem.**
* Use `context.message_id` para especificar a mensagem à qual você está respondendo. Observe que este é o ID da mensagem original na plataforma do WhatsApp, começando com `wamid.`, e não o ID da mensagem na YCloud. O `wamid` pode ser encontrado tanto no objeto `whatsappMessage` da YCloud (quando o status muda para `sent`) quanto no objeto `whatsappInboundMessage`. Esse recurso também se aplica a outros tipos de mensagens, exceto mensagens de `template` e `sticker`.
* O corpo da mensagem do WhatsApp oferece suporte à formatação de texto, como *Itálico*, **Negrito**, ~~Tachado~~, Monoespaçado, Lista com marcadores, Lista numerada, Citação e Código em linha. Consulte também [**Como formatar suas mensagens**](https://faq.whatsapp.com/539178204879377).

### Mensagem de imagem

Neste caso, você envia uma mensagem de imagem:

* Contém uma URL de imagem.
* Contém uma legenda para descrever a imagem.

![example-messaging-image.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-image.png)

#### Solicitação

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "image",
  "image": {
    "link": "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.jpg",
    "caption": "Describes the specified media."
  }
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. O status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione os eventos posteriores de `whatsapp.message.updated`.

#### Explicação

* Tipos de imagem compatíveis: `image/jpeg`, `image/png`. As imagens devem ser de 8 bits, RGB ou RGBA.
* É necessário um perfil de cor incorporado. Consulte também [Como incorporar o perfil](https://digital-photography-school.com/choose-right-color-profile-sharing-images-online/#how-to-embed-the-profile), [Incorporar um perfil de cor no Adobe Photoshop](https://helpx.adobe.com/photoshop/using/working-with-color-profiles.html#Embedacolorprofile).
* Limite de tamanho da imagem: 5MB.
* Consulte também [Tipos de mídia compatíveis](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).

### Mensagem de vídeo

Neste caso, você envia uma mensagem de vídeo:

* Contém uma URL de vídeo.
* Contém uma legenda para descrever o vídeo.

![example-messaging-video.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-video.png)

#### Solicitação

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "video",
  "video": {
    "link": "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.mp4",
    "caption": "Describes the specified media."
  }
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. O status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione os eventos posteriores de `whatsapp.message.updated`.

#### Explicação

* Tipos de vídeo compatíveis: `video/mp4`, `video/3gpp`.
  * Apenas o codec de vídeo H.264 e o codec de áudio AAC são suportados.
  * Oferecemos suporte a vídeos com uma única faixa de áudio ou sem faixa de áudio.
  * O formato de arquivo [MP4](https://en.wikipedia.org/wiki/MP4_file_format) é derivado do formato [ISO base media file format](https://en.wikipedia.org/wiki/ISO_base_media_file_format), que é diretamente derivado do formato [QuickTime](https://en.wikipedia.org/wiki/QuickTime_File_Format) desenvolvido pela [Apple](https://www.apple.com). **No entanto, arquivos de vídeo QuickTime não são suportados, mesmo se você renomear a extensão do arquivo de`.mov` para `.mp4`.**
* Limite de tamanho do vídeo: 16MB.
* Consulte também [Tipos de mídia compatíveis](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).

### Mensagem de áudio

Neste caso, você envia uma mensagem de áudio:

* Contém uma URL de áudio.

![example-messaging-audio.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-audio.png)

#### Solicitação

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "audio",
  "audio": {
    "link": "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.mp3"
  }
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. O status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione os eventos posteriores de `whatsapp.message.updated`.

#### Explicação

* Tipos de áudio compatíveis: `audio/aac`, `audio/mp4`, `audio/mpeg`, `audio/amr`, `audio/ogg` (apenas codecs opus, `audio/ogg` básico não é suportado).
* Limite de tamanho do áudio: 16MB.
* Consulte também [Tipos de mídia compatíveis](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
* `caption` pode ser usado para mensagens de mídia do tipo `image`, `video` e `document`, mas não é suportado para mensagens de áudio.

### Mensagem de documento

Neste caso, você envia uma mensagem de documento:

* Contém uma URL de documento.
* Contém uma legenda para descrever o documento.
* Especifica o nome do arquivo do documento.

![example-messaging-document.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-document.png)

#### Solicitação

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "document",
  "document": {
    "link": "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.pdf",
    "caption": "Describes the specified media.",
    "filename": "Sample.pdf"
  }
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. O status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione os eventos posteriores de `whatsapp.message.updated`.

#### Explicação

* Tipos de documento compatíveis: `text/plain`, `application/pdf`, `application/vnd.ms-powerpoint`, `application/msword`, `application/vnd.ms-excel`, `application/vnd.openxmlformats-officedocument.wordprocessingml.document`, `application/vnd.openxmlformats-officedocument.presentationml.presentation`, `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`.
* Limite de tamanho do documento: 100MB.
* Consulte também [Tipos de mídia compatíveis](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
* `filename` é suportado apenas para mensagens de documento, não sendo suportado para nenhum outro tipo de mensagem de mídia.

### Mensagem de figurinha

Neste caso, você envia uma mensagem de figurinha:

* Contém uma URL de figurinha.

![example-messaging-sticker.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-sticker.png)

#### Solicitação

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "sticker",
  "sticker": {
    "link": "https://whatsticker.online/stickers_asset/ws-pack-196906m7W4ngr/c8e072f92595.webp"
  }
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. O status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione os eventos posteriores de `whatsapp.message.updated`.

#### Explicação

* Tipos de figurinha compatíveis: `image/webp`. Dimensão esperada: 512x512.
* Limite de tamanho da figurinha: 100KB para figurinhas estáticas e 500KB para figurinhas animadas.
* Consulte também [Tipos de mídia compatíveis](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).

### Mensagem de contatos

Neste caso, você envia uma mensagem de contatos:

* Contém 1 contato com endereços, data de nascimento, e-mails, nome, telefones etc.

![example-messaging-contacts.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-contacts.png)

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "contacts",
  "contacts": [
    {
      "addresses": [
        {
          "street": "<ADDRESS_STREET>",
          "city": "<ADDRESS_CITY>",
          "state": "<ADDRESS_STATE>",
          "zip": "<ADDRESS_ZIP>",
          "country": "<ADDRESS_COUNTRY>",
          "country_code": "<ADDRESS_COUNTRY_CODE>",
          "type": "HOME"
        }
      ],
      "birthday": "2001-01-01",
      "emails": [
        {
          "email": "joe@example.com",
          "type": "WORK"
        }
      ],
      "name": {
        "formatted_name": "<CONTACT_FORMATTED_NAME>",
        "first_name": "<CONTACT_FIRST_NAME>",
        "last_name": "<CONTACT_LAST_NAME>",
        "middle_name": "<CONTACT_MIDDLE_NAME>",
        "suffix": "<CONTACT_SUFFIX>",
        "prefix": "<CONTACT_PREFIX>"
      },
      "org": {
        "company": "<CONTACT_ORG_COMPANY>",
        "department": "<CONTACT_ORG_DEPARTMENT>",
        "title": "<CONTACT_ORG_TITLE>"
      },
      "phones": [
        {
          "phone": "+447901614024",
          "wa_id": "447901614024",
          "type": "WORK"
        }
      ],
      "urls": [
        {
          "url": "<CONTACT_URL>",
          "type": "WORK"
        }
      ]
    }
  ]
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e correlacione eventos `whatsapp.message.updated` posteriores.

#### Explicação

* `contacts[].name.formatted_name` é obrigatório.

### Mensagem de localização

Neste caso, você envia uma mensagem de localização:

* Contém latitude e longitude do local.
* Contém nome e endereço do local.

![example-messaging-location.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-location.png)

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "location",
  "location": {
    "latitude": 1.40435,
    "longitude": 103.79304,
    "name": "Singapore Zoo",
    "address": "80 Mandai Lake Road Singapore 72"
  }
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e correlacione eventos `whatsapp.message.updated` posteriores.

#### Explicação

* `latitude` e `longitude` são obrigatórios.

### Mensagem de reação

Neste caso, você envia uma mensagem de reação com emoji:

* Contém o ID da mensagem mencionada.
* Contém um emoji.

![](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaing-reaction.png)<br />
Dá um joinha (thumbs up) em uma mensagem enviada ou recebida anteriormente.

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "reaction",
  "reaction": {
    "message_id": "wamid.BgNODYxN...",
    "emoji": "👍"
  }
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e correlacione eventos `whatsapp.message.updated` posteriores.

#### Explicação

* O `message_id` é o ID da mensagem original na plataforma do WhatsApp, começando com `wamid.`.
* Defina `emoji` como `""` se quiser remover o emoji.
* Mensagens de reação não oferecem suporte a confirmações de leitura.

### Mensagem de lista interativa

Neste caso, você envia uma mensagem de lista interativa:

* Contém texto de cabeçalho, corpo e rodapé.
* Define o `interactive.type` como `list` e contém um botão com 2 seções, onde cada seção tem 2 linhas.

![example-messaging-interactivelist.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-interactivelist.png)

O destinatário pode selecionar um item da lista clicando no botão:<br />
![](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-interactivelist-select.png)

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "interactive",
  "interactive": {
    "type": "list",
    "header": {
      "type": "text",
      "text": "<HEADER_TEXT>"
    },
    "body": {
      "text": "<BODY_TEXT>"
    },
    "footer": {
      "text": "<FOOTER_TEXT>"
    },
    "action": {
      "button": "<BUTTON_TEXT>",
      "sections": [
        {
          "title": "<LIST_SECTION_1_TITLE>",
          "rows": [
            {
              "id": "<LIST_SECTION_1_ROW_1_ID>",
              "title": "<SECTION_1_ROW_1_TITLE>",
              "description": "<SECTION_1_ROW_1_DESC>"
            },
            {
              "id": "<LIST_SECTION_1_ROW_2_ID>",
              "title": "<SECTION_1_ROW_2_TITLE>",
              "description": "<SECTION_1_ROW_2_DESC>"
            }
          ]
        },
        {
          "title": "<LIST_SECTION_2_TITLE>",
          "rows": [
            {
              "id": "<LIST_SECTION_2_ROW_1_ID>",
              "title": "<SECTION_2_ROW_1_TITLE>",
              "description": "<SECTION_2_ROW_1_DESC>"
            },
            {
              "id": "<LIST_SECTION_2_ROW_2_ID>",
              "title": "<SECTION_2_ROW_2_TITLE>",
              "description": "<SECTION_2_ROW_2_DESC>"
            }
          ]
        }
      ]
    }
  }
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e correlacione eventos `whatsapp.message.updated` posteriores.

#### Explicação

* Para mensagens interativas do tipo `list`, você precisa configurar um botão e definir de 1 a 10 seções. Você pode ter um total de 10 linhas em todas as seções.

### Mensagem de botão interativo

Neste caso, você envia uma mensagem de botão interativo:

* Contém texto do corpo.
* Define o `interactive.type` como `button` e contém 2 botões de resposta rápida.

![](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-interactivebutton.png)<br />
O destinatário pode clicar em qualquer um dos botões para responder à mensagem.

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "interactive",
  "interactive": {
    "type": "button",
    "body": {
      "text": "<BUTTON_TEXT>"
    },
    "action": {
      "buttons": [
        {
          "type": "reply",
          "reply": {
            "id": "<UNIQUE_BUTTON_ID_1>",
            "title": "<BUTTON_TITLE_1>"
          }
        },
        {
          "type": "reply",
          "reply": {
            "id": "<UNIQUE_BUTTON_ID_2>",
            "title": "<BUTTON_TITLE_2>"
          }
        }
      ]
    }
  }
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e correlacione eventos `whatsapp.message.updated` posteriores.

#### Explicação

* Para mensagens interativas do tipo `buttons`, você precisa definir no máximo 3 botões de resposta rápida.

### Mensagem interativa com URL de CTA

Neste caso, você envia uma mensagem interativa com um botão de URL de chamada para ação (CTA):

* Contém texto de cabeçalho, corpo e rodapé.
* Contém um botão de URL.

![example-messaging-interactiveurl.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-interactiveurl.png)

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "interactive",
  "interactive": {
    "type": "cta_url",
    "header": {
      "type": "image",
      "image": {
        "link": "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.jpg"
      }
    },
    "body": {
      "text": "<BODY_TEXT>"
    },
    "footer": {
      "text": "<FOOTER_TEXT>"
    },
    "action": {
      "name": "cta_url",
      "parameters": {
        "display_text": "See Docs",
        "url": "https://developers.facebook.com/docs/whatsapp"
      }
    }
  }
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e correlacione eventos `whatsapp.message.updated` posteriores.

#### Explicação

* O texto do botão requer um tamanho máximo de 20 bytes.
* `body` e `action` são obrigatórios. `header` e `footer` são opcionais.

### Mensagem interativa de produto único

Neste caso, você envia uma mensagem interativa de produto:

* Contém texto do corpo e texto do rodapé.
* Define o `interactive.type` como `product` e contém uma ação com informações do produto.

![example-messaging-product.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-product.png)

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "interactive",
  "interactive": {
    "type": "product",
    "body": {
      "text": "<OPTIONAL_BODY_TEXT>"
    },
    "footer": {
      "text": "<OPTIONAL_FOOTER_TEXT>"
    },
    "action": {
      "catalog_id": "367025965434465",
      "product_retailer_id": "<ID_TEST_ITEM_1>"
    }
  }
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e correlacione eventos `whatsapp.message.updated` posteriores.

#### Explicação

* Para obter o ID do produto e do catálogo, acesse o [Meta Commerce Manager](https://business.facebook.com/commerce/).
* Consulte também [Share Products With Customers](https://developers.facebook.com/docs/whatsapp/guides/commerce-guides/share-products-with-customers).

### Mensagem interativa de múltiplos produtos

Neste caso, você envia uma mensagem interativa de lista de produtos:

* Contém texto do corpo e texto do rodapé.
* Define o `interactive.type` como `product_list` e contém múltiplos produtos.

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "interactive",
  "interactive": {
    "type": "product_list",
    "header": {
      "type": "text",
      "text": "<YOUR_TEXT_HEADER_CONTENT>"
    },
    "body": {
      "text": "<YOUR_TEXT_BODY_CONTENT>"
    },
    "footer": {
      "text": "<YOUR_TEXT_FOOTER_CONTENT>"
    },
    "action": {
      "catalog_id": "146265584024623",
      "sections": [
        {
          "title": "<SECTION1_TITLE>",
          "product_items": [
            {
              "product_retailer_id": "<YOUR_PRODUCT1_SKU_IN_CATALOG>"
            },
            {
              "product_retailer_id": "<YOUR_SECOND_PRODUCT1_SKU_IN_CATALOG>"
            }
          ]
        },
        {
          "title": "<SECTION2_TITLE>",
          "product_items": [
            {
              "product_retailer_id": "<YOUR_PRODUCT2_SKU_IN_CATALOG>"
            },
            {
              "product_retailer_id": "<YOUR_SECOND_PRODUCT2_SKU_IN_CATALOG>"
            }
          ]
        }
      ]
    }
  }
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene o `id` e correlacione eventos `whatsapp.message.updated` posteriores.

#### Explicação

* Para obter o ID do produto e do catálogo, acesse o [Meta Commerce Manager](https://business.facebook.com/commerce/).

### Mensagem interativa de catálogo

As mensagens de catálogo são mensagens de formato livre que permitem exibir seu catálogo de produtos diretamente no WhatsApp.

As mensagens de catálogo exibem uma imagem de cabeçalho com miniatura do produto de sua escolha, texto do corpo personalizado, um cabeçalho de texto fixo, um subtítulo de texto fixo e um botão **View catalog** .

![example-messaging-interactivecatalog.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-interactivecatalog.png)

Quando um cliente toca no botão **View catalog** , seu catálogo de produtos aparece dentro do WhatsApp.

![example-messaging-catalog-view.webp](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-catalog-view.webp)

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "interactive",
  "interactive": {
    "type": "catalog_message",
    "body": {
      "text": "Hello! Thanks for your interest. Ordering is easy. Just visit our catalog and add items to purchase."
    },
    "action": {
      "name": "catalog_message",
      "parameters": {
        "thumbnail_product_retailer_id": "2lc20305pt"
      }
    },
    "footer": {
      "text": "Best grocery deals on WhatsApp!"
    }
  }
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione eventos `whatsapp.message.updated` posteriores.

#### Explicação

* Você deve ter o [inventário enviado para a Meta](https://developers.facebook.com/docs/whatsapp/cloud-api/guides/sell-products-and-services/upload-inventory) em um catálogo de e-commerce [conectado à sua conta do WhatsApp Business](https://www.facebook.com/business/help/158662536425974).
* Habilite o carrinho de compras e o catálogo de produtos por número de telefone comercial. Por padrão, o carrinho de compras está ativado e o ícone da vitrine está oculto para todos os números de telefone comerciais associados a uma conta do WhatsApp Business. Use o endpoint [Update commerce settings](https://docs.ycloud.com/reference/whatsapp_phone_number-update-commerce-settings) para habilitar ou desabilitar esses recursos.

### Mensagem interativa de solicitação de localização

Mensagens de solicitação de localização são mensagens de formato livre que exibem **texto do corpo** e um **botão de envio de localização**. Quando um usuário do WhatsApp toca no botão, uma tela de compartilhamento de localização é exibida, a qual o usuário pode usar para compartilhar sua localização.

![example-messaging-location-request-sharing-response.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-localtion-request-sharing-response.png)

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "interactive",
  "interactive": {
    "type": "location_request_message",
    "body": {
      "text": "<BODY_TEXT>"
    },
    "action": {
      "name": "send_location"
    }
  }
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione eventos `whatsapp.message.updated` posteriores.

#### Explicação

* O texto do corpo (ou seja, `interactive.body`) é obrigatório e possui um limite máximo de 1024 caracteres. Cabeçalho e rodapé não são suportados.
* Assim que o usuário compartilha sua localização, um webhook `whatsapp.inbound_message.received` é acionado, contendo os detalhes de localização do usuário. Consulte também [Inbound Location message](/pt/api-reference/guides/examples/webhook-examples/whatsapp-inbound-message-webhook-examples#inbound-location-message).

### Mensagem interativa de Flow

Você pode enviar uma Mensagem com um Flow em uma conversa iniciada pelo usuário usando uma Mensagem com uma Chamada para Ação (CTA):

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "interactive",
  "interactive": {
    "type": "flow",
    "header": {
      "type": "text",
      "text": "Flow message header"
    },
    "body": {
      "text": "Flow message body"
    },
    "footer": {
      "text": "Flow message footer"
    },
    "action": {
      "name": "flow",
      "parameters": {
        "flow_message_version": "3",
        "flow_token": "AQAAAAACS5FpgQ_cAAAAAD0QI3s.",
        "flow_id": "1",
        "flow_cta": "Book!",
        "flow_action": "navigate",
        "flow_action_payload": {
          "screen": "<SCREEN_ID>",
          "data": {
            "product_name": "name",
            "product_description": "description",
            "product_price": 100
          }
        }
      }
    }
  }
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione eventos `whatsapp.message.updated` posteriores.

#### Explicação

* Para enviar uma mensagem com um Flow, introduzimos um novo tipo de objeto `interactive` chamado `flow`. Para mais informações, consulte [Interactive message parameters](https://developers.facebook.com/docs/whatsapp/flows/guides/sendingaflow#interactive-message-parameters) .
* Para enviar uma mensagem de modelo com um Flow, consulte [Flow template message](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#flow-template-message).
* Para receber a Flow Response, consulte [Inbound Interactive Flow Response message](/pt/api-reference/guides/examples/webhook-examples/whatsapp-inbound-message-webhook-examples#inbound-interactive-flow-response-message).

### Mensagem interativa de detalhes do pedido

Uma mensagem `order_details` é um novo tipo de mensagem `interactive`, que sempre contém os mesmos 4 componentes principais: `header`, `body`, `footer` e `action`. Dentro do componente `action`, a empresa inclui todas as informações necessárias para que o cliente conclua o pagamento.

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "interactive",
  "interactive": {
    "type": "order_details",
    "header": {
      "type": "image",
      "image": {
        "link": "https://the-url",
        "provider": {
          "name": "provider-name"
        }
      }
    },
    "body": {
      "text": "your-text-body-content"
    },
    "footer": {
      "text": "your-text-footer-content"
    },
    "action": {
      "name": "review_and_pay",
      "parameters": {
        "reference_id": "reference-id-value",
        "type": "digital-goods",
        "payment_settings": [
          {
            "type": "payment_gateway",
            "payment_gateway": {
              "type": "billdesk",
              "configuration_name": "payment-config-id",
              "billdesk": {
                "additional_info1": "additional_info1-value",
                "additional_info2": "additional_info2-value",
                "additional_info3": "additional_info3-value",
                "additional_info4": "additional_info4-value",
                "additional_info5": "additional_info5-value",
                "additional_info6": "additional_info6-value",
                "additional_info7": "additional_info7-value",
              }
            }
          }
        ],
        "currency": "INR",
        "total_amount": {
          "value": 21000,
          "offset": 100
        },
        "order": {
          "status": "pending",
          "catalog_id": "the-catalog_id",
          "expiration": {
            "timestamp": "utc_timestamp_in_seconds",
            "description": "cancellation-explanation"
          },
          "items": [
            {
              "retailer_id": "1234567",
              "name": "Product name, for example bread",
              "amount": {
                "value": 10000,
                "offset": 100
              },
              "quantity": 1,
              "sale_amount": {
                "value": 100,
                "offset": 100
              }
            }
          ],
          "subtotal": {
            "value": 20000,
            "offset": 100
          },
          "tax": {
            "value": 1000,
            "offset": 100,
            "description": "optional_text"
          },
          "shipping": {
            "value": 1000,
            "offset": 100,
            "description": "optional_text"
          },
          "discount": {
            "value": 1000,
            "offset": 100,
            "description": "optional_text",
            "discount_program_name": "optional_text"
          }
        }
      }
    }
  }
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione eventos `whatsapp.message.updated` posteriores.

#### Explicação

* Para saber mais sobre os parâmetros de `interactive`, consulte [Send Order Details Interactive Message](https://developers.facebook.com/docs/whatsapp/cloud-api/payments-api/payments-in/pg#step-1).
* Se mais de 24 horas se passaram desde a última resposta do cliente ao seu número de telefone comercial, envie um [modelo de mensagem de detalhes do pedido](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#order-details-template-message) em vez disso.

### Mensagem interativa de status do pedido

Para notificar o cliente sobre atualizações em um pedido, você pode enviar uma mensagem interativa do tipo order\_status conforme mostrado abaixo.

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "interactive",
  "interactive": {
    "type": "order_status",
    "body": {
      "text": "your-text-body-content"
    },
    "action": {
      "name": "review_order",
      "parameters": {
        "reference_id": "reference-id-value",
        "order": {
          "status": "processing | partially_shipped | shipped | completed | canceled",
          "description": "optional-text"
        }
      }
    }
  }
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione eventos `whatsapp.message.updated` posteriores.

#### Explicação

* Para saber mais sobre os parâmetros de `interactive`, consulte [Send order status updates](https://developers.facebook.com/docs/whatsapp/cloud-api/payments-api/payments-in/pg#step-4--update-order-status).
* Se mais de 24 horas se passaram desde a última resposta do cliente ao seu número de telefone comercial, envie um [modelo de mensagem de detalhes do pedido](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#order-status-template-message) em vez disso.
* Você será notificado via webhooks quando o cliente fizer uma tentativa e o status do pagamento for alterado. Consulte [Payment transaction updated](/pt/api-reference/guides/examples/webhook-examples/whatsapp-payment-updated-webhook-examples).

### Mensagem interativa de chamada de voz

A empresa chama esta API para enviar uma mensagem aos consumidores para divulgar o suporte por chamada usando um botão inline integrado na mensagem. Quando um consumidor clica nesse botão, ele inicia uma chamada do WhatsApp para o número comercial que enviou esta mensagem. Esse comportamento é idêntico ao do consumidor clicando no ícone de telefone/chamada na barra de título da conversa. Não há suporte para que o botão faça uma chamada do WhatsApp para um número de telefone diferente.

#### Requisição

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "interactive",
  "interactive": {
    "type": "voice_call",
    "body": {
      "text": "You can call us on WhatsApp now for faster service!"
    },
    "action": {
      "name": "voice_call",
      "parameters": {
        "display_text": "Call on WhatsApp"
      }
    }
  }
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione eventos `whatsapp.message.updated` posteriores.

#### Explicação

Faça a correspondência dos campos da requisição com o tipo de mensagem selecionado e use o ID da mensagem retornado para correlação de status.

### Mensagens interativas de carrossel de mídia

A mensagem interativa de carrossel de mídia permite que as empresas enviem cartões com rolagem horizontal contendo imagens ou vídeos, cada um com um botão de chamada para ação (CTA), dentro de conversas do WhatsApp. Esse formato permite que os usuários naveguem por várias ofertas ou conteúdos em uma única mensagem, proporcionando uma experiência rica e envolvente por meio das APIs do WhatsApp Business e dos aplicativos móveis.

* `interactive.type` deve ser `carousel`
* `interactive.action.cards` deve adicionar pelo menos 2 objetos de cartão à sua mensagem, podendo adicionar no máximo 10.
* O tipo de cada cartão deve ser definido como `cta_url`
* todos os cartões devem ter o mesmo tipo de cabeçalho (`image` ou `video`)
* deve adicionar um corpo de mensagem (`interactive.body`) à mensagem (máx. 1024 caracteres). Nenhum cabeçalho, rodapé ou botão é permitido fora dos cartões.
* deve ter a mesma estrutura para todos os cartões (cabeçalho, corpo, ação).
* o corpo do cartão é opcional, mas com no máximo 160 caracteres e até 2 quebras de linha.

![f657ef005148593d05cc1ded201de7731d11b51200fd4900ad2584533ddd282d-interactive\_media\_carousel\_message.jpg](https://files.readme.io/f657ef005148593d05cc1ded201de7731d11b51200fd4900ad2584533ddd282d-interactive_media_carousel_message.jpg)

#### Request

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "interactive",
  "interactive": {
    "type": "carousel",
    "body": {
      "text": "Check out our latest offers!"
    },
    "action": {
      "cards": [
        {
          "card_index": 0,
          "type": "cta_url",
          "header": {
            "type": "image",
            "image": {
              "link": "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.jpg"
            }
          },
          "body": {
            "text": "Exclusive deal #1"
          },
          "action": {
            "name": "cta_url",
            "parameters": {
              "display_text": "Shop now",
              "url": "https://shop.example.com/deal1"
            }
          }
        },
        {
          "card_index": 1,
          "type": "cta_url",
          "header": {
            "type": "image",
            "image": {
              "link": "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.jpg"
            }
          },
          "body": {
            "text": "Exclusive deal #2"
          },
          "action": {
            "name": "cta_url",
            "parameters": {
              "display_text": "Shop now",
              "url": "https://shop.example.com/deal2"
            }
          }
        }
      ]
    }
  }
}'
```

#### Response

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione eventos posteriores de `whatsapp.message.updated`.

#### Explicação

Faça a correspondência dos campos da solicitação com o tipo de mensagem selecionado e use o ID da mensagem retornado para correlação de status.

### Mensagens interativas de carrossel de mídia com botões de resposta rápida

* Os cartões devem incluir um botão de URL ou um ou mais botões de resposta rápida. Os tipos e as quantidades de botões devem coincidir em todos os cartões (por exemplo, se você definir um cartão com 2 botões de resposta rápida, todos os cartões deverão definir exatamente 2 botões de resposta rápida).

![a604f0105ba6b8dfa01f317ce10c2cb3961f1564a6cf12c9bede2eac57a11808-carousel\_quick\_reply.png](https://files.readme.io/a604f0105ba6b8dfa01f317ce10c2cb3961f1564a6cf12c9bede2eac57a11808-carousel_quick_reply.png)

#### Request

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "interactive",
  "interactive": {
    "type": "carousel",
    "body": {
      "text": "Check out our latest offers!"
    },
    "action": {
      "cards": [
        {
          "card_index": 0,
          "type": "cta_url",
          "header": {
            "type": "image",
            "image": {
              "link": "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.jpg"
            }
          },
          "body": {
            "text": "Exclusive deal #1"
          },
          "action": {
            "buttons": [
              {
                "type": "quick_reply",
                "quick_reply": {
                  "id": "learn-zebra-haworthia",
                  "title": "Learn more"
                }
              },
              {
                "type": "quick_reply",
                "quick_reply": {
                  "id": "fav-zebra-haworthia",
                  "title": "Add to favorites"
                }
              }
            ]
          }
        },
        {
          "card_index": 1,
          "type": "cta_url",
          "header": {
            "type": "image",
            "image": {
              "link": "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.jpg"
            }
          },
          "body": {
            "text": "Exclusive deal #2"
          },
          "action": {
            "buttons": [
              {
                "type": "quick_reply",
                "quick_reply": {
                  "id": "learn-zebra-haworthia",
                  "title": "Learn more"
                }
              },
              {
                "type": "quick_reply",
                "quick_reply": {
                  "id": "fav-zebra-haworthia",
                  "title": "Add to favorites"
                }
              }
            ]
          }
        }
      ]
    }
  }
}'
```

#### Response

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione eventos posteriores de `whatsapp.message.updated`.

#### Explicação

Faça a correspondência dos campos da solicitação com o tipo de mensagem selecionado e use o ID da mensagem retornado para correlação de status.

### Mensagem com botão de checkout

Assim que o seu modelo com botão de checkout for aprovado, você poderá enviá-lo em uma mensagem de modelo

#### Request

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "template",
  "template": {
    "name": "item_back_in_stock_v1",
    "language": {
      "code": "{{LANGUAGE-CODE}}",
      "policy": "deterministic",

    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "image",
            "image": {
              "id": "12312312", <!-- Only if using uploaded media -->
              "link": "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.jpg" <!-- Only if using hosted media (not recommended) -->
            }
          }
        ]
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "Nidhi"
          },
          {
            "type": "text",
            "text": "Blue Elf Aloe"
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "order_details",
        "index": 0,
        "parameters": [
          {
            "type": "action",
            "action": {
              "order_details": {
                "reference_id": "abc.123_xyz-1",
                "type": "physical-goods",
                "currency": "INR",
                "payment_settings": [
                  {
                    "type": "payment_gateway",
                    "payment_gateway": {
                      "type": "razorpay",
                      "configuration_name": "prod-razor-pay-config-05"
                    }
                  }
                ],
                "shipping_info": {
                  "country": "IN",
                  "addresses": [
                    {
                      "name": "Nidhi Tripathi",
                      "phone_number": "919000090000",
                      "address": "Bandra Kurla Complex",
                      "city": "Mumbai",
                      "state": "Maharastra",
                      "in_pin_code": "400051",
                      "house_number": "12",
                      "tower_number": "5",
                      "building_name": "One BKC",
                      "landmark_area": "Near BKC Circle"
                    }
                  ]
                },
                "order": {
                  "items": [
                    {
                      "amount": {
                        "offset": 100,
                        "value": 200000
                      },
                      "sale_amount": {
                        "offset": 100,
                        "value": 150000
                      },
                      "name": "Blue Elf Aloe",
                      "quantity": 1,
                      "country_of_origin": "India",
                      "importer_name": "Lucky Shrub Imports and Exports",
                      "importer_address": {
                        "address_line1": "One BKC",
                        "address_line2": "Bandra Kurla Complex",
                        "city": "Mumbai",
                        "zone_code": "MH",
                        "postal_code": "400051",
                        "country_code": "IN"
                      }
                    }
                  ],
                  "subtotal": {
                    "offset": 100,
                    "value": 150000
                  },
                  "shipping": {
                    "offset": 100,
                    "value": 20000
                  },
                  "tax": {
                    "offset": 100,
                    "value": 10000
                  },
                  "discount": {
                    "offset": 100,
                    "value": 15000,
                    "description": "Additional 10% off"
                  },
                  "status": "pending",
                  "expiration": {
                    "timestamp": "1726627150"
                  }
                },
                "total_amount": {
                  "offset": 100,
                  "value": 165000
                }
              }
            }
          }
        ]
      }
    ]
  }
}'
```

#### Response

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione eventos posteriores de `whatsapp.message.updated`.

#### Explicação

Faça a correspondência dos campos da solicitação com o tipo de mensagem selecionado e use o ID da mensagem retornado para correlação de status.

### Mensagem de modelo com GIF

Neste caso, você envia uma mensagem de modelo com GIF:

* Contém uma URL de GIF.

![d29ea20d56e36017614121fc2079e5c513d6f922c3713a2c963e3dfca7570c0c-Feishu20260128-162503.gif](https://files.readme.io/d29ea20d56e36017614121fc2079e5c513d6f922c3713a2c963e3dfca7570c0c-Feishu20260128-162503.gif)

#### Request

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/messages/sendDirectly' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "from": "{{BUSINESS-PHONE-NUMBER}}",
  "to": "{{CUSTOMER-PHONE-NUMBER}}",
  "type": "template",
  "template": {
    "name": "marketing_friday_more",
    "language": {
      "code": "{{LANGUAGE-CODE}}",
      "policy": "deterministic"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "gif",
            "gif": {
              "link": "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.mp4"
            }
          }
        ]
      }
    ]
  }
}'
```

#### Response

Uma solicitação bem-sucedida retorna o objeto de mensagem da YCloud. Um status inicial `accepted` confirma o envio, não a entrega final.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "MESSAGE_ID",
  "status": "accepted"
}
```

Armazene `id` e correlacione eventos posteriores de `whatsapp.message.updated`.

<br />

#### Explicação

Faça a correspondência dos campos da solicitação com o tipo de mensagem selecionado e use o ID da mensagem retornado para correlação de status.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.