Enviar um modelo de mensagem com mídia no WhatsApp

Neste trecho de código, você aprenderá a enviar um modelo de mensagem com mídia do WhatsApp usando a Messages API.

Para enviar o modelo de mensagem de mídia, é necessário usar o objeto personalizado “Mensagens”. Esse objeto personalizado utiliza uma parte da solicitação original da Messages API do WhatsApp e a envia diretamente para o WhatsApp.

IMPORTANTE: Se um cliente enviar uma mensagem para você, você tem 24 horas para responder a ele com uma mensagem de formato livre. Após esse período, você deve usar uma mensagem modelo (MTM). Se um cliente não tiver enviado uma mensagem primeiro, na primeira vez que você enviar uma mensagem a um usuário, o WhatsApp exige que a mensagem contenha um modelo. Isso é explicado com mais detalhes no Tópico: Entendendo o WhatsApp.

Restrições quanto ao formato e ao comprimento das mensagens

Os modelos de mensagens com mídia do WhatsApp consistem em uma estrutura composta por cabeçalho, corpo e rodapé. O cabeçalho contém a mídia, que pode ser texto, localização, vídeo, imagem ou arquivo. O corpo contém a mensagem de texto. Atualmente, isso está limitado a 1.024 caracteres quando exibido ao usuário final, a fim de evitar a necessidade de rolagem. O rodapé é opcional e contém apenas texto estático.

NOTA: Atualmente, o comprimento do cabeçalho e do rodapé está limitado a 60 caracteres cada, e o comprimento do corpo da mensagem está limitado a 1.024 caracteres.

Exemplo

Veja a seguir a descrição de todas as variáveis utilizadas em cada trecho de código:

ChaveDescrição
VONAGE_APPLICATION_ID

The Vonage Application ID.

VONAGE_APPLICATION_PRIVATE_KEY_PATH

Private key path.

BASE_URL

For production use the base URL is https://api.nexmo.com/. For sandbox testing the base URL is https://messages-sandbox.nexmo.com/.

MESSAGES_API_URL

There are two versions of the API, each with their own endpoints. For production the previous Messages API endpoint was https://api.nexmo.com/v0.1/messages, the new one is https://api.nexmo.com/v1/messages. For sandbox testing the Messages API endpoint is https://messages-sandbox.nexmo.com/v0.1/messages or https://messages-sandbox.nexmo.com/v1/messages, depending on which version you have set in the sandbox dashboard.

WHATSAPP_NUMBER

The WhatsApp number that has been allocated to you by Vonage. For sandbox testing the number is 14157386102.

VONAGE_WHATSAPP_NUMBER

Refer to WHATSAPP_NUMBER above.

VONAGE_NUMBER

Refer to WHATSAPP_NUMBER above.

TO_NUMBER

Replace with the number you are sending to. E.g. 447700900001

WHATSAPP_TEMPLATE_NAME

The name of the template created in your WhatsApp Business Account.

IMAGE_URL

The link to the image file to send.

WHATSAPP_TEMPLATE_REPLACEMENT_TEXT

Text to populate place-holders in a WhatsApp template message.

NOTA: Não use um espaço à esquerda + ou 00 Ao digitar um número de telefone, comece com o código do país; por exemplo, 447700900000.

Pré-requisitos

Se você não tiver um aplicativo, acesse criar um. Certifique-se também de acessar configure seus webhooks.

Escreva o código

Adicione o seguinte ao arquivo ` send-media-mtm.sh`:

curl -X POST "${MESSAGES_API_URL}" \
  -H "Authorization: Bearer "$JWT\
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d $'{
    "to": "'${MESSAGES_TO_NUMBER}'",
    "from": "'${WHATSAPP_SENDER_ID}'",
    "channel": "whatsapp",
    "message_type": "custom",
    "custom": {
      "type": "template",
      "template": {
        "name": "'${WHATSAPP_TEMPLATE_NAME}'",
        "language": {
          "policy": "deterministic",
          "code": "en"
        },
        "components": [
          {
            "type": "header",
            "parameters": [
              {
                "type": "image",
                "image": {
                  "link": "'${MESSAGES_IMAGE_URL}'"
                }
              }
            ]
          },
          {
            "type": "body",
            "parameters": [
              {
                "type": "text",
                "text": "Joe Bloggs"
              },
              {
                "type": "text",
                "text": "AB123456"
              }
            ]
          }
        ]
      }
    }
  }'

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

bash send-media-mtm.sh

Pré-requisitos

Se você não tiver um aplicativo, acesse criar um. Certifique-se também de acessar configure seus webhooks.

npm install @vonage/server-sdk @vonage/messages

Crie um arquivo chamado ` send-media-mtm.js ` e insira o seguinte código:

const { Vonage } = require('@vonage/server-sdk');
const { Channels } = require('@vonage/messages');

/**
 * It is best to send messages using JWT instead of basic auth. If you leave out
 * apiKey and apiSecret, the messages SDK will send requests using JWT tokens
 *
 * @link https://developer.vonage.com/en/messages/technical-details#authentication
 */
const vonage = new Vonage(
  {
    applicationId: VONAGE_APPLICATION_ID,
    privateKey: VONAGE_PRIVATE_KEY,
  },
  {
    ...(MESSAGES_API_URL ? {apiHost: MESSAGES_API_URL} : {}),
  },
);

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` send-media-mtm.js`:

vonage.messages.send({
  to: MESSAGES_TO_NUMBER,
  from: WHATSAPP_SENDER_ID,
  channel: Channels.WHATSAPP,
  messageType: 'custom',
  custom: {
    type: 'template',
    template: {
      name: WHATSAPP_TEMPLATE_NAME,
      language: {
        policy: 'deterministic',
        code: 'en',
      },
      components: [
        {
          type: 'header',
          parameters: [
            {
              type: 'image',
              image: {
                link: MESSAGES_IMAGE_URL,
              },
            },
          ],
        },
        {
          type: 'body',
          parameters: [
            {
              type: 'text',
              text: 'Joe Bloggs',
            },
            {
              type: 'text',
              text: 'AB123456',
            },
          ],
        },
      ],
    },
  },
})
  .then(({ messageUUID }) => console.log(messageUUID))
  .catch((error) => console.error(error));

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

node send-media-mtm.js

Pré-requisitos

Se você não tiver um aplicativo, acesse criar um. Certifique-se também de acessar configure seus webhooks.

Adicione o seguinte ao arquivo ` build.gradle`:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'

Crie um arquivo chamado ` SendWhatsappMediaTemplate ` e adicione o código a seguir ao método ` main `:

val client = Vonage {
    applicationId(VONAGE_APPLICATION_ID)
    privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
}

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao método ` main ` do arquivo ` SendWhatsappMediaTemplate `:

val messageId = client.messages.send(
    whatsappCustom {
        to(MESSAGES_TO_NUMBER)
        from(WHATSAPP_SENDER_ID)
        custom(mapOf(
            "type" to MessageType.TEMPLATE,
            "template" to mapOf(
                "name" to WHATSAPP_TEMPLATE_NAME,
                "language" to mapOf(
                    "policy" to Policy.DETERMINISTIC,
                    "code" to Locale.ENGLISH
                ),
                "components" to listOf(
                    mapOf(
                        "type" to "header",
                        "parameters" to listOf(
                            mapOf(
                                "type" to MessageType.IMAGE,
                                "image" to mapOf(
                                    "link" to MESSAGES_IMAGE_URL
                                )
                            )
                        )
                    ),
                    mapOf(
                        "type" to "body",
                        "parameters" to listOf(
                            mapOf(
                                "type" to MessageType.TEXT,
                                "text" to WHATSAPP_TEMPLATE_REPLACEMENT_TEXT
                            )
                        )
                    )
                )
            )
        ))
    }
)

Ver código-fonte completo

Execute seu código

Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.kt.messages.whatsapp ` pelo pacote que contém ` SendWhatsappMediaTemplate`:

gradle run -Pmain=com.vonage.quickstart.kt.messages.whatsapp.SendWhatsappMediaTemplate

Pré-requisitos

Se você não tiver um aplicativo, acesse criar um. Certifique-se também de acessar configure seus webhooks.

Adicione o seguinte ao arquivo ` build.gradle`:

implementation 'com.vonage:server-sdk:9.3.1'

Crie um arquivo chamado ` SendWhatsappMediaTemplate ` e adicione o código a seguir ao método ` main `:

VonageClient client = VonageClient.builder()
		.applicationId(VONAGE_APPLICATION_ID)
		.privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
		.build();

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao método ` main ` do arquivo ` SendWhatsappMediaTemplate `:

var response = client.getMessagesClient().sendMessage(
	WhatsappCustomRequest.builder()
		.from(WHATSAPP_SENDER_ID).to(MESSAGES_TO_NUMBER)
		.custom(Map.of(
				"type", MessageType.TEMPLATE,
				"template", Map.of(
					"name", WHATSAPP_TEMPLATE_NAME,
					"language", Map.of(
						"policy", Policy.DETERMINISTIC,
						"code", Locale.ENGLISH
					),
					"components", List.of(
						Map.of(
							"type", "header",
							"parameters", List.of(
								Map.of(
									"type", MessageType.IMAGE,
									"image", Map.of(
										"link", MESSAGES_IMAGE_URL
									)
								)
							)
						),
						Map.of(
							"type", "body",
							"parameters", List.of(
								Map.of(
									"type", MessageType.TEXT,
									"text", WHATSAPP_TEMPLATE_REPLACEMENT_TEXT
								)
							)
						)
					)
				)
		)).build()
);
System.out.println("Message sent successfully. ID: "+response.getMessageUuid());

Ver código-fonte completo

Execute seu código

Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.messages.whatsapp ` pelo pacote que contém ` SendWhatsappMediaTemplate`:

gradle run -Pmain=com.vonage.quickstart.messages.whatsapp.SendWhatsappMediaTemplate

Pré-requisitos

Se você não tiver um aplicativo, acesse criar um. Certifique-se também de acessar configure seus webhooks.

Install-Package Vonage

Escreva o código

Adicione o seguinte ao arquivo ` SendWhatsAppMediaMtm.cs`:

var credentials = Credentials.FromAppIdAndPrivateKeyPath(VONAGE_APPLICATION_ID, VONAGE_PRIVATE_KEY_PATH);
var vonageClient = new VonageClient(credentials);
var request = new WhatsAppCustomRequest
{
    To = MESSAGES_TO_NUMBER,
    From = WHATSAPP_SENDER_ID,
    Custom = new
    {
        type = "template",
        template = new
        {
            name = WHATSAPP_TEMPLATE_NAME,
            language = new
            {
                code = "en",
                policy = "deterministic"
            },
            components = new object[]
            {
                new
                {
                    type = "header",
                    image = new
                    {
                        link = MESSAGES_IMAGE_URL
                    }
                },
                new
                {
                    type = "body",
                    parameters = new[]
                    {
                        new
                        {
                            type = "text",
                            text = "This is a WhatsApp Media Message Template Message sent using the Vonage Messages API."
                        }
                    }
                }
            }
        }
    }
};
var response = await vonageClient.MessagesClient.SendAsync(request);

Ver código-fonte completo

Pré-requisitos

Se você não tiver um aplicativo, acesse criar um. Certifique-se também de acessar configure seus webhooks.

composer require vonage/client

Crie um arquivo chamado ` send-media-mtm.php ` e insira o seguinte código:

$keypair = new \Vonage\Client\Credentials\Keypair(
    file_get_contents(VONAGE_APPLICATION_PRIVATE_KEY_PATH),
    VONAGE_APPLICATION_ID
);

$client = new \Vonage\Client($keypair);

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` send-media-mtm.php`:

$custom = [
    "type" => "template",
    "template" => [
        "name" => WHATSAPP_TEMPLATE_NAME,
        "language" => ["policy" => "deterministic", "code" => "en"],
        "components" => [
            [
                "type" => "header",
                "parameters" => [
                    [
                        "type" => "image",
                        "image" => [
                            "link" => IMAGE_URL,
                        ],
                    ],
                ],
            ],
            [
                "type" => "body",
                "parameters" => [
                    "type" => "text",
                    "text" => WHATSAPP_TEMPLATE_REPLACEMENT_TEXT,
                ],
            ],
        ],
    ],
];

$whatsApp = new \Vonage\Messages\Channel\WhatsApp\WhatsAppCustom(
    TO_NUMBER,
    FROM_NUMBER,
    $custom
);

$client->messages()->send($whatsApp);

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

php send-media-mtm.php

Pré-requisitos

Se você não tiver um aplicativo, acesse criar um. Certifique-se também de acessar configure seus webhooks.

pip install vonage python-dotenv

Escreva o código

Adicione o seguinte ao arquivo ` send-media-template.py`:

from vonage import Auth, Vonage
from vonage_messages import WhatsappCustom

client = Vonage(
    Auth(
        application_id=VONAGE_APPLICATION_ID,
        private_key=VONAGE_PRIVATE_KEY,
    )
)

message = WhatsappCustom(
    to=MESSAGES_TO_NUMBER,
    from_=WHATSAPP_SENDER_ID,
    custom={
        "type": "template",
        "template": {
            "name": WHATSAPP_TEMPLATE_NAME,
            "language": {"policy": "deterministic", "code": "en"},
            "components": [
                {
                    "type": "header",
                    "parameters": [
                        {
                            "type": "image",
                            "image": {
                                "link": MESSAGES_IMAGE_URL,
                            },
                        },
                    ],
                },
                {
                    "type": "body",
                    "parameters": [
                        {"type": "text", "text": "Joe Bloggs"},
                        {"type": "text", "text": "AB123456"},
                    ],
                },
            ],
        },
    },
)

response = client.messages.send(message)
print(response)

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

python messages/whatsapp/send-media-template.py

Pré-requisitos

Se você não tiver um aplicativo, acesse criar um. Certifique-se também de acessar configure seus webhooks.

gem install vonage

Crie um arquivo chamado ` send-media-mtm.rb ` e insira o seguinte código:

client = Vonage::Client.new(
  application_id: VONAGE_APPLICATION_ID,
  private_key: VONAGE_PRIVATE_KEY
)

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` send-media-mtm.rb`:

message = client.messaging.whatsapp(
  type: 'custom',
  message: {
    type: "template",
    template: {
      name: WHATSAPP_TEMPLATE_NAME,
      language: {
        policy: "deterministic",
        code: "en"
      },
      components: [
        {
          type: "header",
          parameters: [
            {
              type: "image",
              image: {
                link: MESSAGES_IMAGE_URL
              }
            }
          ]
        },
        {
          type: "body",
          parameters: [
            {
              type: "text",
              text: "Joe Bloggs"
            },
            {
              type: "text",
              text: "AB123456"
            }
          ]
        }
      ]
    }
  }
)

client.messaging.send(
  from: WHATSAPP_SENDER_ID,
  to: MESSAGES_TO_NUMBER,
  **message
)

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

ruby send-media-mtm.rb

Experimente

Ao executar o código, um modelo de mensagem com mídia do WhatsApp é enviado para o número de destino.

Mais informações