Отправка текстовых и мультимедийных сообщений WhatsApp

Azure Communication Services позволяет отправлять и получать сообщения WhatsApp. В этой статье описывается, как интегрировать приложение с пакетом SDK для расширенного обмена сообщениями Azure для начала отправки и получения сообщений WhatsApp. Публикация этой статьи влечёт небольшую плату в размере нескольких центов или меньше в долларах США на вашу учетную запись Azure.

Предварительные требования

Настройка среды

Создание проекта .NET

Чтобы создать ваш проект, следуйте инструкциям из руководства Создать консольное приложение .NET с использованием Visual Studio.

Чтобы скомпилировать код, нажмите клавиши CTRL+F7.

Установка пакета

Установите пакет NuGet Azure.Communication.Messages в проект C#.

  1. Откройте Менеджер пакетов NuGet в Project>Manage NuGet Packages....
  2. Найдите пакет Azure.Communication.Messages.
  3. Установите последний выпуск.

Настройка платформы приложения

Откройте файл Program.cs в текстовом редакторе.

Замените содержимое Program.cs следующим кодом:

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
        }
    }
}

Чтобы использовать функции расширенного обмена сообщениями, добавьте директиву using, чтобы включить пространство имен Azure.Communication.Messages.

using Azure.Communication.Messages;

Объектная модель

Следующие классы и интерфейсы обрабатывают некоторые основные функции пакета SDK для предварительного обмена сообщениями Azure Communication Services для .NET.

Имя класса Описание
NotificationMessagesClient Подключается к ресурсу Azure Communication Services. Он отправляет сообщения.
MessageTemplate Определяет используемый шаблон и содержимое свойств шаблона для сообщения.
TemplateNotificationContent Определяет "кто" и "что" сообщения шаблона, которое вы собираетесь отправить.
TextNotificationContent Определяет "кто" и "что" текстового сообщения, которое вы собираетесь отправить.
ImageNotificationContent Определяет "кто" и "что" сообщения мультимедиа изображения, которое вы собираетесь отправить.
DocumentNotificationContent Определяет "кто" и "что" медиа-сообщения документа, которое вы планируете отправить.
VideoNotificationContent Определяет "кто" и "что" видеомедийного сообщения, которое вы планируете отправить.
AudioNotificationContent Определяет "кто" и "что" сообщения аудиомедиаля, которое вы собираетесь отправить.

Примечание.

Для получения дополнительной информации смотрите справочник Azure SDK для .NET, раздел Azure.Communication.Messages Namespace.

Распространенные конфигурации

Выполните следующие действия, чтобы добавить необходимые фрагменты кода в программу python messages-quickstart.py.

аутентификация клиента;

SDK сообщений использует NotificationMessagesClient, чтобы отправлять сообщения. Метод NotificationMessagesClient выполняет аутентификацию с использованием строки подключения, полученной из ресурса Azure Communication Services на портале Azure. Дополнительные сведения о строках подключения см. в разделе access-your-connection-strings-and-service-endpoints.

Для простоты в этой статье используется connection string для проверки подлинности. В рабочих средах рекомендуется использовать учетные записи службы.

Получите строку подключения из ресурса Azure Communication Services на портале Azure. Слева перейдите на Keys вкладку. Скопируйте Connection string поле для первичного ключа. Connection string находится в формате endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key}.

Скриншот, показывающий ресурс Azure Communication Services на портале Azure, с полем

Установите переменную среды COMMUNICATION_SERVICES_CONNECTION_STRING в значение вашей строки подключения.
Откройте окно консоли и введите следующую команду:

setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"

После добавления переменной среды может потребоваться перезапустить все запущенные программы, которые потребуются для чтения переменной среды, включая окно консоли. Например, если вы используете Visual Studio в качестве редактора, перезапустите Visual Studio перед выполнением примера.

Дополнительные сведения о настройке переменной среды для системы см. в статье Сохранение строки подключения в переменной среды.

Чтобы создать экземпляр NotificationMessagesClient, добавьте следующий код в метод Main.

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

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

Установка идентификатора регистрации канала

Вы создали GUID для регистрации ID канала во время регистрации канала. Найдите его на портале на вкладке Channels ресурса Azure Communication Services.

Снимок экрана с ресурсом Azure Communication Services на портале Azure, на вкладке

Назначьте его переменной, называемой channelRegistrationId.

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

Настройка списка получателей

Необходимо указать активный номер телефона, связанный с учетной записью WhatsApp, или идентификатор пользователя в области бизнеса (BSUID). Эта учетная запись WhatsApp получает шаблонные, текстовые и медийные сообщения, отправленные в рамках этого краткого руководства.

В этом примере можно использовать личный номер телефона.

Номер телефона получателя не может быть бизнес-номером телефона (идентификатор отправителя), связанным с регистрацией канала WhatsApp. Идентификатор отправителя отображается как отправитель текстовых сообщений и сообщений мультимедиа, отправленных получателю.

Номер телефона должен содержать код страны. Дополнительные сведения о форматировании номеров телефонов см. в документации WhatsApp для форматов номеров телефонов.

Примечание.

В настоящее время в списке получателей поддерживается только один номер телефона или BSUID.

Создайте список получателей следующим образом:

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

Пример использования номера телефона:

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

Пример использования BSUID:

// Example only
var recipientList = new List<string> { "US.13491208655302741918" };

Примечание.

Отправка сообщений в BSUID будет доступна начиная с июня 2026 года. До этого используйте номера телефонов в качестве получателей.

Дополнительные сведения о BSUID см. в разделе WhatsApp usernames and BSUIDs.

Начало отправки сообщений между бизнесом и пользователем WhatsApp

Беседы между учетной записью WhatsApp Business и пользователем WhatsApp можно инициировать одним из двух способов:

  • Компания отправляет шаблонное сообщение пользователю WhatsApp.
  • Пользователь WhatsApp отправляет любое сообщение в бизнес-номер.

Бизнес не может инициировать интерактивную беседу. Бизнес может отправлять интерактивное сообщение только после получения сообщения от пользователя. Бизнес может отправлять интерактивные сообщения пользователю только во время активной беседы. После истечения срока действия окна беседы через 24 часа пользователь может перезапустить интерактивную беседу. Дополнительные сведения о беседах см. в определении в WhatsApp Business Platform.

Чтобы инициировать интерактивную беседу из личной учетной записи WhatsApp, отправьте сообщение в свой бизнес-номер (идентификатор отправителя).

Беседа WhatsApp, просматриваемая в Интернете, показывающая сообщение пользователя, отправленное на номер учетной записи WhatsApp Business.

Примеры кода

Выполните следующие действия, чтобы добавить необходимые фрагменты кода в основную функцию Program.cs файла.

Внимание

Чтобы отправить текстовое или медиа-сообщение пользователю WhatsApp, пользователь WhatsApp должен сначала отправить сообщение в учетную запись WhatsApp Business. Дополнительные сведения см. в статье "Начало отправки сообщений между бизнесом и пользователем WhatsApp".

Отправка текстового сообщения пользователю WhatsApp

Пакет SDK сообщений позволяет Contoso отправлять текстовые сообщения WhatsApp, инициированные пользователями WhatsApp. Чтобы отправить текстовое сообщение, вам потребуется:

В этом примере мы отвечаем пользователю WhatsApp с текстом: "Thanks for your feedback.\n From Notification Messaging SDK."

Сборка и отправка текстового сообщения:

// 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);

Отправить мультимедийное сообщение с изображением пользователю WhatsApp

Пакет SDK для сообщений позволяет Contoso отправлять сообщения мультимедиа WhatsApp пользователям WhatsApp. Чтобы отправить внедренное сообщение мультимедиа, вам потребуется:

Внимание

Начиная с версии 1.1.0 SDK, MediaNotificationContent объявлен устаревшим для изображений. Мы рекомендуем использовать ImageNotificationContent для отправки изображений. Изучите другие классы, относящиеся к содержимому, для других типов мультимедиа, таких как DocumentNotificationContent, VideoNotificationContentи AudioNotificationContent.

Соберите сообщение с изображением:

var imageLink = new Uri("https://example.com/image.jpg");
var imageNotificationContent = new ImageNotificationContent(channelRegistrationId, recipientList, imageLink)  
{  
    Caption = "Check out this image."  
};

Отправьте сообщение изображения:

var imageResponse = await notificationMessagesClient.SendAsync(imageNotificationContent);

Отправка сообщения мультимедиа документа пользователю WhatsApp

Пакет SDK для сообщений позволяет Contoso отправлять сообщения мультимедиа WhatsApp пользователям WhatsApp. Чтобы отправить внедренное сообщение мультимедиа, вам потребуется:

Сборка содержимого документа:

var documentLink = new Uri("https://example.com/document.pdf");
var documentNotificationContent = new DocumentNotificationContent(channelRegistrationId, recipientList, documentLink)  
{  
    Caption = "Check out this document.",  
    FileName = "document.pdf"  
};

Отправьте сообщение о документе:

var documentResponse = await notificationMessagesClient.SendAsync(documentNotificationContent);

Отправка видеомедийного сообщения пользователю WhatsApp

Пакет SDK для сообщений позволяет Contoso отправлять сообщения мультимедиа WhatsApp пользователям WhatsApp. Чтобы отправить внедренное сообщение мультимедиа, вам потребуется:

Собрать видеосообщение:

var videoLink = new Uri("https://example.com/video.mp4");
var videoNotificationContent = new VideoNotificationContent(channelRegistrationId, recipientList, videoLink)  
{  
    Caption = "Check out this video."  
};

Отправьте видеосообщение:

var videoResponse = await notificationMessagesClient.SendAsync(videoNotificationContent);

Отправка сообщения аудиомедийного носителя пользователю WhatsApp

Пакет SDK для сообщений позволяет Contoso отправлять сообщения мультимедиа WhatsApp пользователям WhatsApp. Чтобы отправить внедренное сообщение мультимедиа, вам потребуется:

Сборка звукового сообщения:

var audioLink = new Uri("https://example.com/audio.mp3");
var audioNotificationContent = new AudioNotificationContent(channelRegistrationId, recipientList, audioLink);

Отправьте звуковое сообщение:

var audioResponse = await notificationMessagesClient.SendAsync(audioNotificationContent);

Выполнение кода

Создайте и запустите программу.

Для отправки текстового или медиа-сообщения пользователю WhatsApp необходимо активное общение между учетной записью WhatsApp business и пользователем WhatsApp.

Если у вас нет активной беседы, в этом примере добавьте ожидание между отправкой сообщения шаблона и отправкой текстового сообщения. Эта добавленная задержка дает достаточно времени, чтобы ответить бизнесу в WhatsApp-аккаунте пользователя. В полном примере кода запрашивается ручной ввод пользователем перед отправкой следующего сообщения.

При успешном выполнении вы получите три сообщения в учетной записи WhatsApp пользователя.

  1. Чтобы скомпилировать код, нажмите клавиши CTRL+F7.
  2. Чтобы запустить программу без отладки, нажмите клавиши CTRL+F5.

Полный пример кода

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");
        }
    }
}

Предварительные требования

Настройка среды

Чтобы настроить среду для отправки сообщений, выполните действия, описанные в следующих разделах.

Создание нового приложения Java

Откройте терминал или командное окно и перейдите в каталог, в котором нужно создать приложение Java. Выполните следующую команду, чтобы создать проект Java из шаблона maven-archetype-quickstart.

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

Цель generate создает каталог с тем же именем, что и значение artifactId. В этом каталоге каталог src/main/java содержит исходный код проекта, каталог src/test/java содержит исходный код теста, а файл pom.xml является объектной моделью проекта (POM).

Установка пакета

Откройте файл pom.xml в текстовом редакторе. Добавьте приведенный ниже элемент зависимости в группу зависимостей.

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

Настройка платформы приложения

Откройте /src/main/java/com/communication/quickstart/App.java в текстовом редакторе, добавьте директивы импорта и удалите инструкцию 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.
    }
}

Примеры кода

Выполните следующие действия, чтобы добавить необходимые фрагменты кода в основную функцию App.java файла.

Начало отправки сообщений между бизнесом и пользователем WhatsApp

Беседы между учетной записью WhatsApp Business и пользователем WhatsApp можно инициировать одним из двух способов:

  • Компания отправляет шаблонное сообщение пользователю WhatsApp.
  • Пользователь WhatsApp отправляет любое сообщение в бизнес-номер.

Независимо от того, как была запущена беседа, бизнес может отправлять только шаблонные сообщения, пока пользователь не отправит сообщение в бизнес. Только после того, как пользователь отправит сообщение в бизнес, бизнес может отправлять текстовые или медиа-сообщения пользователю в ходе активной беседы. После истечения срока действия 24-часового окна беседы необходимо повторно выполнить беседу. Дополнительные сведения о беседах см. в определении в WhatsApp Business Platform.

аутентификация клиента;

Существует несколько различных вариантов проверки подлинности клиента сообщения:

Чтобы выполнить проверку подлинности клиента, создайте экземпляр NotificationMessagesClient или MessageTemplateClient с помощью connection string. Вы также можете инициализировать клиент с помощью любого пользовательского HTTP-клиента, реализующего com.azure.core.http.HttpClient интерфейс.

Для простоты в этой статье используется connection string для проверки подлинности. В рабочих средах рекомендуется использовать учетные записи службы.

Получите строку подключения из ресурса Azure Communication Services на портале Azure. На панели слева перейдите на вкладку Keys. Скопируйте поле Connection string для Primary key. Connection string находится в формате endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key}.

Скриншот, показывающий ресурс Azure Communication Services на портале Azure, с полем

Установите переменную среды COMMUNICATION_SERVICES_CONNECTION_STRING в значение вашей строки подключения.
Откройте окно консоли и введите следующую команду:

setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"

Дополнительные сведения о настройке переменной среды для системы см. в статье Сохранение строки подключения в переменной среды.

Чтобы создать экземпляр NotificationMessagesClient, добавьте следующий код в 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();

Установка идентификатора регистрации канала

GUID идентификатора канала был создан во время его регистрации. Его можно найти на портале на вкладке "Каналы" ресурса Azure Communication Services.

Снимок экрана с ресурсом Azure Communication Services на портале Azure, на вкладке

Назначьте его переменной, называемой channelRegistrationId.

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

Настройка списка получателей

Необходимо указать реальный номер телефона с учетной записью WhatsApp, связанной с ней, или идентификатор пользователя в области бизнеса (BSUID). Эта учетная запись WhatsApp получает текстовые и медиа-сообщения, отправленные в этой статье. В этой статье этот номер телефона может быть вашим личным номером телефона.

Номер телефона получателя не может быть бизнес-номером телефона (идентификатор отправителя), связанным с регистрацией канала WhatsApp. Идентификатор отправителя отображается как отправитель текстовых сообщений и сообщений мультимедиа, отправленных получателю.

Номер телефона должен содержать код страны. Дополнительные сведения о форматировании номеров телефонов см. в документации WhatsApp для форматов номеров телефонов.

Примечание.

В настоящее время в списке получателей поддерживается только один номер телефона или BSUID.

Создайте список получателей следующим образом:

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

Пример использования номера телефона:

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

Пример использования BSUID:

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

Примечание.

Отправка сообщений в BSUID будет доступна начиная с июня 2026 года. До этого используйте номера телефонов в качестве получателей.

Дополнительные сведения о BSUID см. в разделе WhatsApp usernames and BSUIDs.

Отправка текстового сообщения пользователю WhatsApp

Пакет SDK сообщений позволяет Contoso отправлять текстовые сообщения WhatsApp, инициированные пользователями WhatsApp. Для отправки текстовых сообщений требуются следующие сведения:

В этом примере мы отвечаем пользователю WhatsApp с текстом "Thanks for your feedback.\n From Notification Messaging SDK."

Внимание

Чтобы отправить текстовое сообщение пользователю WhatsApp, пользователь WhatsApp должен сначала отправить сообщение в учетную запись WhatsApp Business. Дополнительные сведения см. в статье "Начало отправки сообщений между бизнесом и пользователем WhatsApp".

Сборка и отправка текстового сообщения:

// 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());
}

Отправить мультимедийное сообщение с изображением пользователю WhatsApp

Пакет SDK сообщений позволяет Contoso отправлять сообщения мультимедиа (изображения, видео, аудио или документ) пользователям WhatsApp. Чтобы отправить внедренное сообщение мультимедиа, вам потребуется:

Внимание

Начиная с версии 1.1.0 SDK, MediaNotificationContent объявлен устаревшим для изображений. Мы рекомендуем использовать ImageNotificationContent для отправки изображений. Изучите другие классы, относящиеся к содержимому, для других типов мультимедиа, таких как DocumentNotificationContent, VideoNotificationContentи AudioNotificationContent.

Внимание

Чтобы отправить сообщение изображения пользователю WhatsApp, пользователь WhatsApp должен сначала отправить сообщение в учетную запись WhatsApp для бизнеса. Дополнительные сведения см. в статье "Начало отправки сообщений между бизнесом и пользователем WhatsApp".

Подготовка и отправка сообщения изображения:

// 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());
}

Отправка видеомедийного сообщения пользователю WhatsApp

Пакет SDK сообщений позволяет Contoso отправлять сообщения мультимедиа (изображения, видео, аудио или документ) пользователям WhatsApp. Чтобы отправить внедренное сообщение мультимедиа, вам потребуется:

Внимание

Чтобы отправить видеосообщение пользователю WhatsApp, пользователь WhatsApp должен сначала отправить сообщение в учетную запись WhatsApp Business. Дополнительные сведения см. в статье "Начало отправки сообщений между бизнесом и пользователем WhatsApp".

Сборка и отправка видеосообщения:

// 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());
}

Отправка сообщения аудиомедийного носителя пользователю WhatsApp

Пакет SDK сообщений позволяет Contoso отправлять сообщения мультимедиа (изображения, видео, аудио или документ) пользователям WhatsApp. Чтобы отправить внедренное сообщение мультимедиа, вам потребуется:

Внимание

Чтобы отправить звуковое сообщение пользователю WhatsApp, пользователь WhatsApp должен сначала отправить сообщение в учетную запись WhatsApp business. Дополнительные сведения см. в статье "Начало отправки сообщений между бизнесом и пользователем WhatsApp".

Сборка и отправка звукового сообщения:

// 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());
}

Отправка сообщения мультимедиа документа пользователю WhatsApp

Пакет SDK сообщений позволяет Contoso отправлять сообщения мультимедиа (изображения, видео, аудио или документ) пользователям WhatsApp. Чтобы отправить внедренное сообщение мультимедиа, вам потребуется:

Внимание

Чтобы отправить сообщение документа пользователю WhatsApp, пользователь WhatsApp должен сначала отправить сообщение в учетную запись WhatsApp для бизнеса. Дополнительные сведения см. в статье "Начало отправки сообщений между бизнесом и пользователем WhatsApp".

Соберите и отправьте документное сообщение:

// 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());
}

Выполнение кода

  1. Откройте каталог, содержащий pom.xml файл и скомпилируйте проект с помощью mvn команды.

    mvn compile
    
  2. Запустите приложение, выполнив следующую mvn команду.

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

Полный пример кода

Найдите завершенную версию на GitHub в клиентской библиотеке Azure Messages для Java.

Предварительные требования

Настройка

Создание нового приложения Node.js

  1. Создайте каталог для приложения и откройте его в окне терминала или командной строки.

  2. Выполните следующую команду.

    mkdir advance-messages-quickstart && cd advance-messages-quickstart
    
  3. Выполните следующую команду, чтобы создать package.json файл с параметрами по умолчанию.

    npm init -y
    
  4. Используйте текстовый редактор, чтобы создать файл с именем send-messages.js в корневом каталоге проекта.

  5. Добавьте следующий фрагмент кода в файл 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);
    });
    

Заполните следующий раздел, чтобы добавить исходный код для этого примера в созданный файл send-messages.js.

Установка пакета

Используйте команду npm install, чтобы установить пакет SDK для предварительного обмена сообщениями Azure Communication Services для JavaScript.

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

Параметр --save указывает библиотеку как зависимость в файле пакета package.json.

Примеры кода

Выполните следующие действия, чтобы добавить необходимые фрагменты кода в основную функцию send-messages.js файла.

Начало отправки сообщений между бизнесом и пользователем WhatsApp

Беседы между учетной записью WhatsApp Business и пользователем WhatsApp можно инициировать одним из двух способов:

  • Компания отправляет шаблонное сообщение пользователю WhatsApp.
  • Пользователь WhatsApp отправляет любое сообщение в бизнес-номер.

Независимо от того, как была запущена беседа, бизнес может отправлять только шаблонные сообщения, пока пользователь не отправит сообщение в бизнес. Только после того, как пользователь отправит сообщение в бизнес, бизнес может отправлять текстовые или медиа-сообщения пользователю в ходе активной беседы. После истечения срока действия 24-часового окна беседы необходимо повторно выполнить беседу. Дополнительные сведения о беседах см. в определении в WhatsApp Business Platform.

аутентификация клиента;

Код ниже извлекает строку подключения ресурса из переменной среды с именем COMMUNICATION_SERVICES_CONNECTION_STRING, используя пакет dotenv.

Для простоты в этой статье используется connection string для проверки подлинности. В рабочих средах рекомендуется использовать учетные записи службы.

Получите строку подключения из ресурса Azure Communication Services на портале Azure. На панели слева перейдите на вкладку Keys. Скопируйте поле Connection string для Primary key. Connection string находится в формате endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key}.

Скриншот, показывающий ресурс Azure Communication Services на портале Azure, с полем

Установите переменную среды COMMUNICATION_SERVICES_CONNECTION_STRING в значение вашей строки подключения.
Откройте окно консоли и введите следующую команду:

setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"

Дополнительные сведения о настройке переменной среды для системы см. в статье Сохранение строки подключения в переменной среды.

Чтобы создать экземпляр NotificationClient, добавьте следующий код в метод Main.

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);

Установка идентификатора регистрации канала

GUID идентификатора регистрации канала был создан во время регистрации канала. Его можно найти на портале на вкладке "Каналы" ресурса Azure Communication Services.

Снимок экрана с ресурсом Azure Communication Services на портале Azure, на вкладке

Назначьте его переменной, называемой channelRegistrationId.

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

Настройка списка получателей

Необходимо указать реальный номер телефона с учетной записью WhatsApp, связанной с ней, или идентификатор пользователя в области бизнеса (BSUID). Эта учетная запись WhatsApp получает шаблоны, текстовые и мультимедийные сообщения, упомянутые в этой статье. В этой статье этот номер телефона может быть вашим личным номером телефона.

Номер телефона получателя не может быть бизнес-номером телефона (идентификатор отправителя), связанным с регистрацией канала WhatsApp. Идентификатор отправителя отображается как отправитель текстовых сообщений и сообщений мультимедиа, отправленных получателю.

Номер телефона должен содержать код страны. Дополнительные сведения о форматировании номеров телефонов см. в документации WhatsApp для форматов номеров телефонов.

Примечание.

В настоящее время в списке получателей поддерживается только один номер телефона или BSUID.

Создайте список получателей следующим образом:

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

Пример использования номера телефона:

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

Пример использования BSUID:

// Example only
const recipientList = ["US.13491208655302741918"];

Примечание.

Отправка сообщений в BSUID будет доступна начиная с июня 2026 года. До этого используйте номера телефонов в качестве получателей.

Дополнительные сведения о BSUID см. в разделе WhatsApp usernames and BSUIDs.

Внимание

Чтобы отправить сообщение пользователю WhatsApp, пользователь WhatsApp должен сначала отправить сообщение в учетную запись WhatsApp Business. Дополнительные сведения см. в статье "Начало отправки сообщений между бизнесом и пользователем WhatsApp".

Отправка текстового сообщения пользователю WhatsApp

Пакет SDK для сообщений позволяет Contoso отправлять текстовые сообщения WhatsApp при инициировании пользователями WhatsApp. Для отправки текстовых сообщений:

В этом примере мы отвечаем пользователю WhatsApp с текстом "Thanks for your feedback.\n From Notification Messaging SDK."

Сборка и отправка текстового сообщения:

// 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");
}

Отправить мультимедийное сообщение с изображением пользователю WhatsApp

Пакет SDK сообщений позволяет Contoso отправлять сообщения мультимедиа (изображения, видео, аудио или документ) пользователям WhatsApp. Чтобы отправить внедренное сообщение мультимедиа, вам потребуется:

Внимание

Начиная с версии ПАКЕТА SDK 2.0.0, MediaNotificationContent не рекомендуется использовать для образов. Мы рекомендуем использовать ImageNotificationContent для отправки изображений. Изучите другие классы, относящиеся к содержимому, для других типов мультимедиа, таких как DocumentNotificationContent, VideoNotificationContentи AudioNotificationContent.

Чтобы отправить сообщение изображения, укажите URL-адрес изображения. Например:

const url = "https://example.com/image.jpg";

Соберите и отправьте мультимедийное сообщение:

// 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");
}

Отправка видеомедийного сообщения пользователю WhatsApp

Пакет SDK сообщений позволяет Contoso отправлять сообщения мультимедиа (изображения, видео, аудио или документ) пользователям WhatsApp. Чтобы отправить внедренное сообщение мультимедиа, вам потребуется:

Чтобы отправить видеосообщение, укажите URL-адрес видео. Например,

const url = "https://example.com/video.mp4";

Сборка и отправка видеосообщения:

// 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");
}

Отправка сообщения аудиомедийного носителя пользователю WhatsApp

Пакет SDK сообщений позволяет Contoso отправлять сообщения мультимедиа (изображения, видео, аудио или документ) пользователям WhatsApp. Чтобы отправить внедренное сообщение мультимедиа, вам потребуется:

Чтобы отправить звуковое сообщение, укажите URL-адрес звукового файла. Например:

const url = "https://example.com/audio.mp3";

Сборка и отправка звукового сообщения:

// 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");
}

Отправка сообщения мультимедиа документа пользователю WhatsApp

Пакет SDK сообщений позволяет Contoso отправлять сообщения мультимедиа (изображения, видео, аудио или документ) пользователям WhatsApp. Чтобы отправить внедренное сообщение мультимедиа, вам потребуется:

Чтобы отправить сообщение о документе, укажите URL-адрес документа. Например,

const url = "https://example.com/document.pdf";

Соберите и отправьте документное сообщение:

// 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");
}

Выполнение кода

Используйте команду узла, чтобы запустить код, добавленный в send-messages.js файл.

node ./send-messages.js

Полный пример кода

Найдите окончательный код в примерах использования клиентской библиотеки служб JavaScript на GitHub.

Предварительные требования

Настройка

Создание нового приложения Python

В окне терминала или консоли создайте новую папку для приложения и откройте ее.

mkdir messages-quickstart && cd messages-quickstart

Установка пакета

Используйте библиотеку клиента сообщений Azure для Python 1.1.0 или более поздней версии.

В командной строке консоли выполните следующую команду:

pip install azure-communication-messages

Для InteractiveMessages, Реакции и наклейки используйте следующую бета-версию :

pip install azure-communication-messages==1.2.0b1

Настройка платформы приложения

Создайте новый файл с именем messages-quickstart.py и добавьте базовую структуру программы.

type nul > messages-quickstart.py   

Базовая структура программы

import os

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

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

Объектная модель

Следующие классы и интерфейсы обрабатывают некоторые основные функции пакета SDK для сообщений Azure Communication Services для Python.

Имя класса Описание
NotificationMessagesClient Подключается к ресурсу Azure Communication Services. Он отправляет сообщения.
MessageTemplate Определяет используемый шаблон и содержимое свойств шаблона для сообщения.
TemplateNotificationContent Определяет "кто" и "что" сообщения шаблона, которое вы собираетесь отправить.
TextNotificationContent Определяет "кто" и "что" текстового сообщения, которое вы собираетесь отправить.
ImageNotificationContent Определяет "кто" и "что" сообщения мультимедиа изображения, которое вы собираетесь отправить.
DocumentNotificationContent Определяет "кто" и "что" медиа-сообщения документа, которое вы планируете отправить.
VideoNotificationContent Определяет "кто" и "что" видеомедийного сообщения, которое вы планируете отправить.
AudioNotificationContent Определяет "кто" и "что" сообщения аудиомедиаля, которое вы собираетесь отправить.

Примечание.

Дополнительные сведения см. в справочнике Azure SDK для Python messages Package.

Распространенные конфигурации

Выполните следующие действия, чтобы добавить необходимые фрагменты кода в messages-quickstart.py программу Python.

аутентификация клиента;

Сообщения, отправляемые, используют NotificationMessagesClient. NotificationMessagesClient аутентифицируется с использованием строки подключения, полученной из ресурса Azure Communication Services на портале Azure.

Дополнительные сведения о строках подключения см. раздел access-your-connection-strings-and-service-endpoints.

Получите строку подключения ресурса Azure Communication на портале Azure, как показано на снимке экрана. Слева перейдите на Keys вкладку. Скопируйте Connection string поле для первичного ключа. Connection string находится в формате endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key}.

Скриншот, показывающий ресурс Azure Communication Services на портале Azure в разделе

Установите переменную среды COMMUNICATION_SERVICES_CONNECTION_STRING в значение вашей строки подключения.
Откройте окно консоли и введите следующую команду:

setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"

После добавления переменной среды может потребоваться перезапустить все запущенные программы, которые потребуются для чтения переменной среды, включая окно консоли. Например, если вы используете Visual Studio в качестве редактора, перезапустите Visual Studio перед выполнением примера.

Дополнительные сведения о настройке переменной среды для системы см. в статье Сохранение строки подключения в переменной среды.

    # 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)

Установка идентификатора регистрации канала

Вы создали GUID для регистрации ID канала во время регистрации канала. Найдите его на портале на вкладке Channels ресурса Azure Communication Services.

Снимок экрана с ресурсом Azure Communication Services на портале Azure, на вкладке

Назначьте его переменной, называемой channelRegistrationId.

    channelRegistrationId = os.getenv("WHATSAPP_CHANNEL_ID_GUID")

Настройка списка получателей

Необходимо указать активный номер телефона, связанный с учетной записью WhatsApp, или идентификатор пользователя в области бизнеса (BSUID). Эта учетная запись WhatsApp получает шаблоны, текстовые и мультимедийные сообщения, упомянутые в этой статье.

В этом примере можно использовать личный номер телефона.

Номер телефона получателя не может быть бизнес-номером телефона (идентификатор отправителя), связанным с регистрацией канала WhatsApp. Идентификатор отправителя отображается как отправитель текстовых сообщений и сообщений мультимедиа, отправленных получателю.

Номер телефона должен содержать код страны. Дополнительные сведения о форматировании номеров телефонов см. в документации WhatsApp для форматов номеров телефонов.

Примечание.

В настоящее время в списке получателей поддерживается только один номер телефона или BSUID.

Задайте список получателей следующим образом:

    phone_number = os.getenv("RECIPIENT_WHATSAPP_PHONE_NUMBER")

Пример использования с номером телефона:

    # Example only
    to=[self.phone_number],

Пример использования с BSUID:

    # Example only
    to=["US.13491208655302741918"],

Примечание.

Отправка сообщений в BSUID будет доступна начиная с июня 2026 года. До этого используйте номера телефонов в качестве получателей.

Дополнительные сведения о BSUID см. в разделе WhatsApp usernames and BSUIDs.

Начало отправки сообщений между бизнесом и пользователем WhatsApp

Беседы между учетной записью WhatsApp Business и пользователем WhatsApp можно инициировать одним из двух способов:

  • Компания отправляет шаблонное сообщение пользователю WhatsApp.
  • Пользователь WhatsApp отправляет любое сообщение в бизнес-номер.

Бизнес не может инициировать интерактивную беседу. Бизнес может отправлять интерактивное сообщение только после получения сообщения от пользователя. Бизнес может отправлять интерактивные сообщения пользователю только во время активной беседы. После истечения срока действия окна беседы через 24 часа пользователь может перезапустить интерактивную беседу. Дополнительные сведения о беседах см. в определении в WhatsApp Business Platform.

Чтобы инициировать интерактивную беседу из личной учетной записи WhatsApp, отправьте сообщение в свой бизнес-номер (идентификатор отправителя).

Беседа WhatsApp, просматриваемая в Интернете, показывающая сообщение пользователя, отправленное на номер учетной записи WhatsApp Business.

Примеры кода

Выполните следующие действия, чтобы добавить необходимые фрагменты кода в программу python messages-quickstart.py.

Отправка текстового сообщения пользователю WhatsApp

Пакет SDK для сообщений позволяет Contoso отправлять текстовые сообщения WhatsApp при инициировании пользователем WhatsApp. Для отправки текстовых сообщений:

Внимание

Чтобы отправить текстовое сообщение пользователю WhatsApp, пользователь WhatsApp должен сначала отправить сообщение в учетную запись WhatsApp Business. Дополнительные сведения см. в статье "Начало отправки сообщений между бизнесом и пользователем WhatsApp".

В этом примере мы отвечаем пользователю WhatsApp с текстом "Thanks for your feedback.\n From Notification Messaging SDK."

    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")

Чтобы запустить send_text_message(), обновите основной метод:

    #Calling send_text_message()
    messages.send_text_message()

Отправить мультимедийное сообщение с изображением пользователю WhatsApp

Модуль SDK сообщений позволяет компании Contoso отправлять пользователям WhatsApp изображения через сообщения WhatsApp. Чтобы отправить сообщения с встроенными изображениями, выполните приведенные ниже действия.

Внимание

Чтобы отправить текстовое сообщение пользователю WhatsApp, пользователь WhatsApp должен сначала отправить сообщение в учетную запись WhatsApp Business. Дополнительные сведения см. в статье "Начало отправки сообщений между бизнесом и пользователем WhatsApp".

Пример использования media_uri при отправке мультимедийного сообщения в WhatsApp.

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")

Чтобы запустить send_text_message(), обновите основной метод:

    # Calling send_image_message()
    messages.send_image_message()

Отправка сообщения мультимедиа документа пользователю WhatsApp

Пакет SDK для сообщений позволяет Contoso отправлять документальные сообщения в WhatsApp пользователям WhatsApp. Для отправки встроенных сообщений в документы:

Внимание

Чтобы отправить сообщение документа пользователю WhatsApp, пользователь WhatsApp должен сначала отправить сообщение в учетную запись WhatsApp для бизнеса. Дополнительные сведения см. в статье "Начало отправки сообщений между бизнесом и пользователем WhatsApp".

Пример использования media_uri при отправке мультимедийного сообщения в WhatsApp.

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")

Чтобы запустить send_text_message(), обновите основной метод:

    # Calling send_image_message()
    messages.send_image_message()

Отправка сообщения аудиомедийного носителя пользователю WhatsApp

Модуль SDK сообщений позволяет компании Contoso отправлять пользователям WhatsApp изображения через сообщения WhatsApp. Чтобы отправить внедренные звуковые сообщения, выполните приведенные действия.

Внимание

Чтобы отправить звуковое сообщение пользователю WhatsApp, пользователь WhatsApp должен сначала отправить сообщение в учетную запись WhatsApp business. Дополнительные сведения см. в статье "Начало отправки сообщений между бизнесом и пользователем WhatsApp".

Пример использования media_uri при отправке мультимедийного сообщения в WhatsApp.

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")

Чтобы запустить send_text_message(), обновите основной метод:

    # Calling send_image_message()
    messages.send_image_message()

Отправка видеомедийного сообщения пользователю WhatsApp

Пакет SDK для сообщений позволяет Contoso отправлять видео WhatsApp пользователям WhatsApp. Для отправки сообщений с встроенным видео:

Внимание

Чтобы отправить видеосообщение пользователю WhatsApp, пользователь WhatsApp должен сначала отправить сообщение в учетную запись WhatsApp Business. Дополнительные сведения см. в статье "Начало отправки сообщений между бизнесом и пользователем WhatsApp".

Пример использования media_uri при отправке мультимедийного сообщения в WhatsApp.

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")

Чтобы запустить send_text_message(), обновите основной метод:

    # Calling send_image_message()
    messages.send_image_message()

Выполнение кода

Чтобы запустить код, убедитесь, что находитесь в каталоге, где 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>>

Полный пример кода

Примечание.

Замените все переменные-заполнители в примере кода своими значениями.

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()

Другие примеры

Вы можете просмотреть и скачать другие примеры кодов на GitHub для пакета SDK для сообщений Python.

Следующие шаги