Бөлісу құралы:


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

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

Необходимые компоненты

Установка

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

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

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

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

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

  1. Откройте диспетчер пакетов Project>Manage NuGet Packages...NuGet.
  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 - Send WhatsApp Messages");

            // Quickstart code goes here
        }
    }
}

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

using Azure.Communication.Messages;

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

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

Имя Описание
NotificationMessagesClient Этот класс подключается к ресурсу Службы коммуникации Azure. Он отправляет сообщения.
MessageTemplate Этот класс определяет используемый шаблон и содержимое свойств шаблона для сообщения.
TemplateNotificationContent Этот класс определяет "кто" и "что" сообщения шаблона, которое вы собираетесь отправить.
TextNotificationContent Этот класс определяет "кто" и "что" текстового сообщения, которое вы собираетесь отправить.
MediaNotificationContent Этот класс определяет "кто" и "что" сообщения мультимедиа, которое вы собираетесь отправить.

Примеры кода

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

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

Используется NotificationMessagesClient для подключения к ресурсу Службы коммуникации Azure.

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

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

Снимок экрана: ресурс Службы коммуникации Azure в портал 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 идентификатора регистрации канала был создан во время регистрации канала. Его можно найти на портале на вкладке "Каналы" ресурса Службы коммуникации Azure.

Снимок экрана, на котором показан ресурс Службы коммуникации Azure в портал Azure, просмотр вкладки

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

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

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

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

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

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

Примечание.

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

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

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

Пример:

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

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

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

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

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

(Вариант 1) Запуск беседы из бизнеса — отправка сообщения шаблона

Инициируйте беседу, отправив сообщение шаблона.

Сначала создайте MessageTemplate с помощью значений для шаблона.

Примечание.

Чтобы проверить доступные шаблоны, см. инструкции по шаблонам списка. Если у вас нет шаблона, перейдите к варианту 2.

Ниже приведено создание MessageTemplate с помощью шаблона sample_templateпо умолчанию.
Если sample_template у вас нет доступа, перейдите к варианту 2. Дополнительные пользователи см. в шаблонах страниц, чтобы понять, как отправить другой шаблон с вариантом 1.

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

// Assemble the template content
string templateName = "sample_template";
string templateLanguage = "en_us";
var messageTemplate = new MessageTemplate(templateName, templateLanguage);

Дополнительные примеры сборки MessageTemplate и создания собственного шаблона см. в следующем ресурсе:

Дополнительные требования WhatsApp к шаблонам см. в справочнике по API WhatsApp Business Platform:

Затем собрать сообщение шаблона:

// Assemble template message
var templateContent = 
    new TemplateNotificationContent(channelRegistrationId, recipientList, messageTemplate);

// Send template message
Response<SendMessageResult> sendTemplateMessageResult = 
    await notificationMessagesClient.SendAsync(templateContent);

Теперь пользователю необходимо ответить на сообщение шаблона. В учетной записи пользователя WhatsApp ответите на сообщение шаблона, полученное из учетной записи WhatsApp Business. Содержимое сообщения не имеет значения для этого сценария.

Внимание

Получатель должен ответить на сообщение шаблона, чтобы инициировать беседу, прежде чем можно будет передать текстовое или медиа-сообщение получателю.

(Вариант 2) Запуск беседы от пользователя

Другой способ инициировать беседу между учетной записью WhatsApp Business и пользователем WhatsApp — это инициировать беседу. Для этого из личной учетной записи WhatsApp отправьте сообщение в свой бизнес-номер (идентификатор отправителя).

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

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

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

Внимание

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

В этом примере мы отвечаем пользователю WhatsApp с текстом "Спасибо за отзыв.\n Из пакета 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. Чтобы отправить внедренное сообщение мультимедиа, вам потребуется:

Внимание

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

Внимание

По состоянию на пакет SDK версии 1.1.0 не 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);

Отправка документа

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

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

Отправка видеоконтента

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

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

Отправка звукового содержимого

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

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>
    <version>1.0.0</version>
</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.
    }
}

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

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

Имя Описание
NotificationMessagesClientBuilder Этот класс создает клиент уведомлений. Вы предоставляете конечную точку и учетные данные.
NotificationMessagesClient Этот класс необходим для отправки сообщений WhatsApp и скачивания файлов мультимедиа.
NotificationMessagesAsyncClient Этот класс необходим для отправки сообщений WhatsApp и асинхронного скачивания файлов мультимедиа.
SendMessageResult Этот класс содержит результат службы предварительного обмена сообщениями для отправки сообщения.
MessageTemplateClientBuilder Этот класс создает клиент шаблона сообщения. Вы предоставляете конечную точку и учетные данные.
MessageTemplateClient Этот класс необходим для получения списка шаблонов WhatsApp.
MessageTemplateAsyncClient Этот класс необходим для асинхронного получения списка шаблонов WhatsApp.

Примеры кода

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

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

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

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

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

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

Снимок экрана: ресурс Службы коммуникации Azure в портал 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.

Снимок экрана, на котором показан ресурс Службы коммуникации Azure в портал Azure, просмотр вкладки

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

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

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

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

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

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

Примечание.

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

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

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

Пример:

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

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

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

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

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

(Вариант 1) Запуск беседы из бизнеса — отправка сообщения шаблона

Инициируйте беседу, отправив сообщение шаблона.

Сначала создайте MessageTemplate с помощью значений для шаблона.

Примечание.

Чтобы проверить доступные шаблоны, см. инструкции по шаблонам списка. Если у вас нет шаблона, перейдите к варианту 2.

Ниже приведено создание MessageTemplate с помощью шаблона sample_templateпо умолчанию.
Если sample_template у вас нет доступа, перейдите к варианту 2. Дополнительные пользователи см. в шаблонах страниц, чтобы понять, как отправить другой шаблон с вариантом 1.

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

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

Теперь пользователю необходимо ответить на сообщение шаблона. В учетной записи пользователя WhatsApp ответите на сообщение шаблона, полученное из учетной записи WhatsApp Business. Содержимое сообщения не имеет значения для этого сценария.

Внимание

Получатель должен ответить на сообщение шаблона, чтобы инициировать беседу, прежде чем можно будет передать текстовое или медиа-сообщение получателю.

(Вариант 2) Запуск беседы от пользователя

Другой способ инициировать беседу между учетной записью WhatsApp Business и пользователем WhatsApp — это инициировать беседу. Для этого из личной учетной записи WhatsApp отправьте сообщение в свой бизнес-номер (идентификатор отправителя).

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

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

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

Внимание

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

В этом примере мы отвечаем пользователю WhatsApp с текстом "Спасибо за отзыв.\n Из пакета SDK для обмена сообщениями уведомлений".

Затем соберите текстовое сообщение:

// 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. Чтобы отправить внедренное сообщение мультимедиа, вам потребуется:

Внимание

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

Внимание

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

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

Затем выполните сборку, чтобы отправить сообщение изображения:

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

Отправка видеообращения

Затем соберите видеосообщение:

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

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

Затем соберите звуковое сообщение:

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

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

Затем соберите сообщение документа:

// 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.

Необходимые компоненты

Установка

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

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

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

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

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

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

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

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

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

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

Имя Описание
MessageClient Этот класс подключается к ресурсу Службы коммуникации Azure. Он отправляет сообщения.
MessageTemplate Этот класс определяет используемый шаблон и содержимое свойств шаблона для сообщения.

Примеры кода

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

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

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

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

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

Снимок экрана: ресурс Службы коммуникации Azure в портал Azure, просмотр поля

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

setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"

Дополнительные сведения о том, как задать переменную среды для системы, выполните действия, описанные в разделе "Хранение строка подключения в переменной среды".

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

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

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

Снимок экрана, на котором показан ресурс Службы коммуникации Azure в портал Azure, просмотр вкладки

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

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

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

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

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

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

Примечание.

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

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

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

Пример:

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

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

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

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

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

(Вариант 1) Запуск беседы из бизнеса — отправка сообщения шаблона

Инициируйте беседу, отправив сообщение шаблона.

Сначала создайте MessageTemplate с помощью значений для шаблона.

Примечание.

Чтобы проверить доступные шаблоны, см. инструкции по шаблонам списка. Если у вас нет шаблона, перейдите к варианту 2.

Ниже приведено создание MessageTemplate с помощью шаблона sample_templateпо умолчанию.
Если sample_template у вас нет доступа, перейдите к варианту 2. Дополнительные пользователи см. в шаблонах страниц, чтобы понять, как отправить другой шаблон с вариантом 1.

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

// Assemble the template content
const template = {
    name: "sample_template",
    language: "en_US"
};

Дополнительные примеры сборки MessageTemplate и создания собственного шаблона см. в следующем ресурсе:

Дополнительные требования WhatsApp к шаблонам см. в справочнике по API WhatsApp Business Platform:

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

Теперь пользователю необходимо ответить на сообщение шаблона. В учетной записи пользователя WhatsApp ответите на сообщение шаблона, полученное из учетной записи WhatsApp Business. Содержимое сообщения не имеет значения для этого сценария.

Внимание

Получатель должен ответить на сообщение шаблона, чтобы инициировать беседу, прежде чем можно будет передать текстовое или медиа-сообщение получателю.

(Вариант 2) Запуск беседы от пользователя

Другой способ инициировать беседу между учетной записью WhatsApp Business и пользователем WhatsApp — это инициировать беседу. Для этого из личной учетной записи WhatsApp отправьте сообщение в свой бизнес-номер (идентификатор отправителя).

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

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

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

Внимание

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

В этом примере мы отвечаем пользователю WhatsApp с текстом "Спасибо за отзыв.\n Из пакета 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. Чтобы отправить внедренное сообщение мультимедиа, вам потребуется:

Внимание

Чтобы отправить сообщение мультимедиа пользователю WhatsApp, пользователь WhatsApp должен сначала отправить сообщение в учетную запись WhatsApp business. Дополнительные сведения см. в статье "Начало отправки сообщений между бизнесом и пользователем 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");
}

Отправка видеоконтента

Чтобы отправить видеосообщение, укажите 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");
}

Отправка звукового содержимого

Чтобы отправить звуковое сообщение, укажите 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");
}

Отправка содержимого документа

Чтобы отправить сообщение о документе, укажите 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

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

Пример приложения можно загрузить в репозитории GitHub.

Необходимые компоненты

Установка

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

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

mkdir messages-quickstart && cd messages-quickstart

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

Необходимо использовать клиентская библиотека сообщений коммуникации Azure для Python версии 1.0.0 или более поздней.

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

pip install azure-communication-messages

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

Создайте новый файл с именем 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 для Python.

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

Примеры кода

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

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

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

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

Снимок экрана: ресурс Службы коммуникации Azure в портал 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 идентификатора регистрации канала был создан во время регистрации канала. Его можно найти на портале на вкладке "Каналы" ресурса Службы коммуникации Azure.

Снимок экрана, на котором показан ресурс Службы коммуникации Azure в портал Azure, просмотр вкладки

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

    channelRegistrationId = os.getenv("WHATSAPP_CHANNEL_ID_GUID")

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

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

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

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

Примечание.

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

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

    phone_number = os.getenv("RECIPIENT_WHATSAPP_PHONE_NUMBER")

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

    # Example only
    to=[self.phone_number],

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

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

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

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

(Вариант 1) Запуск беседы из бизнеса — отправка сообщения шаблона

Инициируйте беседу, отправив сообщение шаблона.

Сначала создайте MessageTemplate с помощью значений для шаблона.

Примечание.

Чтобы проверить доступные шаблоны, см. инструкции по шаблонам списка. Если у вас нет шаблона, перейдите к варианту 2.

Ниже приведено создание MessageTemplate с помощью шаблона sample_templateпо умолчанию.
Если sample_template у вас нет доступа, перейдите к варианту 2. Дополнительные пользователи см. в шаблонах страниц, чтобы понять, как отправить другой шаблон с вариантом 1.

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

Дополнительные примеры сборки MessageTemplate и создания собственного шаблона см. в следующем ресурсе:

Дополнительные требования WhatsApp к шаблонам см. в справочнике по API WhatsApp Business Platform:

Чтобы отправить сообщение шаблона WhatsApp, добавьте указанный код в функцию 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")

Добавьте вызов send_template_message() к основному методу.

    # Calling send_template_message()
    messages.send_template_message()

Теперь пользователю необходимо ответить на сообщение шаблона. В учетной записи пользователя WhatsApp ответите на сообщение шаблона, полученное из учетной записи WhatsApp Business. Содержимое сообщения не имеет значения для этого сценария.

Внимание

Получатель должен ответить на сообщение шаблона, чтобы инициировать беседу, прежде чем можно будет передать текстовое или медиа-сообщение получателю.

(Вариант 2) Запуск беседы от пользователя

Другой способ инициировать беседу между учетной записью WhatsApp Business и пользователем WhatsApp — это инициировать беседу. Для этого из личной учетной записи WhatsApp отправьте сообщение в свой бизнес-номер (идентификатор отправителя).

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

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

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

Внимание

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

В этом примере мы ответим пользователю WhatsApp с текстом "Спасибо за отзыв.\n Из пакета 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 отправлять сообщения Image 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 отправлять сообщения Image 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 отправлять сообщения Image 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 отправлять сообщения Image 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()

Примечание.

Обновите все переменные заполнителя в приведенном выше коде.

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

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

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

В этом кратком руководстве описано, как использовать пакет SDK Advanced Messaging для WhatsApp. Далее может потребоваться просмотреть следующие статьи: