Inicio rápido: Envío de mensajes de WhatsApp mediante mensajes avanzados
Azure Communication Services le permite enviar y recibir mensajes de WhatsApp. Si sigue este inicio rápido, podrá comenzar a integrar la aplicación con el SDK de mensajes avanzados de Azure Communication y enviar y recibir mensajes de WhatsApp. Este inicio rápido supone un pequeño costo en su cuenta de Azure.
Requisitos previos
Cuenta de WhatsApp Business registrada con su recurso Azure Communication Services
Número de teléfono de WhatsApp activo para recibir mensajes
Entorno de desarrollo .NET (como Visual Studio, Visual Studio Code o .NET CLI)
Instalación
Crear el proyecto .NET
Para crear su proyecto, siga el tutorial en Crear una aplicación de consola .NET con Visual Studio.
Para compilar su código, presione Ctrl+F7.
Instalar el paquete
Instale el paquete Azure.Communication.Messages NuGet en su proyecto C#.
- Abra el Administrador de paquetes NuGet en
Project
>Manage NuGet Packages...
. - Buscar el paquete
Azure.Communication.Messages
. - Instale la última versión.
Instalación del marco de la aplicación
Abra el archivo Program.cs en un editor de texto.
Sustituya el contenido de su Program.cs por el siguiente 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 - Send WhatsApp Messages");
// Quickstart code goes here
}
}
}
Para utilizar las funciones de mensajería avanzada, agregamos una directiva using
para incluir el espacio de nombres Azure.Communication.Messages
.
using Azure.Communication.Messages;
Modelo de objetos
Las siguientes clases e interfaces administran algunas de las principales funciones del SDK de Mensajería avanzada de Azure Communication Services para .NET.
Nombre | Descripción |
---|---|
NotificationMessagesClient | Esta clase se conecta a su recurso Azure Communication Services. Envía los mensajes. |
MessageTemplate | Esta clase define qué plantilla utiliza y el contenido de las propiedades de la plantilla para su mensaje. |
TemplateNotificationContent | Esta clase define el "quién" y el "qué" del mensaje de plantilla que pretende enviar. |
TextNotificationContent | Esta clase define el "quién" y el "qué" del mensaje de texto que pretende enviar. |
MediaNotificationContent | Esta clase define el "quién" y el "qué" del mensaje mediático que se pretende enviar. |
Ejemplos de código
Siga estos pasos para agregar los fragmentos de código necesarios a la función Main de su archivo Program.cs.
- Autenticar el cliente
- Establecer Id. de registro de canal
- Establecer lista de destinatarios
- Empezar a enviar mensajes entre una empresa y un usuario de WhatsApp
- Enviar un mensaje de texto a un usuario de WhatsApp
- Enviar un mensaje multimedia a un usuario de WhatsApp
Autenticar el cliente
NotificationMessagesClient
se utiliza para conectarse a su recurso Azure Communication Services.
Para simplificar, este inicio rápido utiliza una cadena de conexión para autenticarse. En entornos de producción, se recomienda utilizar los servicios principales.
Obtenga la cadena de conexión del recurso de Azure Communication Services en Azure Portal. A la izquierda, navegue hasta la pestaña Keys
. Copie el campo Connection string
para la clave primaria. La cadena de conexión tiene el formato endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key}
.
Establezca la variable de entorno COMMUNICATION_SERVICES_CONNECTION_STRING
en el valor de la cadena de conexión.
Abra una ventana de consola y escriba el siguiente comando:
setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"
Tras agregar la variable de entorno, es posible que tenga que reiniciar todos los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de la consola. Por ejemplo, si usa Visual Studio como editor, reinícielo antes de ejecutar el ejemplo.
Para obtener más información sobre cómo configurar una variable de entorno para su sistema, siga los pasos indicados en Almacene su cadena de conexión en una variable de entorno.
Para crear una instancia un NotificationMessagesClient
, agregue el siguiente código al método Main
:
// Retrieve connection string from environment variable
string connectionString =
Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_CONNECTION_STRING");
// Instantiate the client
var notificationMessagesClient = new NotificationMessagesClient(connectionString);
Establecimiento del identificador de registro de canales
El Id. GUID de registro de canal se creó durante el registro del canal. Puede buscarlo en el portal en la pestaña Canales del recurso de Azure Communication Services.
Asígnelo a una variable llamada channelRegistrationId.
var channelRegistrationId = new Guid("<your channel registration ID GUID>");
Establecimiento de la lista de destinatarios
Debe proporcionar un número de teléfono real que tenga una cuenta de WhatsApp asociada. Esta cuenta de WhatsApp recibe la plantilla, el texto y los mensajes multimedia enviados en este inicio rápido. Para este inicio rápido, este número de teléfono puede ser su número de teléfono personal.
El número de teléfono del destinatario no puede ser el número de teléfono del trabajo (id. de remitente) asociado al registro de canales de WhatsApp. El id. de remitente aparece como remitente de los mensajes de texto y multimedia enviados al destinatario.
El número de teléfono debe incluir el código de país. Para obtener más información sobre el formato del número de teléfono, consulte la documentación de WhatsApp sobre formatos de número de teléfono.
Nota:
Actualmente solo se admite un número de teléfono en la lista de destinatarios.
Cree la lista de destinatarios de la siguiente manera:
var recipientList = new List<string> { "<to WhatsApp phone number>" };
Ejemplo:
// Example only
var recipientList = new List<string> { "+14255550199" };
Comience a enviar mensajes entre una empresa y un usuario de WhatsApp
Las conversaciones entre una cuenta empresarial de WhatsApp y un usuario de WhatsApp se pueden iniciar de una de estas dos maneras:
- La empresa envía un mensaje de plantilla al usuario de WhatsApp.
- El usuario de WhatsApp envía cualquier mensaje al número del trabajo.
Independientemente de cómo se haya iniciado la conversación, una empresa solo puede enviar mensajes de plantilla hasta que el usuario envíe un mensaje a la empresa. Solo después de que el usuario envíe un mensaje a la empresa, ésta podrá enviarle mensajes de texto o multimedia durante la conversación activa. Una vez transcurrido el plazo de 24 horas, la conversación debe reiniciarse. Para obtener más información sobre las conversaciones, consulte la definición en Plataforma de WhatsApp Business.
(Opción 1) Iniciar la conversación desde la empresa: enviar un mensaje de plantilla
Inicie una conversación mediante el envío de un mensaje de plantilla.
En primer lugar, cree un elemento MessageTemplate con los valores de una plantilla.
Nota:
Para comprobar qué plantillas tiene disponibles, consulte las instrucciones en Plantillas de lista. Si no dispone de una plantilla, siga con la Opción 2.
Aquí puede ver la creación de MessageTemplate con una plantilla predeterminada, sample_template
.
Si sample_template
no le aparece disponible, siga con la Opción 2. Para usuarios avanzados, consulte la página Plantillas para saber cómo enviar una plantilla diferente con la Opción 1.
El SDK de mensajes permite a Contoso enviar mensajes de WhatsApp con plantilla a los usuarios de WhatsApp. Para enviar un mensaje de plantilla, necesita:
- Authenticated NotificationMessagesClient
- Id. de canal de WhatsApp
- Número de teléfono del destinatario en formato E16
- Detalles de la plantilla
- Nombre como "sample_template"
- Idioma como "en_us"
- Parámetros, si hay alguno
// Assemble the template content
string templateName = "sample_template";
string templateLanguage = "en_us";
var messageTemplate = new MessageTemplate(templateName, templateLanguage);
Para más ejemplos sobre cómo montar su MessageTemplate y cómo crear su propia plantilla, consulte el siguiente recurso:
Para más requisitos de WhatsApp sobre plantillas, consulte las referencias de la API de la Plataforma de WhatsApp Business:
Agrupe y envíe el mensaje de plantilla:
// Assemble template message
var templateContent =
new TemplateNotificationContent(channelRegistrationId, recipientList, messageTemplate);
// Send template message
Response<SendMessageResult> sendTemplateMessageResult =
await notificationMessagesClient.SendAsync(templateContent);
Ahora, el usuario debe responder al mensaje de la plantilla. En la cuenta de usuario de WhatsApp, responda al mensaje de plantilla recibido de la cuenta empresarial de WhatsApp. El contenido del mensaje es irrelevante para este escenario.
Importante
El destinatario debe responder al mensaje de plantilla para iniciar la conversación antes de que se pueda enviar el mensaje de texto o multimedia al destinatario.
(Opción 2) Iniciar conversación desde el usuario
La otra opción para iniciar una conversación entre una cuenta empresarial de WhatsApp y un usuario de WhatsApp es hacer que el usuario inicie la conversación. Para ello, desde su cuenta de WhatsApp personal, envíe un mensaje al número del trabajo (id. de remitente).
Enviar un mensaje de texto a un usuario de WhatsApp
El SDK de mensajes permite a Contoso enviar mensajes de texto de WhatsApp, que iniciaron los usuarios de WhatsApp. Para enviar un mensaje de texto, necesita:
- Authenticated NotificationMessagesClient
- Id. de canal de WhatsApp
- Número de teléfono del destinatario en formato E16
- Cuerpo o texto del mensaje que se va a enviar
Importante
Para enviar un mensaje de texto a un usuario de WhatsApp, este debe enviar primero un mensaje a la cuenta de WhatsApp Business. Para obtener más información, consulte Empezar a enviar mensajes entre la empresa y el usuario de WhatsApp.
En este ejemplo, respondemos al usuario de WhatsApp con el texto "Gracias por sus comentarios.\n Desde el SDK de mensajería de notificaciones".
Agrupe y envíe el mensaje de texto:
// Assemble text message
var textContent =
new TextNotificationContent(channelRegistrationId, recipientList, "Thanks for your feedback.\n From Notification Messaging SDK");
// Send text message
Response<SendMessageResult> sendTextMessageResult =
await notificationMessagesClient.SendAsync(textContent);
Enviar un mensaje multimedia a un usuario de WhatsApp
El SDK de mensajes permite a Contoso enviar mensajes multimedia de WhatsApp a los usuarios de WhatsApp. Para enviar un mensaje multimedia incrustado, necesita:
- Authenticated NotificationMessagesClient
- Id. de canal de WhatsApp
- Número de teléfono del destinatario en formato E16
- Uri de los medios
Importante
Para enviar un mensaje de texto a un usuario de WhatsApp, este debe enviar primero un mensaje a la cuenta de WhatsApp Business. Para obtener más información, consulte Empezar a enviar mensajes entre la empresa y el usuario de WhatsApp.
Importante
A partir de la versión 1.1.0 del SDK, MediaNotificationContent
está en desuso para las imágenes. Le animamos a usar ImageNotificationContent
para enviar imágenes y explorar otras clases específicas de contenido para otros tipos de medios, como DocumentNotificationContent
, VideoNotificationContent
y AudioNotificationContent
.
A continuación se muestran fragmentos de código de ejemplo para enviar diferentes tipos de mensajes multimedia, incluidas imágenes, documentos, vídeos y archivos de audio.
Envío de contenido de una imagen
Ensamblar el mensaje de imagen:
var imageLink = new Uri("https://example.com/image.jpg");
var imageNotificationContent = new ImageNotificationContent(channelRegistrationId, recipientList, imageLink)
{
Caption = "Check out this image."
};
Envíe el mensaje de imagen:
var imageResponse = await notificationMessagesClient.SendAsync(imageNotificationContent);
Envío de un documento
Ensamblar el contenido del documento:
var documentLink = new Uri("https://example.com/document.pdf");
var documentNotificationContent = new DocumentNotificationContent(channelRegistrationId, recipientList, documentLink)
{
Caption = "Check out this document.",
FileName = "document.pdf"
};
Envíe el mensaje del documento:
var documentResponse = await notificationMessagesClient.SendAsync(documentNotificationContent);
Envío de contenido de vídeo
Ensamblar el mensaje de vídeo:
var videoLink = new Uri("https://example.com/video.mp4");
var videoNotificationContent = new VideoNotificationContent(channelRegistrationId, recipientList, videoLink)
{
Caption = "Check out this video."
};
Envíe el mensaje de vídeo:
var videoResponse = await notificationMessagesClient.SendAsync(videoNotificationContent);
Envío de contenido de audio
Ensamblar el mensaje de audio:
var audioLink = new Uri("https://example.com/audio.mp3");
var audioNotificationContent = new AudioNotificationContent(channelRegistrationId, recipientList, audioLink);
Envíe el mensaje de audio:
var audioResponse = await notificationMessagesClient.SendAsync(audioNotificationContent);
Ejecución del código
Compile y ejecute el programa.
Para enviar un mensaje de texto o multimedia a un usuario de WhatsApp, debe haber una conversación activa entre la cuenta de WhatsApp Business y el usuario de WhatsApp.
Si no tiene una conversación activa, a efectos de este inicio rápido, debe agregar una espera entre el envío del mensaje de plantilla y el envío del mensaje de texto. Este retraso adicional le da tiempo suficiente para responder a la empresa en la cuenta de WhatsApp del usuario. Como referencia, el ejemplo completo en Código de ejemplo solicita la entrada manual del usuario antes de enviar el siguiente mensaje.
Si tiene éxito, recibirá tres mensajes en la cuenta de WhatsApp del usuario.
- Para compilar su código, presione Ctrl+F7.
- Para ejecutar el programa sin depurar, presione Ctrl+F5.
Ejemplo completo de código
using System;
using System.Collections.Generic;
using System.Linq;
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 - Send WhatsApp Messages\n");
string connectionString = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_CONNECTION_STRING");
NotificationMessagesClient notificationMessagesClient =
new NotificationMessagesClient(connectionString);
var channelRegistrationId = new Guid("<Your Channel ID>");
var recipientList = new List<string> { "<Recipient's WhatsApp Phone Number>" };
// Send sample template sample_template
string templateName = "sample_template";
string templateLanguage = "en_us";
MessageTemplate sampleTemplate = new MessageTemplate(templateName, templateLanguage);
TemplateNotificationContent templateContent =
new TemplateNotificationContent(channelRegistrationId, recipientList, sampleTemplate);
Response<SendMessageResult> sendTemplateMessageResult =
await notificationMessagesClient.SendAsync(templateContent);
PrintResult(sendTemplateMessageResult);
Console.WriteLine("Template message sent.\nWait until the WhatsApp user responds " +
"to the template message, then press any key to continue.\n");
Console.ReadKey();
// Send a text message
string messageText = "Thanks for your feedback.";
TextNotificationContent textContent =
new TextNotificationContent(channelRegistrationId, recipientList, messageText);
Response<SendMessageResult> sendTextMessageResult =
await notificationMessagesClient.SendAsync(textContent);
PrintResult(sendTextMessageResult);
Console.WriteLine($"Text message sent to my phoneNumber.\nPress any key to continue.\n");
Console.ReadKey();
// Send a media message
Uri uri = new Uri("https://aka.ms/acsicon1");
ImageNotificationContent imageContent =
new ImageNotificationContent(channelRegistrationId, recipientList, uri);
Response<SendMessageResult> sendMediaMessageResult =
await notificationMessagesClient.SendAsync(imageContent);
PrintResult(sendMediaMessageResult);
Console.WriteLine("Media message sent.\nPress any key to exit.\n");
Console.ReadKey();
}
public static void PrintResult(Response<SendMessageResult> result)
{
Console.WriteLine($"Response: {result.GetRawResponse().Status} " +
$"({result.GetRawResponse().ReasonPhrase})");
Console.WriteLine($"Date: " +
$"{result.GetRawResponse().Headers.First(header => header.Name == "Date").Value}");
Console.WriteLine($"ClientRequestId: {result.GetRawResponse().ClientRequestId}");
Console.WriteLine($"MS-CV: " +
$"{result.GetRawResponse().Headers.First(header => header.Name == "MS-CV").Value}");
foreach (var receipts in result.Value.Receipts)
{
Console.WriteLine($"MessageId: {receipts.MessageId}");
}
Console.WriteLine($"\n");
}
}
}
Requisitos previos
Cuenta de WhatsApp Business registrada con su recurso Azure Communication Services
Número de teléfono de WhatsApp activo para recibir mensajes
Kit de desarrollo de Java (JDK) versión 8 o posterior
Instalación
Para configurar un entorno para enviar mensajes, siga los pasos descritos en las secciones siguientes.
Creación de una aplicación Java
Abra la ventana de terminal o de comandos y navegue hasta el directorio en el que quiere crear la aplicación de Java. Ejecute el siguiente comando para generar el proyecto Java desde la plantilla maven-archetype-quickstart.
mvn archetype:generate -DgroupId="com.communication.quickstart" -DartifactId="communication-quickstart" -DarchetypeArtifactId="maven-archetype-quickstart" -DarchetypeVersion="1.4" -DinteractiveMode="false"
El objetivo generate
crea un directorio con el mismo nombre que el valor artifactId
. En este directorio, el directorio src/main/java contiene el código fuente del proyecto, el directorio src/test/java contiene el origen de la prueba, y el archivo pom.xml es el modelo de objetos del proyecto (POM).
Instalar el paquete
Abra el archivo pom.xml en el editor de texto. Agregue el siguiente elemento de dependencia al grupo de dependencias.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-communication-messages</artifactId>
<version>1.0.0</version>
</dependency>
Instalación del marco de la aplicación
Abra /src/main/java/com/communication/quickstart/App.java en un editor de texto, agregue directivas de importación y quite la instrucción System.out.println("Hello world!");
:
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 objetos
Las siguientes clases e interfaces administran algunas de las principales funciones del SDK de Mensajería avanzada de Azure Communication Services para Java.
Nombre | Descripción |
---|---|
NotificationMessagesClientBuilder | Esta clase crea el Cliente de Mensajes de Notificación. Le proporciona un punto de conexión y una credencial. |
NotificationMessagesClient | Esta clase es necesaria para enviar mensajes de WhatsApp y descargar archivos multimedia. |
NotificationMessagesAsyncClient | Esta clase es necesaria para enviar mensajes de WhatsApp y descargar archivos multimedia de forma asíncrona. |
SendMessageResult | Esta clase contiene el resultado del servicio de Mensajería avanzada para el envío de mensajes de notificación. |
MessageTemplateClientBuilder | Esta clase crea el Cliente de plantilla de mensajes. Le proporciona un punto de conexión y una credencial. |
MessageTemplateClient | Esta clase es necesaria para obtener la lista de plantillas de WhatsApp. |
MessageTemplateAsyncClient | Esta clase es necesaria para obtener la lista de plantillas de WhatsApp de forma asíncrona. |
Ejemplos de código
Siga estos pasos para agregar los fragmentos de código necesarios a la función principal de su archivo App.java.
- Autenticar el cliente
- Establecer Id. de registro de canal
- Establecer lista de destinatarios
- Empezar a enviar mensajes entre una empresa y un usuario de WhatsApp
- Enviar un mensaje de texto a un usuario de WhatsApp
- Enviar un mensaje multimedia a un usuario de WhatsApp
Autenticar el cliente
Existen varias opciones para autenticar a un cliente de mensajes:
Para autenticar a un cliente, cree una instancia NotificationMessagesClient
o MessageTemplateClient
con su cadena de conexión. También puede iniciar el cliente con cualquier cliente HTTP personalizado que implemente la interfaz com.azure.core.http.HttpClient
.
Para simplificar, este inicio rápido utiliza una cadena de conexión para autenticarse. En entornos de producción, se recomienda utilizar los servicios principales.
Obtenga la cadena de conexión del recurso de Azure Communication Services en Azure Portal. A la izquierda, navegue hasta la pestaña Keys
. Copie el campo Connection string
para el Primary key
. La cadena de conexión tiene el formato endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key}
.
Establezca la variable de entorno COMMUNICATION_SERVICES_CONNECTION_STRING
en el valor de la cadena de conexión.
Abra una ventana de consola y escriba el siguiente comando:
setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"
Para obtener más información sobre cómo configurar una variable de entorno para su sistema, siga los pasos indicados en Almacene su cadena de conexión en una variable de entorno.
Para crear una instancia de NotificationMessagesClient, agregue el siguiente código al método main
:
// 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();
Establecimiento del identificador de registro de canales
El Id. GUID de registro de canal se creó durante el registro del canal. Puede buscarlo en el portal en la pestaña Canales del recurso de Azure Communication Services.
Asígnelo a una variable llamada channelRegistrationId.
String channelRegistrationId = "<your channel registration id GUID>";
Establecimiento de la lista de destinatarios
Debe proporcionar un número de teléfono real que tenga una cuenta de WhatsApp asociada. Esta cuenta de WhatsApp recibe los mensajes de texto y multimedia enviados en este inicio rápido. Para este inicio rápido, este número de teléfono puede ser su número de teléfono personal.
El número de teléfono del destinatario no puede ser el número de teléfono del trabajo (id. de remitente) asociado al registro de canales de WhatsApp. El id. de remitente aparece como remitente de los mensajes de texto y multimedia enviados al destinatario.
El número de teléfono debe incluir el código de país. Para obtener más información sobre el formato del número de teléfono, consulte la documentación de WhatsApp sobre formatos de número de teléfono.
Nota:
Actualmente solo se admite un número de teléfono en la lista de destinatarios.
Cree la lista de destinatarios de la siguiente manera:
List<String> recipientList = new ArrayList<>();
recipientList.add("<to WhatsApp phone number>");
Ejemplo:
// Example only
List<String> recipientList = new ArrayList<>();
recipientList.add("+14255550199");
Comience a enviar mensajes entre una empresa y un usuario de WhatsApp
Las conversaciones entre una cuenta empresarial de WhatsApp y un usuario de WhatsApp se pueden iniciar de una de estas dos maneras:
- La empresa envía un mensaje de plantilla al usuario de WhatsApp.
- El usuario de WhatsApp envía cualquier mensaje al número del trabajo.
Independientemente de cómo se haya iniciado la conversación, una empresa solo puede enviar mensajes de plantilla hasta que el usuario envíe un mensaje a la empresa. Solo después de que el usuario envíe un mensaje a la empresa, ésta podrá enviarle mensajes de texto o multimedia durante la conversación activa. Una vez transcurrido el plazo de 24 horas, la conversación debe reiniciarse. Para obtener más información sobre las conversaciones, consulte la definición en Plataforma de WhatsApp Business.
(Opción 1) Iniciar la conversación desde la empresa: enviar un mensaje de plantilla
Inicie una conversación mediante el envío de un mensaje de plantilla.
En primer lugar, cree un elemento MessageTemplate con los valores de una plantilla.
Nota:
Para comprobar qué plantillas tiene disponibles, consulte las instrucciones en Plantillas de lista. Si no dispone de una plantilla, siga con la Opción 2.
Aquí puede ver la creación de MessageTemplate con una plantilla predeterminada, sample_template
.
Si sample_template
no le aparece disponible, siga con la Opción 2. Para usuarios avanzados, consulte la página Plantillas para saber cómo enviar una plantilla diferente con la Opción 1.
El SDK de mensajes permite a Contoso enviar mensajes de WhatsApp con plantilla a los usuarios de WhatsApp. Para enviar los mensajes de plantilla a continuación, se requieren los detalles:
- Id. de canal de WhatsApp
- Número de teléfono del destinatario en formato E16
- Detalles de la plantilla
- Nombre como "sample_template"
- Idioma como "en_us"
- Parámetros, si hay alguno
// Assemble the template content
String templateName = "sample_template";
String templateLanguage = "en_us";
MessageTemplate messageTemplate = new MessageTemplate(templateName, templateLanguage);
// Assemble template message
TemplateNotificationContent templateContent = new TemplateNotificationContent(channelRegistrationId, recipientList, messageTemplate);
// Send template message
SendMessageResult templateMessageResult = notificationClient.send(templateContent);
// Process result
for (MessageReceipt messageReceipt : templateMessageResult.getReceipts()) {
System.out.println("Message sent to:" + messageReceipt.getTo() + " and message id:" + messageReceipt.getMessageId());
}
Ahora, el usuario debe responder al mensaje de la plantilla. En la cuenta de usuario de WhatsApp, responda al mensaje de plantilla recibido de la cuenta empresarial de WhatsApp. El contenido del mensaje es irrelevante para este escenario.
Importante
El destinatario debe responder al mensaje de plantilla para iniciar la conversación antes de que se pueda enviar el mensaje de texto o multimedia al destinatario.
(Opción 2) Iniciar conversación desde el usuario
La otra opción para iniciar una conversación entre una cuenta empresarial de WhatsApp y un usuario de WhatsApp es hacer que el usuario inicie la conversación. Para ello, desde su cuenta de WhatsApp personal, envíe un mensaje al número del trabajo (id. de remitente).
Enviar un mensaje de texto a un usuario de WhatsApp
El SDK de mensajes permite a Contoso enviar mensajes de texto de WhatsApp, que iniciaron los usuarios de WhatsApp. Para enviar los mensajes de texto a continuación, se requieren los detalles:
- Id. de canal de WhatsApp
- Número de teléfono del destinatario en formato E16
- Cuerpo o texto del mensaje que se va a enviar
Importante
Para enviar un mensaje de texto a un usuario de WhatsApp, este debe enviar primero un mensaje a la cuenta de WhatsApp Business. Para obtener más información, consulte Empezar a enviar mensajes entre la empresa y el usuario de WhatsApp.
En este ejemplo, respondemos al usuario de WhatsApp con el texto "Gracias por sus comentarios.\n Desde el SDK de mensajería de notificaciones".
Agrupe y envíe el mensaje de texto:
// Assemble text message
TextNotificationContent textContent = new TextNotificationContent(channelRegistrationId, recipientList, "“Thanks for your feedback.\n From Notification Messaging SDK");
// Send text message
SendMessageResult textMessageResult = notificationClient.send(textContent);
// Process result
for (MessageReceipt messageReceipt : textMessageResult.getReceipts()) {
System.out.println("Message sent to:" + messageReceipt.getTo() + " and message id:" + messageReceipt.getMessageId());
}
Enviar un mensaje multimedia a un usuario de WhatsApp
El SDK de mensajes permite a Contoso enviar mensajes multimedia (imagen, vídeo, audio o documento) a los usuarios de WhatsApp. Para enviar un mensaje multimedia incrustado, necesita:
- Id. de canal de WhatsApp
- Número de teléfono del destinatario en formato E16
- Dirección URL de los medios de imagen, vídeo, documento o audio
Importante
Para enviar un mensaje multimedia a un usuario de WhatsApp, el usuario de WhatsApp primero debe enviar un mensaje a la cuenta empresarial de WhatsApp. Para obtener más información, consulte Empezar a enviar mensajes entre la empresa y el usuario de WhatsApp.
Importante
A partir de la versión 1.1.0 del SDK, MediaNotificationContent
está en desuso para las imágenes. Le animamos a usar ImageNotificationContent
para enviar imágenes y explorar otras clases específicas de contenido para otros tipos de medios, como DocumentNotificationContent
, VideoNotificationContent
y AudioNotificationContent
.
Envío de un mensaje de imagen
Ensamblar y luego enviar el mensaje de imagen:
// Assemble image message
String imageUrl = "https://example.com/image.jpg";
ImageNotificationContent imageContent = new ImageNotificationContent(channelRegistrationId, recipientList, imageUrl);
// Send image message
SendMessageResult imageMessageResult = notificationClient.send(imageContent);
// Process result
for (MessageReceipt messageReceipt : imageMessageResult.getReceipts()) {
System.out.println("Message sent to:" + messageReceipt.getTo() + " and message id:" + messageReceipt.getMessageId());
}
Envío de un mensaje de vídeo
Ensamblar y luego enviar el mensaje de vídeo:
// Assemble video message
String videoUrl = "https://example.com/video.mp4";
VideoNotificationContent videoContent = new VideoNotificationContent(channelRegistrationId, recipientList, videoUrl);
// Send video message
SendMessageResult videoMessageResult = notificationClient.send(videoContent);
// Process result
for (MessageReceipt messageReceipt : videoMessageResult.getReceipts()) {
System.out.println("Message sent to:" + messageReceipt.getTo() + " and message id:" + messageReceipt.getMessageId());
}
Envío de un mensaje de audio
Ensamblar y luego enviar el mensaje de audio:
// Assemble audio message
String audioUrl = "https://example.com/audio.mp3";
AudioNotificationContent audioContent = new AudioNotificationContent(channelRegistrationId, recipientList, audioUrl);
// Send audio message
SendMessageResult audioMessageResult = notificationClient.send(audioContent);
// Process result
for (MessageReceipt messageReceipt : audioMessageResult.getReceipts()) {
System.out.println("Message sent to:" + messageReceipt.getTo() + " and message id:" + messageReceipt.getMessageId());
}
Envío de un mensaje de documento
Ensamblar y luego enviar el mensaje del documento:
// Assemble document message
String docUrl = "https://example.com/document.pdf";
DocumentNotificationContent docContent = new DocumentNotificationContent(channelRegistrationId, recipientList, docUrl);
// Send document message
SendMessageResult docMessageResult = notificationClient.send(docContent);
// Process result
for (MessageReceipt messageReceipt : docMessageResult.getReceipts()) {
System.out.println("Message sent to:" + messageReceipt.getTo() + " and message id:" + messageReceipt.getMessageId());
}
Ejecución del código
Vaya al directorio que contiene el archivo pom.xml y compile el proyecto mediante el comando
mvn
.mvn compile
Ejecute la aplicación ejecutando el siguiente comando
mvn
.mvn exec:java -D"exec.mainClass"="com.communication.quickstart.App" -D"exec.cleanupDaemonThreads"="false"
Ejemplo completo de código
Busque el código finalizado de este inicio rápido en GitHub.
Requisitos previos
Cuenta de WhatsApp Business registrada con su recurso Azure Communication Services
Número de teléfono de WhatsApp activo para recibir mensajes
Versiones de Node.js Active LTS y Maintenance LTS (se recomiendan 8.11.1 y 10.14.1)
- En un terminal o ventana de comandos, ejecute
node --version
para comprobar que Node.js está instalado
- En un terminal o ventana de comandos, ejecute
Instalación
Para configurar un entorno para enviar mensajes, siga los pasos descritos en las secciones siguientes.
Creación de una aplicación Node.js
Cree un nuevo directorio para su aplicación y navegue hasta él abriendo su terminal o ventana de comandos, a continuación ejecute el siguiente comando.
mkdir advance-messages-quickstart && cd advance-messages-quickstart
Ejecuta el siguiente comando para crear un archivo package.json con la configuración predeterminada.
npm init -y
Utilice un editor de texto para crear un archivo llamado send-messages.js en el directorio raíz del proyecto.
Agregue el siguiente fragmento de código al archivo 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); });
En las siguientes secciones, ha agregado todo el código fuente de este inicio rápido al archivo send-messages.js que ha creado.
Instalar el paquete
Utilice el comando npm install
para instalar el SDK de la Mensajería avanzada de Azure Communication Services para JavaScript.
npm install @azure-rest/communication-messages --save
La opción --save
muestra la biblioteca como dependencia en el archivo package.json.
Modelo de objetos
Las siguientes clases e interfaces administran algunas de las principales funciones del SDK de Mensajería avanzada de Azure Communication Services para JavaScript.
Nombre | Descripción |
---|---|
MessageClient | Esta clase se conecta a su recurso Azure Communication Services. Envía los mensajes. |
MessageTemplate | Esta clase define qué plantilla utiliza y el contenido de las propiedades de la plantilla para su mensaje. |
Ejemplos de código
Siga estos pasos para agregar los fragmentos de código necesarios a la función principal de su archivo send-messages.js.
- Autenticar el cliente
- Establecer Id. de registro de canal
- Establecer lista de destinatarios
- Empezar a enviar mensajes entre una empresa y un usuario de WhatsApp
- Enviar un mensaje de texto a un usuario de WhatsApp
- Enviar un mensaje multimedia a un usuario de WhatsApp
Autenticar el cliente
El código siguiente recupera la cadena de conexión del recurso de una variable de entorno denominada COMMUNICATION_SERVICES_CONNECTION_STRING
mediante el paquete dotenv.
Para simplificar, este inicio rápido utiliza una cadena de conexión para autenticarse. En entornos de producción, se recomienda utilizar los servicios principales.
Obtenga la cadena de conexión del recurso de Azure Communication Services en Azure Portal. A la izquierda, navegue hasta la pestaña Keys
. Copie el campo Connection string
para el Primary key
. La cadena de conexión tiene el formato endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key}
.
Establezca la variable de entorno COMMUNICATION_SERVICES_CONNECTION_STRING
en el valor de la cadena de conexión.
Abra una ventana de consola y escriba el siguiente comando:
setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"
Para obtener más información sobre cómo configurar una variable de entorno para su sistema, siga los pasos indicados en Almacene su cadena de conexión en una variable de entorno.
Para crear una instancia de un MessageClient, agregue el siguiente código al método Main
:
const MessageClient = require("@azure-rest/communication-messages").default;
// Set Connection string
const connectionString = process.env["COMMUNICATION_SERVICES_CONNECTION_STRING"];
// Instantiate the client
const client = MessageClient(connectionString);
Establecimiento del identificador de registro de canales
El Id. GUID de registro de canal se creó durante el registro del canal. Puede buscarlo en el portal en la pestaña Canales del recurso de Azure Communication Services.
Asígnelo a una variable llamada channelRegistrationId.
const channelRegistrationId = "<your channel registration id GUID>";
Establecimiento de la lista de destinatarios
Debe proporcionar un número de teléfono real que tenga una cuenta de WhatsApp asociada. Esta cuenta de WhatsApp recibe la plantilla, el texto y los mensajes multimedia enviados en este inicio rápido. Para este inicio rápido, este número de teléfono puede ser su número de teléfono personal.
El número de teléfono del destinatario no puede ser el número de teléfono del trabajo (id. de remitente) asociado al registro de canales de WhatsApp. El id. de remitente aparece como remitente de los mensajes de texto y multimedia enviados al destinatario.
El número de teléfono debe incluir el código de país. Para obtener más información sobre el formato del número de teléfono, consulte la documentación de WhatsApp sobre formatos de número de teléfono.
Nota:
Actualmente solo se admite un número de teléfono en la lista de destinatarios.
Cree la lista de destinatarios de la siguiente manera:
const recipientList = ["<to WhatsApp phone number>"];
Ejemplo:
// Example only
const recipientList = ["+14255550199"];
Comience a enviar mensajes entre una empresa y un usuario de WhatsApp
Las conversaciones entre una cuenta empresarial de WhatsApp y un usuario de WhatsApp se pueden iniciar de una de estas dos maneras:
- La empresa envía un mensaje de plantilla al usuario de WhatsApp.
- El usuario de WhatsApp envía cualquier mensaje al número del trabajo.
Independientemente de cómo se haya iniciado la conversación, una empresa solo puede enviar mensajes de plantilla hasta que el usuario envíe un mensaje a la empresa. Solo después de que el usuario envíe un mensaje a la empresa, ésta podrá enviarle mensajes de texto o multimedia durante la conversación activa. Una vez transcurrido el plazo de 24 horas, la conversación debe reiniciarse. Para obtener más información sobre las conversaciones, consulte la definición en Plataforma de WhatsApp Business.
(Opción 1) Iniciar la conversación desde la empresa: enviar un mensaje de plantilla
Inicie una conversación mediante el envío de un mensaje de plantilla.
En primer lugar, cree un elemento MessageTemplate con los valores de una plantilla.
Nota:
Para comprobar qué plantillas tiene disponibles, consulte las instrucciones en Plantillas de lista. Si no dispone de una plantilla, siga con la Opción 2.
Aquí puede ver la creación de MessageTemplate con una plantilla predeterminada, sample_template
.
Si sample_template
no le aparece disponible, siga con la Opción 2. Para usuarios avanzados, consulte la página Plantillas para saber cómo enviar una plantilla diferente con la Opción 1.
El SDK de mensajes permite a Contoso enviar mensajes de WhatsApp con plantilla a los usuarios de WhatsApp. Para enviar los mensajes de plantilla a continuación, se requieren los detalles:
- Id. de canal de WhatsApp
- Número de teléfono del destinatario en formato E16
- Detalles de la plantilla
- Nombre como "sample_template"
- Idioma como "en_us"
- Parámetros, si hay alguno
// Assemble the template content
const template = {
name: "sample_template",
language: "en_US"
};
Para más ejemplos sobre cómo montar su MessageTemplate y cómo crear su propia plantilla, consulte el siguiente recurso:
Para más requisitos de WhatsApp sobre plantillas, consulte las referencias de la API de la Plataforma de WhatsApp Business:
// Send template message
const templateMessageResult = await client.path("/messages/notifications:send").post({
contentType: "application/json",
body: {
channelRegistrationId: channelRegistrationId,
to: recipientList,
kind: "template",
template: template
}
});
// Process result
if (templateMessageResult.status === "202") {
templateMessageResult.body.receipts.forEach((receipt) => {
console.log("Message sent to:"+receipt.to+" with message id:"+receipt.messageId);
});
} else {
throw new Error("Failed to send message");
}
Ahora, el usuario debe responder al mensaje de la plantilla. En la cuenta de usuario de WhatsApp, responda al mensaje de plantilla recibido de la cuenta empresarial de WhatsApp. El contenido del mensaje es irrelevante para este escenario.
Importante
El destinatario debe responder al mensaje de plantilla para iniciar la conversación antes de que se pueda enviar el mensaje de texto o multimedia al destinatario.
(Opción 2) Iniciar conversación desde el usuario
La otra opción para iniciar una conversación entre una cuenta empresarial de WhatsApp y un usuario de WhatsApp es hacer que el usuario inicie la conversación. Para ello, desde su cuenta de WhatsApp personal, envíe un mensaje al número del trabajo (id. de remitente).
Enviar un mensaje de texto a un usuario de WhatsApp
El SDK de mensajes permite a Contoso enviar mensajes de texto de WhatsApp, que iniciaron los usuarios de WhatsApp. Para enviar los mensajes de texto a continuación, se requieren los detalles:
- Id. de canal de WhatsApp
- Número de teléfono del destinatario en formato E16
- Cuerpo o texto del mensaje que se va a enviar
Importante
Para enviar un mensaje de texto a un usuario de WhatsApp, este debe enviar primero un mensaje a la cuenta de WhatsApp Business. Para obtener más información, consulte Empezar a enviar mensajes entre la empresa y el usuario de WhatsApp.
En este ejemplo, respondemos al usuario de WhatsApp con el texto "Gracias por sus comentarios.\n Desde el SDK de mensajería de notificaciones".
Agrupe y envíe el mensaje multimedia:
// Send text message
const textMessageResult = await client.path("/messages/notifications:send").post({
contentType: "application/json",
body: {
channelRegistrationId: channelRegistrationId,
to: recipientList,
kind: "text",
content: "Thanks for your feedback.\n From Notification Messaging SDK"
}
});
// Process result
if (textMessageResult.status === "202") {
textMessageResult.body.receipts.forEach((receipt) => {
console.log("Message sent to:"+receipt.to+" with message id:"+receipt.messageId);
});
} else {
throw new Error("Failed to send message");
}
Enviar un mensaje multimedia a un usuario de WhatsApp
El SDK de mensajes permite a Contoso enviar mensajes multimedia (imagen, vídeo, audio o documento) a los usuarios de WhatsApp. Para enviar un mensaje multimedia incrustado, necesita:
- Id. de canal de WhatsApp
- Número de teléfono del destinatario en formato E16
- Dirección URL de los medios de imagen, vídeo, documento o audio
Importante
Para enviar un mensaje multimedia a un usuario de WhatsApp, el usuario de WhatsApp primero debe enviar un mensaje a la cuenta empresarial de WhatsApp. Para obtener más información, consulte Empezar a enviar mensajes entre la empresa y el usuario de WhatsApp.
Importante
A partir de la versión 2.0.0 del SDK, MediaNotificationContent
está en desuso para las imágenes. Le animamos a usar ImageNotificationContent
para enviar imágenes y explorar otras clases específicas de contenido para otros tipos de medios, como DocumentNotificationContent
, VideoNotificationContent
y AudioNotificationContent
.
Envío de contenido de imagen
Para enviar un mensaje de imagen, proporcione una dirección URL a una imagen. Como ejemplo,
const url = "https://example.com/image.jpg";
Agrupe y envíe el mensaje multimedia:
// Send image message
const mediaMessageResult = await client.path("/messages/notifications:send").post({
contentType: "application/json",
body: {
channelRegistrationId: channelRegistrationId,
to: recipientList,
kind: "image",
mediaUri: url
}
});
// Process result
if (mediaMessageResult.status === "202") {
mediaMessageResult.body.receipts.forEach((receipt) => {
console.log("Message sent to:"+receipt.to+" with message id:"+receipt.messageId);
});
} else {
throw new Error("Failed to send message");
}
Envío de contenido de vídeo
Para enviar un mensaje de vídeo, proporcione una dirección URL a un vídeo. Como ejemplo,
const url = "https://example.com/video.mp4";
Ensamblar y enviar el mensaje de vídeo:
// Send video message
const mediaMessageResult = await client.path("/messages/notifications:send").post({
contentType: "application/json",
body: {
channelRegistrationId: channelRegistrationId,
to: recipientList,
kind: "video",
mediaUri: url
}
});
// Process result
if (mediaMessageResult.status === "202") {
mediaMessageResult.body.receipts.forEach((receipt) => {
console.log("Message sent to:"+receipt.to+" with message id:"+receipt.messageId);
});
} else {
throw new Error("Failed to send message");
}
Envío de contenido de audio
Para enviar un mensaje de audio, proporcione una dirección URL a un archivo de audio. Como ejemplo,
const url = "https://example.com/audio.mp3";
Ensamblar y enviar el mensaje de audio:
// Send audio message
const mediaMessageResult = await client.path("/messages/notifications:send").post({
contentType: "application/json",
body: {
channelRegistrationId: channelRegistrationId,
to: recipientList,
kind: "audio",
mediaUri: url
}
});
// Process result
if (mediaMessageResult.status === "202") {
mediaMessageResult.body.receipts.forEach((receipt) => {
console.log("Message sent to:"+receipt.to+" with message id:"+receipt.messageId);
});
} else {
throw new Error("Failed to send message");
}
Envío de contenido de documento
Para enviar un mensaje de documento, proporcione una dirección URL a un documento. Como ejemplo,
const url = "https://example.com/document.pdf";
Ensamblar y enviar el mensaje del documento:
// Send document message
const mediaMessageResult = await client.path("/messages/notifications:send").post({
contentType: "application/json",
body: {
channelRegistrationId: channelRegistrationId,
to: recipientList,
kind: "document",
mediaUri: url
}
});
// Process result
if (mediaMessageResult.status === "202") {
mediaMessageResult.body.receipts.forEach((receipt) => {
console.log("Message sent to:"+receipt.to+" with message id:"+receipt.messageId);
});
} else {
throw new Error("Failed to send message");
}
Ejecución del código
Utilice el comando node para ejecutar el código que ha agregado al archivo send-messages.js.
node ./send-messages.js
Ejemplo completo de código
Puede descargar la aplicación de ejemplo de GitHub.
Requisitos previos
Cuenta de WhatsApp Business registrada con su recurso Azure Communication Services.
Número de teléfono de WhatsApp activo para recibir mensajes.
Python 3.7+ para su sistema operativo.
Instalación
Creación de una nueva aplicación de Python
En una ventana de terminal o consola, cree una nueva carpeta para la aplicación y vaya a ella.
mkdir messages-quickstart && cd messages-quickstart
Instalar el paquete
Deberá utilizar la biblioteca de clientes de Azure Communication Messages para Python versión 1.0.0 o superior.
Desde el símbolo del sistema de la consola, ejecute el comando siguiente:
pip install azure-communication-messages
Instalación del marco de la aplicación
Cree un archivo llamado messages-quickstart.py
y agregue la estructura básica del programa.
type nul > messages-quickstart.py
Estructura básica del programa
import os
class MessagesQuickstart(object):
print("Azure Communication Services - Advanced Messages SDK Quickstart")
if __name__ == '__main__':
messages = MessagesQuickstart()
Modelo de objetos
Las siguientes clases e interfaces controlan algunas de las características principales del SDK de mensajes de Azure Communication Services para Python.
Nombre | Descripción |
---|---|
NotificationMessagesClient | Esta clase se conecta a su recurso Azure Communication Services. Envía los mensajes. |
MessageTemplate | Esta clase define qué plantilla utiliza y el contenido de las propiedades de la plantilla para su mensaje. |
TemplateNotificationContent | Esta clase define el "quién" y el "qué" del mensaje de plantilla que pretende enviar. |
TextNotificationContent | Esta clase define el "quién" y el "qué" del mensaje de texto que pretende enviar. |
ImageNotificationContent | Esta clase define el "quién" y el "qué" del mensaje multimedia de imagen que quiere enviar. |
DocumentNotificationContent | Esta clase define el "quién" y el "qué" del mensaje de medios de documentos que pretende enviar. |
VideoNotificationContent | Esta clase define el "quién" y el "qué" del mensaje multimedia vídeo que quiere enviar. |
AudioNotificationContent | Obtenga la cadena de conexión de Recursos de comunicación de Azure desde Azure Portal como se indica en el recorte de pantalla. |
Ejemplos de código
Siga estos pasos para agregar los fragmentos de código necesarios al programa messages-quickstart.py python.
- Autenticar el cliente
- Establecer Id. de registro de canal
- Establecer lista de destinatarios
- Empezar a enviar mensajes entre una empresa y un usuario de WhatsApp
- Enviar un mensaje de texto a un usuario de WhatsApp
- Enviar un mensaje multimedia a un usuario de WhatsApp
Autenticar el cliente
El envío de mensajes se realiza mediante NotificationMessagesClient. NotificationMessagesClient se autentica mediante la cadena de conexión adquirida desde el recurso de Azure Communication Services en Azure Portal. Para más información sobre las cadenas de conexión, consulte access-your-connection-strings-and-service-endpoints.
Obtenga la cadena de conexión de Recursos de comunicación de Azure desde Azure Portal como se indica en el recorte de pantalla. A la izquierda, navegue hasta la pestaña Keys
. Copie el campo Connection string
para la clave primaria. La cadena de conexión tiene el formato endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key}
.
Establezca la variable de entorno COMMUNICATION_SERVICES_CONNECTION_STRING
en el valor de la cadena de conexión.
Abra una ventana de consola y escriba el siguiente comando:
setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"
Tras agregar la variable de entorno, es posible que tenga que reiniciar todos los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de la consola. Por ejemplo, si usa Visual Studio como editor, reinícielo antes de ejecutar el ejemplo.
Para obtener más información sobre cómo configurar una variable de entorno para su sistema, siga los pasos indicados en Almacene su cadena de conexión en una variable de entorno.
# 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)
Establecimiento del identificador de registro de canales
El Id. GUID de registro de canal se creó durante el registro del canal. Puede buscarlo en el portal en la pestaña Canales del recurso de Azure Communication Services.
Asígnelo a una variable llamada channelRegistrationId.
channelRegistrationId = os.getenv("WHATSAPP_CHANNEL_ID_GUID")
Establecimiento de la lista de destinatarios
Debe proporcionar un número de teléfono real que tenga una cuenta de WhatsApp asociada. Esta cuenta de WhatsApp recibe la plantilla, el texto y los mensajes multimedia enviados en este inicio rápido. Para este inicio rápido, este número de teléfono puede ser su número de teléfono personal.
El número de teléfono del destinatario no puede ser el número de teléfono del trabajo (id. de remitente) asociado al registro de canales de WhatsApp. El id. de remitente aparece como remitente de los mensajes de texto y multimedia enviados al destinatario.
El número de teléfono debe incluir el código de país. Para obtener más información sobre el formato del número de teléfono, consulte la documentación de WhatsApp sobre formatos de número de teléfono.
Nota:
Actualmente solo se admite un número de teléfono en la lista de destinatarios.
Establezca la lista de destinatarios así:
phone_number = os.getenv("RECIPIENT_WHATSAPP_PHONE_NUMBER")
Ejemplo de uso:
# Example only
to=[self.phone_number],
Comience a enviar mensajes entre una empresa y un usuario de WhatsApp
Las conversaciones entre una cuenta empresarial de WhatsApp y un usuario de WhatsApp se pueden iniciar de una de estas dos maneras:
- La empresa envía un mensaje de plantilla al usuario de WhatsApp.
- El usuario de WhatsApp envía cualquier mensaje al número del trabajo.
Independientemente de cómo se haya iniciado la conversación, una empresa solo puede enviar mensajes de plantilla hasta que el usuario envíe un mensaje a la empresa. Solo después de que el usuario envíe un mensaje a la empresa, ésta podrá enviarle mensajes de texto o multimedia durante la conversación activa. Una vez transcurrido el plazo de 24 horas, la conversación debe reiniciarse. Para obtener más información sobre las conversaciones, consulte la definición en Plataforma de WhatsApp Business.
(Opción 1) Iniciar la conversación desde la empresa: enviar un mensaje de plantilla
Inicie una conversación mediante el envío de un mensaje de plantilla.
En primer lugar, cree un elemento MessageTemplate con los valores de una plantilla.
Nota:
Para comprobar qué plantillas tiene disponibles, consulte las instrucciones en Plantillas de lista. Si no dispone de una plantilla, siga con la Opción 2.
Aquí puede ver la creación de MessageTemplate con una plantilla predeterminada, sample_template
.
Si sample_template
no le aparece disponible, siga con la Opción 2. Para usuarios avanzados, consulte la página Plantillas para saber cómo enviar una plantilla diferente con la Opción 1.
El SDK de mensajes permite a Contoso enviar mensajes de WhatsApp con plantilla a los usuarios de WhatsApp. Para enviar los mensajes de plantilla a continuación, se requieren los detalles:
- Id. de canal de WhatsApp
- Número de teléfono del destinatario en formato E16
- Detalles de la plantilla
- Nombre como "sample_template"
- Idioma como "en_us"
- Parámetros, si hay alguno
Para más ejemplos sobre cómo montar su MessageTemplate y cómo crear su propia plantilla, consulte el siguiente recurso:
Para más requisitos de WhatsApp sobre plantillas, consulte las referencias de la API de la Plataforma de WhatsApp Business:
Para enviar un mensaje de plantilla de WhatsApp, agregue código dado en la función send_template_message(self).
input_template: MessageTemplate = MessageTemplate(
name="<<template_name>>",
language="<<template_language>>")
template_options = TemplateNotificationContent(
channel_registration_id=self.channelRegistrationId,
to=[self.phone_number],
template=input_template
)
# calling send() with whatsapp template details
message_responses = messaging_client.send(template_options)
response = message_responses.receipts[0]
if (response is not None):
print("WhatsApp Templated Message with message id {} was successfully sent to {}."
.format(response.message_id, response.to))
else:
print("Message failed to send")
Agregue la llamada send_template_message() al método main.
# Calling send_template_message()
messages.send_template_message()
Ahora, el usuario debe responder al mensaje de la plantilla. En la cuenta de usuario de WhatsApp, responda al mensaje de plantilla recibido de la cuenta empresarial de WhatsApp. El contenido del mensaje es irrelevante para este escenario.
Importante
El destinatario debe responder al mensaje de plantilla para iniciar la conversación antes de que se pueda enviar el mensaje de texto o multimedia al destinatario.
(Opción 2) Iniciar conversación desde el usuario
La otra opción para iniciar una conversación entre una cuenta empresarial de WhatsApp y un usuario de WhatsApp es hacer que el usuario inicie la conversación. Para ello, desde su cuenta de WhatsApp personal, envíe un mensaje al número del trabajo (id. de remitente).
Enviar un mensaje de texto a un usuario de WhatsApp
El SDK de mensajes permite a Contoso enviar mensajes de texto de WhatsApp, que iniciaron los usuarios de WhatsApp. Para enviar los mensajes de texto a continuación, se requieren los detalles:
- Id. de canal de WhatsApp
- Número de teléfono del destinatario en formato E16
- Cuerpo o texto del mensaje que se va a enviar
Importante
Para enviar un mensaje de texto a un usuario de WhatsApp, este debe enviar primero un mensaje a la cuenta de WhatsApp Business. Para obtener más información, consulte Empezar a enviar mensajes entre la empresa y el usuario de WhatsApp.
En este ejemplo, respondemos al usuario de WhatsApp con el texto "Gracias por sus comentarios.\n Desde el SDK de mensajería de notificaciones".
def send_text_message(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import ( TextNotificationContent)
# Create NotificationMessagesClient Client
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
text_options = TextNotificationContent (
channel_registration_id=self.channelRegistrationId,
to= [self.phone_number],
content="Thanks for your feedback.\n From Notification Messaging SDK",
)
# calling send() with whatsapp message details
message_responses = messaging_client.send(text_options)
response = message_responses.receipts[0]
if (response is not None):
print("WhatsApp Text Message with message id {} was successfully sent to {}."
.format(response.message_id, response.to))
else:
print("Message failed to send")
Para ejecutar send_text_message(), actualice el método main
#Calling send_text_message()
messages.send_text_message()
Enviar un mensaje multimedia de imagen a un usuario de WhatsApp
El SDK de mensajes permite a Contoso enviar mensajes de imagen de WhatsApp a los usuarios de WhatsApp. Para enviar mensajes insertados de imagen a continuación, se requieren los detalles:
- Id. de canal de WhatsApp
- Número de teléfono del destinatario en formato E16
- MediaUri de la imagen
Importante
Para enviar un mensaje de texto a un usuario de WhatsApp, este debe enviar primero un mensaje a la cuenta de WhatsApp Business. Para obtener más información, consulte Empezar a enviar mensajes entre la empresa y el usuario de WhatsApp.
Un ejemplo de media_uri usado en el envío de mensajes de WhatsApp multimedia.
input_media_uri: str = "https://aka.ms/acsicon1"
def send_image_message(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import ( ImageNotificationContent)
# Create NotificationMessagesClient Client
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
input_media_uri: str = "https://aka.ms/acsicon1"
image_message_options = ImageNotificationContent(
channel_registration_id=self.channelRegistrationId,
to=[self.phone_number],
media_uri=input_media_uri
)
# calling send() with whatsapp image message
message_responses = messaging_client.send(image_message_options)
response = message_responses.receipts[0]
if (response is not None):
print("WhatsApp Image containing Message with message id {} was successfully sent to {}"
.format(response.message_id, response.to))
else:
print("Message failed to send")
Para ejecutar send_text_message(), actualice el método main
# Calling send_image_message()
messages.send_image_message()
Enviar un mensaje multimedia de documento a un usuario de WhatsApp
El SDK de mensajes permite a Contoso enviar mensajes de imagen de WhatsApp a los usuarios de WhatsApp. Para enviar mensajes insertados de imagen a continuación, se requieren los detalles:
- Id. de canal de WhatsApp
- Número de teléfono del destinatario en formato E16
- MediaUri del documento
Importante
Para enviar un mensaje de documento a un usuario de WhatsApp, el usuario de WhatsApp primero debe enviar un mensaje a la cuenta empresarial de WhatsApp. Para obtener más información, consulte Empezar a enviar mensajes entre la empresa y el usuario de WhatsApp.
Un ejemplo de media_uri usado en el envío de mensajes de WhatsApp multimedia.
input_media_uri: str = "##DocumentLinkPlaceholder##"
def send_document_message(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import ( DocumentNotificationContent)
# Create NotificationMessagesClient Client
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
input_media_uri: str = "##DocumentLinkPlaceholder##"
documents_options = DocumentNotificationContent(
channel_registration_id=self.channelRegistrationId,
to=[self.phone_number],
caption="Hello World via Advanced Messaging SDK.This is document message",
file_name="Product roadmap timeline.pptx",
media_uri=input_media_uri,
)
# calling send() with whatsapp image message
message_responses = messaging_client.send(documents_options)
response = message_responses.receipts[0]
if (response is not None):
print("WhatsApp Document containing Message with message id {} was successfully sent to {}"
.format(response.message_id, response.to))
else:
print("Message failed to send")
Para ejecutar send_text_message(), actualice el método main
# Calling send_image_message()
messages.send_image_message()
Enviar un mensaje multimedia de audio a un usuario de WhatsApp
El SDK de mensajes permite a Contoso enviar mensajes de imagen de WhatsApp a los usuarios de WhatsApp. Para enviar mensajes insertados de imagen a continuación, se requieren los detalles:
- Id. de canal de WhatsApp
- Número de teléfono del destinatario en formato E16
- MediaUri del audio
Importante
Para enviar un mensaje de audio a un usuario de WhatsApp, el usuario de WhatsApp primero debe enviar un mensaje a la cuenta empresarial de WhatsApp. Para obtener más información, consulte Empezar a enviar mensajes entre la empresa y el usuario de WhatsApp.
Un ejemplo de media_uri usado en el envío de mensajes de WhatsApp multimedia.
input_media_uri: str = "##AudioLinkPlaceholder##"
def send_audio_message(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import ( AudioNotificationContent)
# Create NotificationMessagesClient Client
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
input_media_uri: str = "##AudioLinkPlaceholder##"
audio_options = AudioNotificationContent(
channel_registration_id=self.channelRegistrationId,
to=[self.phone_number],
media_uri=input_media_uri,
)
# calling send() with whatsapp image message
message_responses = messaging_client.send(audio_options)
response = message_responses.receipts[0]
if (response is not None):
print("WhatsApp Audio containing Message with message id {} was successfully sent to {}"
.format(response.message_id, response.to))
else:
print("Message failed to send")
Para ejecutar send_text_message(), actualice el método main
# Calling send_image_message()
messages.send_image_message()
Enviar un mensaje multimedia de vídeo a un usuario de WhatsApp
El SDK de mensajes permite a Contoso enviar mensajes de imagen de WhatsApp a los usuarios de WhatsApp. Para enviar mensajes insertados de imagen a continuación, se requieren los detalles:
- Id. de canal de WhatsApp
- Número de teléfono del destinatario en formato E16
- MediaUri del vídeo
Importante
Para enviar un mensaje de vídeo a un usuario de WhatsApp, el usuario de WhatsApp primero debe enviar un mensaje a la cuenta empresarial de WhatsApp. Para obtener más información, consulte Empezar a enviar mensajes entre la empresa y el usuario de WhatsApp.
Un ejemplo de media_uri usado en el envío de mensajes de WhatsApp multimedia.
input_media_uri: str = "##VideoLinkPlaceholder##"
def send_video_message(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import ( VideoNotificationContent)
# Create NotificationMessagesClient Client
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
input_media_uri: str = "##VideoLinkPlaceholder##"
video_options = VideoNotificationContent(
channel_registration_id=self.channelRegistrationId,
to=[self.phone_number],
media_uri=input_media_uri,
)
# calling send() with whatsapp image message
message_responses = messaging_client.send(image_message_options)
response = message_responses.receipts[0]
if (response is not None):
print("WhatsApp Video containing Message with message id {} was successfully sent to {}"
.format(response.message_id, response.to))
else:
print("Message failed to send")
Para ejecutar send_text_message(), actualice el método main
# Calling send_image_message()
messages.send_image_message()
Ejecución del código
Para ejecutar el código, asegúrese de que se encuentra en el directorio donde está el archivo messages-quickstart.py
.
python messages-quickstart.py
Azure Communication Services - Advanced Messages Quickstart
WhatsApp Templated Message with message id <<GUID>> was successfully sent to <<ToRecipient>>
WhatsApp Text Message with message id <<GUID>> was successfully sent to <<ToRecipient>>
WhatsApp Image containing Message with message id <<GUID>> was successfully sent to <<ToRecipient>>
Ejemplo completo de código
import os
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")
phone_number = os.getenv("RECIPIENT_PHONE_NUMBER")
channelRegistrationId = os.getenv("WHATSAPP_CHANNEL_ID")
def send_template_message(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import ( TemplateNotificationContent , MessageTemplate )
# client creation
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
input_template: MessageTemplate = MessageTemplate(
name="<<TEMPLATE_NAME>>",
language="<<LANGUAGE>>")
template_options = TemplateNotificationContent(
channel_registration_id=self.channelRegistrationId,
to=[self.phone_number],
template=input_template
)
# calling send() with WhatsApp template details.
message_responses = messaging_client.send(template_options)
response = message_responses.receipts[0]
if (response is not None):
print("WhatsApp Templated Message with message id {} was successfully sent to {}"
.format(response.message_id, response.to))
else:
print("Message failed to send")
def send_text_message(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import ( TextNotificationContent )
# client creation
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
text_options = TextNotificationContent (
channel_registration_id=self.channelRegistrationId,
to= [self.phone_number],
content="Hello World via ACS Advanced Messaging SDK.",
)
# calling send() with WhatsApp message details
message_responses = messaging_client.send(text_options)
response = message_responses.receipts[0]
if (response is not None):
print("WhatsApp Text Message with message id {} was successfully sent to {}"
.format(response.message_id, response.to))
else:
print("Message failed to send")
def send_image_message(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import ( ImageNotificationContent)
# Create NotificationMessagesClient Client
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
input_media_uri: str = "https://aka.ms/acsicon1"
image_message_options = ImageNotificationContent(
channel_registration_id=self.channelRegistrationId,
to=[self.phone_number],
media_uri=input_media_uri
)
# calling send() with whatsapp image message
message_responses = messaging_client.send(image_message_options)
response = message_responses.receipts[0]
if (response is not None):
print("WhatsApp Image containing Message with message id {} was successfully sent to {}"
.format(response.message_id, response.to))
else:
print("Message failed to send")
def send_document_message(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import ( DocumentNotificationContent)
# Create NotificationMessagesClient Client
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
input_media_uri: str = "##DocumentLinkPlaceholder##"
documents_options = DocumentNotificationContent(
channel_registration_id=self.channelRegistrationId,
to=[self.phone_number],
caption="Hello World via Advanced Messaging SDK.This is document message",
file_name="Product roadmap timeline.pptx",
media_uri=input_media_uri,
)
# calling send() with whatsapp image message
message_responses = messaging_client.send(documents_options)
response = message_responses.receipts[0]
if (response is not None):
print("WhatsApp Document containing Message with message id {} was successfully sent to {}"
.format(response.message_id, response.to))
else:
print("Message failed to send")
def send_audio_message(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import ( AudioNotificationContent)
# Create NotificationMessagesClient Client
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
input_media_uri: str = "##AudioLinkPlaceholder##"
audio_options = AudioNotificationContent(
channel_registration_id=self.channelRegistrationId,
to=[self.phone_number],
media_uri=input_media_uri,
)
# calling send() with whatsapp image message
message_responses = messaging_client.send(audio_options)
response = message_responses.receipts[0]
if (response is not None):
print("WhatsApp Audio containing Message with message id {} was successfully sent to {}"
.format(response.message_id, response.to))
else:
print("Message failed to send")
def send_video_message(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import ( VideoNotificationContent)
# Create NotificationMessagesClient Client
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
input_media_uri: str = "##VideoLinkPlaceholder##"
video_options = VideoNotificationContent(
channel_registration_id=self.channelRegistrationId,
to=[self.phone_number],
media_uri=input_media_uri,
)
# calling send() with whatsapp image message
message_responses = messaging_client.send(image_message_options)
response = message_responses.receipts[0]
if (response is not None):
print("WhatsApp Video containing Message with message id {} was successfully sent to {}"
.format(response.message_id, response.to))
else:
print("Message failed to send")
if __name__ == '__main__':
messages = MessagesQuickstart()
messages.send_template_message()
messages.send_text_message()
messages.send_image_message()
messages.send_document_message()
messages.send_audio_message()
messages.send_video_message()
Nota:
Actualice todas las variables de marcador de posición en el código anterior.
Otros ejemplos
Puede revisar y descargar otros códigos de ejemplo para el SDK de mensajes de Python en GitHub.
Pasos siguientes
En esta guía de inicio rápido, ha probado el SDK de mensajería avanzada para WhatsApp. A continuación, es posible que también le interesen los siguientes artículos: