Partilhar via


Guia de início rápido: baixe a mídia de mensagens do WhatsApp

Os Serviços de Comunicação do Azure permitem enviar e receber mensagens do WhatsApp. Este artigo descreve como baixar a carga de mídia recebida em uma mensagem do WhatsApp.

Caso de uso: uma empresa recebe uma mensagem do WhatsApp de seu cliente que contém uma imagem. A empresa precisa baixar a imagem do WhatsApp para visualizá-la.

As mensagens de entrada para a empresa são publicadas como eventos Microsoft.Communication.AdvancedMessageReceived Event Grid. Este exemplo usa o ID de mídia e o tipo MIME de AdvancedMessageReceived mídia no evento para baixar a carga útil de mídia.

Um exemplo de um AdvancedMessageReceived evento com conteúdo multimédia:

[{
  "id": "00000000-0000-0000-0000-000000000000",
  "topic": "/subscriptions/{subscription-id}/resourcegroups/{resourcegroup-name}/providers/microsoft.communication/communicationservices/{communication-services-resource-name}",
  "subject": "advancedMessage/sender/{sender@id}/recipient/11111111-1111-1111-1111-111111111111",
  "data": {
    "channelType": "whatsapp",
    "media": {
      "mimeType": "image/jpeg",
      "id": "22222222-2222-2222-2222-222222222222"
    },
    "from": "{sender@id}",
    "to": "11111111-1111-1111-1111-111111111111",
    "receivedTimestamp": "2023-07-06T18:30:19+00:00"
  },
  "eventType": "Microsoft.Communication.AdvancedMessageReceived",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2023-07-06T18:30:22.1921716Z"
}]

Pré-requisitos

Configurar ambiente

Criar o projeto .NET

Para criar seu projeto, siga o tutorial em Criar um aplicativo de console .NET usando o Visual Studio.

Para compilar o código, pressione Ctrl+F7.

Instalar o pacote

Instale o pacote NuGet Azure.Communication.Messages em seu projeto C#.

  1. Abra o Gerenciador de Pacotes NuGet em Project>Manage NuGet Packages....
  2. Procure o pacote Azure.Communication.Messages.
  3. Instale a versão mais recente.

Configurar a estrutura do aplicativo

Abra o Program.cs ficheiro num editor de texto.

Substitua os conteúdos de Program.cs pelo seguinte código:

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Azure;
using Azure.Communication.Messages;

namespace AdvancedMessagingQuickstart
{
    class Program
    {
        public static async Task Main(string[] args)
        {
            Console.WriteLine("Azure Communication Services - Advanced Messages quickstart samples.");

            // Quickstart code goes here
        }
    }
}

Para usar os recursos de Mensagens Avançadas, adicione uma using diretiva para incluir o Azure.Communication.Messages namespace.

using Azure.Communication.Messages;

Modelo de objeto

As classes e interfaces a seguir lidam com alguns dos principais recursos do SDK de Mensagens Avançadas dos Serviços de Comunicação do Azure para .NET.

Nome Descrição
NotificationMessagesClient Essa classe se conecta ao seu recurso dos Serviços de Comunicação do Azure. Ele envia as mensagens.
BaixarMediaAsync Transfira a carga útil de multimédia de uma mensagem de Utilizador para Empresa de forma assíncrona, gravando o conteúdo num fluxo.
BaixarMediaToAsync Transfira a carga útil de multimédia de uma mensagem de Utilizador para Empresa de forma assíncrona, gravando o conteúdo num ficheiro.
Microsoft.Communication.AdvancedMessageReceived Evento de Grade de Eventos que é publicado quando o Advanced Messaging recebe uma mensagem.

Configuração comum

Siga estas etapas para adicionar trechos de código necessários ao programa messages-quickstart.py python.

Autenticar o cliente

O SDK de mensagens usa o NotificationMessagesClient para enviar mensagens. O NotificationMessagesClient método autentica usando sua cadeia de conexão adquirida do recurso Serviços de Comunicação do Azure no portal do Azure. Para obter mais informações sobre cadeias de conexão, consulte access-your-connection-strings-and-service-endpoints.

Para simplificar, este artigo usa uma cadeia de conexão para autenticar. Em ambientes de produção, recomendamos o uso de entidades de serviço.

Obtenha a cadeia de conexão do seu recurso dos Serviços de Comunicação do Azure no portal do Azure. À esquerda, navegue até a Keys guia. Copie o Connection string campo da chave primária. A cadeia de conexão está no formato endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key}.

Captura de ecrã que mostra um recurso dos Serviços de Comunicação do Azure no portal do Azure, visualizando o campo 'Cadeia de ligação' na secção 'Chave primária'.

Defina a variável COMMUNICATION_SERVICES_CONNECTION_STRING de ambiente para o valor da sua cadeia de conexão.
Abra uma janela do console e digite o seguinte comando:

setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"

Depois de adicionar a variável de ambiente, talvez seja necessário reiniciar todos os programas em execução que precisarão ler a variável de ambiente, incluindo a janela do console. Por exemplo, se você estiver usando o Visual Studio como editor, reinicie o Visual Studio antes de executar o exemplo.

Para obter mais informações sobre como definir uma variável de ambiente para seu sistema, siga as etapas em Armazenar sua cadeia de conexão em uma variável de ambiente.

Para instanciar um NotificationMessagesClient, adicione o seguinte código ao Main método:

// Retrieve connection string from environment variable
string connectionString = 
    Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_CONNECTION_STRING");

// Instantiate the client
var notificationMessagesClient = new NotificationMessagesClient(connectionString);

Definir ID de registro do canal

Você criou o GUID do ID de registro do canal durante o registro do canal. Encontre-o no portal na guia Canais do seu recurso dos Serviços de Comunicação do Azure.

Captura de ecrã que mostra um recurso dos Serviços de Comunicação do Azure no portal do Azure, visualizando o separador 'Canais'. A atenção é colocada na ação de cópia do campo 'ID do canal'.

Atribua-o a uma variável chamada channelRegistrationId.

var channelRegistrationId = new Guid("<your channel registration ID GUID>");

Definir lista de destinatários

Você precisa fornecer um número de telefone ativo associado a uma conta do WhatsApp. Esta conta do WhatsApp recebe o modelo, o texto e as mensagens de mídia enviadas neste início rápido.

Para este exemplo, você pode usar seu número de telefone pessoal.

O número de telefone do destinatário não pode ser o número de telefone comercial (ID do remetente) associado ao registro do canal do WhatsApp. O ID do Remetente aparece como o remetente das mensagens de texto e mídia enviadas ao destinatário.

O número de telefone deve incluir o código do país. Para obter mais informações sobre a formatação do número de telefone, consulte a documentação do WhatsApp para formatos de número de telefone.

Nota

Atualmente, apenas um número de telefone é suportado na lista de destinatários.

Crie a lista de destinatários da seguinte forma:

var recipientList = new List<string> { "<to WhatsApp phone number>" };

Exemplo:

// Example only
var recipientList = new List<string> { "+14255550199" };

Comece a enviar mensagens entre uma empresa e um usuário do WhatsApp

As conversas entre uma conta do WhatsApp Business e um usuário do WhatsApp podem ser iniciadas de duas maneiras:

  • A empresa envia uma mensagem modelo para o usuário do WhatsApp.
  • O usuário do WhatsApp envia qualquer mensagem para o número comercial.

Uma empresa não pode iniciar uma conversa interativa. Uma empresa só pode enviar uma mensagem interativa depois de receber uma mensagem do utilizador. A empresa só pode enviar mensagens interativas para o usuário durante a conversa ativa. Quando a janela de conversa de 24 horas expirar, apenas o usuário poderá reiniciar a conversa interativa. Para obter mais informações sobre conversas, consulte a definição em WhatsApp Business Platform.

Para iniciar uma conversa interativa a partir da sua conta pessoal do WhatsApp, envie uma mensagem para o número da sua empresa (ID do remetente).

Uma conversa do WhatsApp visualizada na web mostrando uma mensagem de usuário enviada para o número da conta do WhatsApp Business.

Exemplos de código

Siga estas etapas para adicionar trechos de código necessários à função Principal do seu Program.cs arquivo.

Transferir a carga útil de multimédia para um fluxo

O SDK de Mensagens permite que a Contoso baixe a mídia em mensagens de mídia recebidas do WhatsApp de usuários do WhatsApp. Para baixar a carga útil de mídia para um fluxo, você precisa:

Defina o ID de mídia da mídia que você deseja buscar.

// MediaId GUID of the media received in an incoming message.
// Ex. "00000000-0000-0000-0000-000000000000"
var mediaId = "<MediaId>";

Baixe a mídia para o fluxo de destino.

// Download media to stream
Response<Stream> fileResponse = await notificationMessagesClient.DownloadMediaAsync(mediaId);

A carga útil de mídia agora está disponível no fluxo de resposta.

Continue com este exemplo para gravar o fluxo em um arquivo.

O ID de mídia e o tipo MIME da carga útil estão disponíveis no conteúdo de mídia do evento AdvancedMessageReceived. No entanto, ao baixar mídia para um fluxo, o tipo MIME estará novamente disponível para você nos cabeçalhos de resposta no Response<Stream>.

Em ambos os casos, você precisa converter o tipo MIME em um tipo de arquivo. Defina este auxiliar para a conversão.

private static string GetFileExtension(string contentType)
{
    return MimeTypes.TryGetValue(contentType, out var extension) ? extension : string.Empty;
}

private static readonly Dictionary<string, string> MimeTypes = new Dictionary<string, string>
{
    { "application/pdf", ".pdf" },
    { "image/jpeg", ".jpg" },
    { "image/png", ".png" },
    { "video/mp4", ".mp4" },
    // Add more mappings as needed
};

Defina o local do arquivo onde você deseja gravar a mídia. Este exemplo usa o tipo MIME retornado nos cabeçalhos de resposta de DownloadMediaAsync.

// File extension derived from the MIME type in the response headers.
// Ex. A MIME type of "image/jpeg" would mean the fileExtension should be ".jpg"
var contentType = fileResponse.GetRawResponse().Headers.ContentType;
string fileExtension = GetFileExtension(contentType);

// File location to write the media. 
// Ex. @"c:\temp\media.jpg"
string filePath = @"<FilePath>" + "<FileName>" + fileExtension;

Escreva o fluxo no arquivo.

 // Write the media stream to the file
using (Stream outStream = File.OpenWrite(filePath))
{
    fileResponse.Value.CopyTo(outStream);
}

Baixar a carga útil de mídia para um arquivo

O SDK de Mensagens permite que a Contoso baixe a mídia nas mensagens de mídia do WhatsApp recebidas dos usuários do WhatsApp. Para baixar a carga útil de mídia para um arquivo, você precisa:

  • NotificationMessagesClient autenticado.
  • O GUID de ID de mídia da mídia, recebido de uma mensagem de entrada em um evento AdvancedMessageReceived.
  • A extensão de arquivo de mídia, derivada do tipo MIME recebido em uma mensagem de entrada com conteúdo de mídia.
  • O nome do arquivo de destino de sua escolha.
  • O caminho do arquivo de destino de sua escolha.

Defina o ID de mídia da mídia que você deseja buscar e o local do arquivo onde você deseja escrever a mídia.

// MediaId GUID of the media received in an incoming message.
// Ex. "00000000-0000-0000-0000-000000000000"
var mediaId = "<MediaId>";

// File extension derived from the MIME type received in an incoming message
// Ex. A MIME type of "image/jpeg" would mean the fileExtension should be ".jpg"
string fileExtension = "<FileExtension>";
// File location to write the media. 
// Ex. @"c:\temp\media.jpg"
string filePath = @"<FilePath>" + "<FileName>" + fileExtension; 

Baixe a mídia para o caminho de destino.

// Download media to file
Response response = await notificationMessagesClient.DownloadMediaToAsync(mediaId, filePath);

Executar o código

Crie e execute o seu programa.

  1. Para compilar o código, pressione Ctrl+F7.
  2. Para executar o programa sem depuração, pressione Ctrl+F5.

Código de exemplo completo

using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Azure;
using Azure.Communication.Messages;

namespace AdvancedMessagingDownloadMediaQuickstart
{
    class Program
    {
        public static async Task Main(string[] args)
        {
            Console.WriteLine("Azure Communication Services - Download WhatsApp message media");

            // Authenticate the client
            string connectionString = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_CONNECTION_STRING");
            NotificationMessagesClient notificationMessagesClient =
                new NotificationMessagesClient(connectionString);

            await DownloadMediaWithStreamAsync(notificationMessagesClient);
            await DownloadMediaToFileAsync(notificationMessagesClient);

            Console.WriteLine("\n\nPress any key to exit.");
            Console.ReadKey();
        }

        public static async Task DownloadMediaWithStreamAsync(NotificationMessagesClient notificationMessagesClient)
        {
            // MediaId GUID of the media received in an incoming message.
            // Ex. "00000000-0000-0000-0000-000000000000"
            var mediaId = "<MediaId>";

            Response<Stream> fileResponse;
            try
            {
                // Download media to stream
                fileResponse = await notificationMessagesClient.DownloadMediaAsync(mediaId);

                Console.WriteLine(fileResponse.ToString());
            }
            catch (RequestFailedException e)
            {
                Console.WriteLine(e);
                return;
            }

            // File extension derived from the MIME type in the response headers.
            // Ex. A MIME type of "image/jpeg" would mean the fileExtension should be ".jpg"
            var contentType = fileResponse.GetRawResponse().Headers.ContentType;
            string fileExtension = GetFileExtension(contentType);

            // File location to write the media. 
            // Ex. @"c:\temp\media.jpg"
            string filePath = @"<FilePath>" + "<FileName>" + fileExtension;
            Console.WriteLine(filePath);

            // Write the media stream to the file
            using (Stream outStream = File.OpenWrite(filePath))
            {
                fileResponse.Value.CopyTo(outStream);
            }
        }

        private static string GetFileExtension(string contentType)
        {
            return MimeTypes.TryGetValue(contentType, out var extension) ? extension : string.Empty;
        }

        private static readonly Dictionary<string, string> MimeTypes = new Dictionary<string, string>
        {
            { "application/pdf", ".pdf" },
            { "image/jpeg", ".jpg" },
            { "image/png", ".png" },
            { "video/mp4", ".mp4" },
            // Add more mappings as needed
        };

        public static async Task DownloadMediaToFileAsync(NotificationMessagesClient notificationMessagesClient)
        {
            // MediaId GUID of the media received in an incoming message.
            // Ex. "00000000-0000-0000-0000-000000000000"
            var mediaId = "<MediaId>";

            // File extension derived from the MIME type received in an incoming message
            // Ex. A MIME type of "image/jpeg" would mean the fileExtension should be ".jpg"
            string fileExtension = "<FileExtension>";

            // File location to write the media. 
            // Ex. @"c:\temp\media.jpg"
            string filePath = @"<FilePath>" + "<FileName>" + fileExtension;
            Console.WriteLine(filePath);

            try
            {
                // Download media to file
                Response response = await notificationMessagesClient.DownloadMediaToAsync(mediaId, filePath);

                Console.WriteLine(response.ToString());
            }
            catch (RequestFailedException e)
            {
                Console.WriteLine(e);
                return;
            }
        }
    }
}

Pré-requisitos

Configurar ambiente

Para configurar um ambiente para enviar mensagens, conclua as etapas a seguir.

Criar uma nova aplicação Java

Abra um terminal ou janela de comando e navegue até o diretório onde você deseja criar seu aplicativo Java. Execute o seguinte comando para gerar o projeto Java a partir do maven-archetype-quickstart modelo.

mvn archetype:generate -DgroupId="com.communication.quickstart" -DartifactId="communication-quickstart" -DarchetypeArtifactId="maven-archetype-quickstart" -DarchetypeVersion="1.4" -DinteractiveMode="false"

A generate meta cria um diretório com o mesmo nome do artifactId valor. Neste diretório, o src/main/java diretório contém o código-fonte do projeto, o src/test/java diretório contém a fonte de teste e o pom.xml arquivo é o Project Object Model (POM) do projeto.

Instalar o pacote

Abra o arquivo no editor de pom.xml texto. Adicione o seguinte elemento de dependência ao grupo de dependências.

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-communication-messages</artifactId>
</dependency>

Configurar a estrutura do aplicativo

Abra /src/main/java/com/communication/quickstart/App.java em um editor de texto, adicione diretivas de importação e remova a System.out.println("Hello world!"); instrução:

package com.communication.quickstart;

import com.azure.communication.messages.*;
import com.azure.communication.messages.models.*;

import java.util.ArrayList;
import java.util.List;
public class App
{
    public static void main( String[] args )
    {
        // Quickstart code goes here.
    }
}

Modelo de objeto

As classes e interfaces a seguir lidam com alguns dos principais recursos do SDK de Mensagens Avançadas dos Serviços de Comunicação do Azure para Java.

Nome Descrição
NotificationMessagesClient Essa classe se conecta ao seu recurso dos Serviços de Comunicação do Azure. Ele envia as mensagens.
BaixarMediaAsync Transfira a carga útil de multimédia de uma mensagem de Utilizador para Empresa de forma assíncrona, gravando o conteúdo num fluxo.
Microsoft.Communication.AdvancedMessageReceived Evento de Grade de Eventos que é publicado quando o Advanced Messaging recebe uma mensagem.

Nota

Para obter mais informações, consulte a referência do SDK do Azure para Java em com.azure.communication.messages Package.

Configuração comum

Siga estas etapas para adicionar os trechos de código necessários à função principal do seu App.java arquivo.

Comece a enviar mensagens entre uma empresa e um usuário do WhatsApp

As conversas entre uma conta do WhatsApp Business e um usuário do WhatsApp podem ser iniciadas de duas maneiras:

  • A empresa envia uma mensagem modelo para o usuário do WhatsApp.
  • O usuário do WhatsApp envia qualquer mensagem para o número comercial.

Independentemente de como a conversa foi iniciada, uma empresa só pode enviar mensagens de modelo até que o usuário envie uma mensagem para a empresa. Somente depois que o usuário envia uma mensagem para a empresa, a empresa tem permissão para enviar mensagens de texto ou mídia para o usuário durante a conversa ativa. Quando a janela de conversa de 24 horas expirar, a conversa deve ser reiniciada. Para saber mais sobre conversas, consulte a definição em Plataforma WhatsApp Business.

Autenticar o cliente

Existem algumas opções diferentes disponíveis para autenticar um cliente de mensagem:

Para autenticar um cliente, instancie um NotificationMessagesClient ou MessageTemplateClient com sua cadeia de conexão. Você também pode inicializar o cliente com qualquer cliente HTTP personalizado que implemente a com.azure.core.http.HttpClient interface.

Para simplificar, este artigo usa uma cadeia de conexão para autenticar. Em ambientes de produção, recomendamos o uso de entidades de serviço.

Obtenha a cadeia de conexão do seu recurso dos Serviços de Comunicação do Azure no portal do Azure. À esquerda, navegue até a Keys guia. Copie o Connection string campo para o Primary key. A cadeia de conexão está no formato endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key}.

Captura de ecrã que mostra um recurso dos Serviços de Comunicação do Azure no portal do Azure, visualizando o campo 'Cadeia de ligação' na secção 'Chave primária'.

Defina a variável COMMUNICATION_SERVICES_CONNECTION_STRING de ambiente para o valor da sua cadeia de conexão.
Abra uma janela do console e digite o seguinte comando:

setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"

Para obter mais informações sobre como definir uma variável de ambiente para seu sistema, siga as etapas em Armazenar sua cadeia de conexão em uma variável de ambiente.

Para instanciar um NotificationMessagesClient, adicione o seguinte código ao main método:

// You can get your connection string from your resource in the Azure portal.
String connectionString = System.getenv("COMMUNICATION_SERVICES_CONNECTION_STRING");

NotificationMessagesClient notificationClient = new NotificationMessagesClientBuilder()
    .connectionString(connectionString)
    .buildClient();

Definir ID de registro do canal

O GUID do ID de registro do canal foi criado durante o registro do canal. Você pode procurá-lo no portal na guia Canais do seu recurso dos Serviços de Comunicação do Azure.

Captura de ecrã que mostra um recurso dos Serviços de Comunicação do Azure no portal do Azure, visualizando o separador 'Canais'. A atenção é colocada na ação de cópia do campo 'ID do canal'.

Atribua-o a uma variável chamada channelRegistrationId.

String channelRegistrationId = "<your channel registration id GUID>";

Definir lista de destinatários

Você precisa fornecer um número de telefone real que tenha uma conta do WhatsApp associada a ele. Esta conta do WhatsApp recebe as mensagens de texto e mídia enviadas neste artigo. Para este artigo, este número de telefone pode ser o seu número de telefone pessoal.

O número de telefone do destinatário não pode ser o número de telefone comercial (ID do remetente) associado ao registro do canal do WhatsApp. O ID do Remetente aparece como o remetente das mensagens de texto e mídia enviadas ao destinatário.

O número de telefone deve incluir o código do país. Para obter mais informações sobre a formatação do número de telefone, consulte a documentação do WhatsApp para formatos de número de telefone.

Nota

Atualmente, apenas um número de telefone é suportado na lista de destinatários.

Crie a lista de destinatários da seguinte forma:

List<String> recipientList = new ArrayList<>();
recipientList.add("<to WhatsApp phone number>");

Exemplo:

// Example only
List<String> recipientList = new ArrayList<>();
recipientList.add("+14255550199");

Exemplos de código

Siga estas etapas para adicionar trechos de código necessários à função principal do App.java.

Transferir a carga útil de multimédia para um fluxo

O SDK de Mensagens permite que a Contoso baixe a mídia em mensagens de mídia recebidas do WhatsApp de usuários do WhatsApp. Para baixar a carga útil de mídia para um fluxo, você precisa:

    public static void main(String[] args) throws IOException {

        NotificationMessagesClient messagesClient = new NotificationMessagesClientBuilder()
            .connectionString(connectionString)
            .buildClient();

        BinaryData data = messagesClient.downloadMedia("<MEDIA_ID>");
        BufferedImage image = ImageIO.read(data.toStream());
        ImageIcon icon = new ImageIcon(image);
        JLabel label  = new JLabel(icon);
        JFrame frame = new JFrame();
        frame.add(label);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

Executar o código

  1. Abra o diretório que contém o pom.xml arquivo e compile o projeto usando o mvn comando.

    mvn compile
    
  2. Execute o aplicativo executando o seguinte mvn comando.

    mvn exec:java -D"exec.mainClass"="com.communication.quickstart.App" -D"exec.cleanupDaemonThreads"="false"
    

Código de exemplo completo

Encontre o código finalizado no GitHub em Java Messages SDK.

Pré-requisitos

  • Conta do WhatsApp Business registrada com seu recurso dos Serviços de Comunicação do Azure.

  • Número de telefone ativo do WhatsApp para receber mensagens.

  • Node.js versões Ative LTS e Maintenance LTS (versões recomendadas: 8.11.1 e 10.14.1).

    Em um terminal ou janela de comando, verifique se Node.js está instalado executando:

    node --version
    

Configurar ambiente

Para configurar um ambiente para enviar mensagens, conclua as etapas a seguir.

Criar uma nova aplicação Node.js

  1. Crie um novo diretório para seu aplicativo e abra-o em um terminal ou janela de comando.

  2. Execute o seguinte comando.

    mkdir advance-messages-quickstart && cd advance-messages-quickstart
    
  3. Execute o seguinte comando para criar um package.json arquivo com as configurações padrão.

    npm init -y
    
  4. Use um editor de texto para criar um arquivo chamado send-messages.js no diretório raiz do projeto.

  5. Adicione o seguinte trecho de código ao arquivo send-messages.js.

    async function main() {
        // Quickstart code goes here.
    }
    
    main().catch((error) => {
        console.error("Encountered an error while sending message: ", error);
        process.exit(1);
    });
    

Conclua a seção a seguir para adicionar o código-fonte deste exemplo ao send-messages.js arquivo que você criou.

Instalar o pacote

Use o npm install comando para instalar o SDK de Mensagens Avançadas dos Serviços de Comunicação do Azure para JavaScript.

npm install @azure-rest/communication-messages --save

A --save opção lista a biblioteca como uma dependência em seu arquivo package.json .

Modelo de objeto

As classes e interfaces a seguir lidam com alguns dos principais recursos do SDK de Mensagens Avançadas dos Serviços de Comunicação do Azure para JavaScript.

Nome Descrição
NotificationClient Essa classe se conecta ao seu recurso dos Serviços de Comunicação do Azure. Ele envia as mensagens.
BaixarMediaAsync Transfira a carga útil de multimédia de uma mensagem de Utilizador para Empresa de forma assíncrona, gravando o conteúdo num fluxo.
Microsoft.Communication.AdvancedMessageReceived Evento de Grade de Eventos que é publicado quando o Advanced Messaging recebe uma mensagem.

Nota

Para obter mais informações, consulte o pacote de referência do SDK do Azure para JavaScript @Azure-rest/communication-messages

Configuração comum

Siga estas etapas para adicionar trechos de código necessários à função principal do seu DownloadMedia.js arquivo.

Comece a enviar mensagens entre uma empresa e um usuário do WhatsApp

As conversas entre uma conta do WhatsApp Business e um usuário do WhatsApp podem ser iniciadas de duas maneiras:

  • A empresa envia uma mensagem modelo para o usuário do WhatsApp.
  • O usuário do WhatsApp envia qualquer mensagem para o número comercial.

Independentemente de como a conversa foi iniciada, uma empresa só pode enviar mensagens de modelo até que o usuário envie uma mensagem para a empresa. Somente depois que o usuário envia uma mensagem para a empresa, a empresa tem permissão para enviar mensagens de texto ou mídia para o usuário durante a conversa ativa. Quando a janela de conversa de 24 horas expirar, a conversa deve ser reiniciada. Para saber mais sobre conversas, consulte a definição em Plataforma WhatsApp Business.

Autenticar o cliente

O código a seguir recupera a cadeia de conexão para o recurso de uma variável de ambiente nomeada COMMUNICATION_SERVICES_CONNECTION_STRING usando o pacote dotenv.

Para simplificar, este artigo usa uma cadeia de conexão para autenticar. Em ambientes de produção, recomendamos o uso de entidades de serviço.

Obtenha a cadeia de conexão do seu recurso dos Serviços de Comunicação do Azure no portal do Azure. À esquerda, navegue até a Keys guia. Copie o Connection string campo para o Primary key. A cadeia de conexão está no formato endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key}.

Captura de ecrã que mostra um recurso dos Serviços de Comunicação do Azure no portal do Azure, visualizando o campo 'Cadeia de ligação' na secção 'Chave primária'.

Defina a variável COMMUNICATION_SERVICES_CONNECTION_STRING de ambiente para o valor da sua cadeia de conexão.
Abra uma janela do console e digite o seguinte comando:

setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"

Para obter mais informações sobre como definir uma variável de ambiente para seu sistema, siga as etapas em Armazenar sua cadeia de conexão em uma variável de ambiente.

Para instanciar um NotificationClient, adicione o seguinte código ao Main método:

const NotificationClient = require("@azure-rest/communication-messages").default;

// Set Connection string
const connectionString = process.env["COMMUNICATION_SERVICES_CONNECTION_STRING"];

// Instantiate the client
const client = NotificationClient(connectionString);

Definir ID de registro do canal

O GUID do ID de registro do canal foi criado durante o registro do canal. Você pode procurá-lo no portal na guia Canais do seu recurso dos Serviços de Comunicação do Azure.

Captura de ecrã que mostra um recurso dos Serviços de Comunicação do Azure no portal do Azure, visualizando o separador 'Canais'. A atenção é colocada na ação de cópia do campo 'ID do canal'.

Atribua-o a uma variável chamada channelRegistrationId.

const channelRegistrationId = "<your channel registration id GUID>";

Definir lista de destinatários

Você precisa fornecer um número de telefone real que tenha uma conta do WhatsApp associada a ele. Esta conta do WhatsApp recebe o modelo, o texto e as mensagens de mídia enviadas neste artigo. Para este artigo, este número de telefone pode ser o seu número de telefone pessoal.

O número de telefone do destinatário não pode ser o número de telefone comercial (ID do remetente) associado ao registro do canal do WhatsApp. O ID do Remetente aparece como o remetente das mensagens de texto e mídia enviadas ao destinatário.

O número de telefone deve incluir o código do país. Para obter mais informações sobre a formatação do número de telefone, consulte a documentação do WhatsApp para formatos de número de telefone.

Nota

Atualmente, apenas um número de telefone é suportado na lista de destinatários.

Crie a lista de destinatários da seguinte forma:

const recipientList = ["<to WhatsApp phone number>"];

Exemplo:

// Example only
const recipientList = ["+14255550199"];

Exemplos de código

Siga estas etapas para adicionar trechos de código necessários à função principal do seu DownloadMedia.js arquivo.

Transferir a carga útil de multimédia para um fluxo

O SDK de Mensagens permite que a Contoso responda com mensagens de texto do WhatsApp quando iniciadas por usuários do WhatsApp. Para enviar mensagens de texto, conclua as seguintes etapas:

Neste exemplo, respondemos ao usuário do WhatsApp com o texto: "Thanks for your feedback.\n From Notification Messaging SDK."

Monte e envie a mensagem de mídia:

const credential = new AzureKeyCredential(process.env.ACS_ACCESS_KEY || "");
const endpoint = process.env.ACS_URL || "";
const client = NotificationClient(endpoint, credential);
console.log("Downloading...");
await client
.path("/messages/streams/{id}", "<MEDIA_ID>")
.get()
.asNodeStream()
.then((resp) => {
    resp.body?.pipe(fs.createWriteStream("downloadedMedia.jpeg"));
    return;
});

Executar o código

Use o comando node para executar o código adicionado ao send-messages.js arquivo.

node ./send-messages.js

Código de exemplo completo

Faça o download de mídia recebida por eventos avançados de mensagens.

/**
 * @summary Download a media file
 */

const NotificationClient = require("@azure-rest/communication-messages").default;
const { AzureKeyCredential } = require("@azure/core-auth");
const fs = require("fs");

// Load the .env file if it exists
require("dotenv").config();

async function main() {
  const credential = new AzureKeyCredential(process.env.ACS_ACCESS_KEY || "");
  const endpoint = process.env.ACS_URL || "";
  const client = NotificationClient(endpoint, credential);
  console.log("Downloading...");
  await client
    .path("/messages/streams/{id}", "<MEDIA_ID>")
    .get()
    .asNodeStream()
    .then((resp) => {
      resp.body?.pipe(fs.createWriteStream("downloadedMedia.jpeg"));
      return;
    });
}

main().catch((error) => {
  console.error("Encountered an error while sending message: ", error);
  throw error;
});

Pré-requisitos

Configuração

Criar uma aplicação Python nova

Em uma janela de terminal ou console, crie uma nova pasta para seu aplicativo e abra-a.

mkdir messages-quickstart && cd messages-quickstart

Instalar o pacote

Use a biblioteca de cliente do Azure Communication Messages para Python 1.1.0 ou superior.

Em um prompt do console, execute o seguinte comando:

pip install azure-communication-messages

Para InteractiveMessages, Reactions e Stickers, use abaixo a versão Beta :

pip install azure-communication-messages==1.2.0b1

Configurar a estrutura do aplicativo

Crie um novo arquivo chamado messages-quickstart.py e adicione a estrutura básica do programa.

type nul > messages-quickstart.py   

Estrutura básica do programa

import os

class MessagesQuickstart(object):
    print("Azure Communication Services - Advanced Messages SDK Quickstart")

if __name__ == '__main__':
    messages = MessagesQuickstart()

Modelo de objeto

As classes e interfaces a seguir lidam com alguns dos principais recursos do SDK de Mensagens dos Serviços de Comunicação do Azure para Python.

Nome Descrição
NotificationMessagesClient Essa classe se conecta ao seu recurso dos Serviços de Comunicação do Azure. Ele envia as mensagens.
BaixarMediaAsync Transfira a carga útil de multimédia de uma mensagem de Utilizador para Empresa de forma assíncrona, gravando o conteúdo num fluxo.
Microsoft.Communication.AdvancedMessageReceived Evento de Grade de Eventos que é publicado quando o Advanced Messaging recebe uma mensagem.

Nota

Para obter mais informações, consulte o Pacote de mensagens de referência do SDK do Azure para Python.

Configuração comum

Siga estas etapas para adicionar trechos de código necessários ao messages-quickstart.py programa python.

Autenticar o cliente

O envio de mensagens usa NotificationMessagesClient. NotificationMessagesClient autentica-se usando a sua cadeia de ligação adquirida do recurso de Serviços de Comunicação do Azure no portal do Azure.

Para obter mais informações sobre cadeias de conexão, consulte access-your-connection-strings-and-service-endpoints.

Obtenha a cadeia de conexão do Recurso de Comunicação do Azure no portal do Azure, conforme indicado na captura de tela. À esquerda, navegue até a Keys guia. Copie o Connection string campo da chave primária. A cadeia de conexão está no formato endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key}.

Captura de ecrã que mostra um recurso dos Serviços de Comunicação do Azure no portal do Azure, visualizando o campo 'Chave Primária' na secção 'Chaves'.

Defina a variável COMMUNICATION_SERVICES_CONNECTION_STRING de ambiente para o valor da sua cadeia de conexão.
Abra uma janela do console e digite o seguinte comando:

setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"

Depois de adicionar a variável de ambiente, talvez seja necessário reiniciar todos os programas em execução que precisarão ler a variável de ambiente, incluindo a janela do console. Por exemplo, se você estiver usando o Visual Studio como editor, reinicie o Visual Studio antes de executar o exemplo.

Para obter mais informações sobre como definir uma variável de ambiente para seu sistema, siga as etapas em Armazenar sua cadeia de conexão em uma variável de ambiente.

    # Get a connection string to our Azure Communication Services resource.
    connection_string = os.getenv("COMMUNICATION_SERVICES_CONNECTION_STRING")
    
    def send_template_message(self):
        from azure.communication.messages import NotificationMessagesClient

        # Create NotificationMessagesClient Client
        messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)

Definir ID de registro do canal

Você criou o GUID do ID de registro do canal durante o registro do canal. Encontre-o no portal na guia Canais do seu recurso dos Serviços de Comunicação do Azure.

Captura de ecrã que mostra um recurso dos Serviços de Comunicação do Azure no portal do Azure, visualizando o separador 'Canais'. A atenção é colocada na ação de cópia do campo 'ID do canal'.

Atribua-o a uma variável chamada channelRegistrationId.

    channelRegistrationId = os.getenv("WHATSAPP_CHANNEL_ID_GUID")

Definir lista de destinatários

Você precisa fornecer um número de telefone ativo associado a uma conta do WhatsApp. Esta conta do WhatsApp recebe o modelo, o texto e as mensagens de mídia enviadas neste artigo.

Para este exemplo, você pode usar seu número de telefone pessoal.

O número de telefone do destinatário não pode ser o número de telefone comercial (ID do remetente) associado ao registro do canal do WhatsApp. O ID do Remetente aparece como o remetente das mensagens de texto e mídia enviadas ao destinatário.

O número de telefone deve incluir o código do país. Para obter mais informações sobre a formatação do número de telefone, consulte a documentação do WhatsApp para formatos de número de telefone.

Nota

Atualmente, apenas um número de telefone é suportado na lista de destinatários.

Defina a lista de destinatários da seguinte forma:

    phone_number = os.getenv("RECIPIENT_WHATSAPP_PHONE_NUMBER")

Exemplo de uso:

    # Example only
    to=[self.phone_number],

Comece a enviar mensagens entre uma empresa e um usuário do WhatsApp

As conversas entre uma conta do WhatsApp Business e um usuário do WhatsApp podem ser iniciadas de duas maneiras:

  • A empresa envia uma mensagem modelo para o usuário do WhatsApp.
  • O usuário do WhatsApp envia qualquer mensagem para o número comercial.

Uma empresa não pode iniciar uma conversa interativa. Uma empresa só pode enviar uma mensagem interativa depois de receber uma mensagem do utilizador. A empresa só pode enviar mensagens interativas para o usuário durante a conversa ativa. Quando a janela de conversa de 24 horas expirar, apenas o usuário poderá reiniciar a conversa interativa. Para obter mais informações sobre conversas, consulte a definição em WhatsApp Business Platform.

Para iniciar uma conversa interativa a partir da sua conta pessoal do WhatsApp, envie uma mensagem para o número da sua empresa (ID do remetente).

Uma conversa do WhatsApp visualizada na web mostrando uma mensagem de usuário enviada para o número da conta do WhatsApp Business.

Exemplos de código

Siga estas etapas para adicionar trechos de código necessários ao messages-quickstart.py programa python.

Transferir a carga útil de multimédia para um fluxo

O SDK de Mensagens permite que a Contoso receba ou baixe mídia de um usuário do WhatsApp, quando iniciado pelos usuários do WhatsApp. Para baixar a carga útil de mídia para um fluxo, você precisa:

Importante

Para enviar uma mensagem de texto para um usuário do WhatsApp, o usuário do WhatsApp deve primeiro enviar uma mensagem para a conta do WhatsApp Business. Para obter mais informações, consulte Começar a enviar mensagens entre a empresa e o usuário do WhatsApp.

Neste exemplo, a empresa envia uma reação à mensagem do usuário.

      def download_media(self):

        from azure.communication.messages import NotificationMessagesClient

        messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
        input_media_id: str = "de7558b5-e169-4d47-9ba4-37a95c28f390"

        # calling send() with whatsapp message details
        media_stream = messaging_client.download_media(input_media_id)
        length : int = 0
        for byte in media_stream:
            length = length + 1
        print("WhatsApp Media stream downloaded.It's length is {}".format(length))

Para executar download_media()o , atualize o método principal.

    #Calling download_media()
    messages.download_media()

Executar o código

Para executar o código, certifique-se de que está no mesmo diretório onde download-media-quickstart.py o ficheiro está localizado.

python download-media-quickstart.py
Azure Communication Services - Advanced Messages Quickstart
WhatsApp Media stream downloaded.

Código de exemplo completo

Nota

Altere todas as variáveis de espaço reservado no código a seguir para que correspondam aos seus valores.

import os
from io import BytesIO

class MessagesQuickstart(object):
    print("Azure Communication Services - Advanced Messages SDK Quickstart using connection string.")
    # Advanced Messages SDK implementations goes in this section.
   
    connection_string = os.getenv("COMMUNICATION_SERVICES_CONNECTION_STRING")

     def download_media(self):

        from azure.communication.messages import NotificationMessagesClient

        messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
        input_media_id: str = "de7558b5-e169-4d47-9ba4-37a95c28f390"

        # calling send() with whatsapp message details
        media_stream = messaging_client.download_media(input_media_id)
        length : int = 0
        for byte in media_stream:
            length = length + 1
        print("WhatsApp Media stream downloaded.It's length is {}".format(length))

if __name__ == '__main__':
    messages = MessagesQuickstart()
    messages.download_media()

Código de exemplo

Revise e baixe outro código de exemplo no GitHub no Python Messages SDK.

Próximos passos