Поделиться через


Отправка текстовых и мультимедийных сообщений 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 - Advanced Messages quickstart samples.");

            // Quickstart code goes here
        }
    }
}

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

using Azure.Communication.Messages;

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

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

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

Примечание.

Дополнительные сведения см. в справочнике по azure SDK для .NET для пространства имен Azure.Communication.Messages.

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

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

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

Пакет SDK сообщений используется для отправки 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 перед запуском примера.

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

Чтобы создать экземпляр, 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.

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

Внимание

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

Отправка сообщения мультимедиа документа пользователю 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 строка подключения. Вы также можете инициализировать клиент с помощью любого пользовательского 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

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

Внимание

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

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

  • Учетная запись WhatsApp Business, зарегистрированная в ресурсе Службы коммуникации Azure.
  • Активный номер телефона WhatsApp для получения сообщений.
  • Node.js версии LTS и обслуживания LTS (рекомендуется 8.11.1 и 10.14.1).
  • рекомендуется Node.js использовать версии LTS и обслуживания active LTS (8.11.1 и 10.14.1)
    • В окне терминала или командной строки выполните проверку node --version установки Node.js

Установка

Создание нового приложения 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 для 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.

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

Получите строка подключения из ресурса Службы коммуникации 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>"

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

Чтобы создать экземпляр 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.

Снимок экрана, на котором показан ресурс Службы коммуникации 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 должен сначала отправить сообщение в учетную запись 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

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

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

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

Установка

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

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

mkdir messages-quickstart && cd messages-quickstart

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

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

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

pip install azure-communication-messages

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

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 для Python.

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

Примечание.

Дополнительные сведения см. в пакете справочных сообщений Azure SDK для Python.

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

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

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

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

Дополнительные сведения о строка подключения см. в разделе 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.

Чтобы инициировать интерактивную беседу из личной учетной записи 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.

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