你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用高级消息发送 WhatsApp 反应消息

Azure 通信服务让你能够发送和接收 WhatsApp 消息。 本文介绍如何将应用与 Azure 通信高级消息 SDK 集成,以开始发送和接收 WhatsApp 反应消息。 完成本文需要从你的 Azure 帐户中扣取最多几美分的费用。

先决条件

设置环境

创建 .NET 项目

若要创建项目,请按照使用 Visual Studio 创建 .NET 控制台应用程序的教程进行操作。

若要编译代码,请按 Ctrl+F7

安装包

将 Azure.Communication.Messages NuGet 包安装到你的 C# 项目。

  1. 打开 NuGet 包管理器:Project>Manage NuGet Packages...
  2. 搜索包 Azure.Communication.Messages
  3. 安装最新版本。

设置应用框架

在文本编辑器中打开 Program.cs 文件。

使用以下代码替换 Program.cs 的内容:

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

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

            // Quickstart code goes here
        }
    }
}

若要使用高级消息传递功能,请添加一个 using 指令以包含 Azure.Communication.Messages 命名空间。

using Azure.Communication.Messages;

对象模型

以下类和接口处理适用于 .NET 的 Azure 通信服务高级消息传送 SDK 的某些主要功能。

类名 说明
NotificationMessagesClient 连接到你的 Azure 通信服务资源。 它会发送消息。
ReactionNotificationContent 定义反应消息内容。

注意

有关详细信息,请参阅 Azure SDK for .NET 参考文章 Azure.Communication.Messages 命名空间

通用配置

若要配置应用程序,请完成以下步骤:

对客户端进行身份验证

消息 SDK 使用 NotificationMessagesClient 发送消息。 NotificationMessagesClient 方法使用从 Microsoft Azure 门户中的 Azure 通信服务资源获取的连接字符串进行身份验证。 有关连接字符串的详细信息,请参阅访问连接字符串和服务终结点

为简单起见,本文使用连接字符串进行身份验证。 在生产环境中,我们建议使用服务主体

从 Azure 门户中的 Azure 通信服务资源获取连接字符串。 在左侧,导航到“Keys”选项卡。复制主键的 Connection string 字段。 连接字符串采用 endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key} 格式。

显示 Microsoft 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);

设置频道注册 ID

你已在频道注册期间创建了频道注册 ID GUID。 在门户中 Azure 通信服务资源的“频道”选项卡中可以找到它

显示 Microsoft Azure 门户中的 Azure 通信服务资源的屏幕截图,其中显示了“频道”选项卡。将注意力放在“频道 ID”字段的复制操作上。

将它分配给名为 channelRegistrationId 的变量。

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

设置收件人列表

需要提供与 WhatsApp 帐户关联的有效电话号码。 此 WhatsApp 帐户会接收本快速入门中发送的模版、文本和媒体消息。

对于此示例,可以使用个人电话号码。

收件人电话号码不能是与 WhatsApp 频道注册关联的业务电话号码(发件人 ID)。 发件人 ID 显示为发送给收件人的文本和媒体消息的发件人。

电话号码必须包括国家/地区代码。 有关电话号码格式的详细信息,请查看 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 平台查看定义。

若要从个人 WhatsApp 帐户发起交互式对话,请向企业号码(发送方 ID)发送消息。

Web 上显示的 WhatsApp 对话,其中显示了发送到 WhatsApp Business 账号的用户消息。

代码示例

按照以下步骤将所需的代码片段添加到 Program.cs 文件中的 Main 方法。

向 WhatsApp 用户发送反应消息

Azure 通信服务 SDK 使 Contoso 能够在用户发起对话时向 WhatsApp 用户发送反应消息。 若要发送反应消息,需要:

操作类型 说明
ReactionNotificationContent 定义反应消息内容的类。
Emoji 指定表情符号回应(例如 😄)。
MessageId 正在答复的消息的 ID。

在此示例中,企业向 WhatsApp 用户发送反应消息:

组合反应内容:

var reactionNotificationContent = new ReactionNotificationContent(channelRegistrationId, recipientList, "\uD83D\uDE00", "<ReplyMessageIdGuid>");

发送反应消息:

var reactionResponse = await notificationMessagesClient.SendAsync(reactionNotificationContent);

运行代码

  1. 若要编译代码,请按 Ctrl+F7
  2. 要运行程序而不进行调试,请按 Ctrl+F5

完整示例代码

注意

将代码中的所有占位符变量替换为你的值。

using Azure;
using Azure.Communication.Messages;

namespace AdvancedMessagingQuickstart
{
    class Program
    {
        public static async Task Main(string[] args)
        {
            Console.WriteLine("Azure Communication Services - Send WhatsApp Reaction 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 a reaction message
            var emojiReaction = "\uD83D\uDE00"; // 😄 emoji
            var replyMessageId = "<ReplyMessageIdGuid>"; // Message ID of the original message
            var reactionNotificationContent = new ReactionNotificationContent(channelRegistrationId, recipientList, emojiReaction, replyMessageId);
            var reactionResponse = await notificationMessagesClient.SendAsync(reactionNotificationContent);

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

先决条件

设置环境

若要设置用于发送消息的环境,请完成以下部分中所述的步骤。

创建新的 Java 应用程序

打开终端或命令窗口,并导航到要在其中创建 Java 应用程序的目录。 运行以下命令,从 maven-archetype-quickstart 模板生成 Java 项目。

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 文件pom.xml。 将以下依赖项元素添加到依赖项组。

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

设置应用框架

在文本编辑器中打开 /src/main/java/com/communication/quickstart/App.java,添加 import 指令并删除 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.
    }
}

对象模型

以下类和接口用于处理适用于 Java 的 Azure 通信服务消息 SDK 的某些主要功能。

类名 说明
NotificationMessagesClient 连接到你的 Azure 通信服务资源。 它会发送消息。
ReactionNotificationContent 使用表情符号和回复消息 ID 来定义消息的反应内容。

注意

有关详细信息,请参阅 com.azure.communication.messages 包中的 Azure SDK for Java 参考内容。

通用配置

按照以下步骤将所需的代码片段添加到 App.java 文件的 main 函数中。

开始在企业和 WhatsApp 用户之间发送消息

可通过下面两种方式之一发起 WhatsApp Business 帐户与 WhatsApp 用户之间的对话:

  • 企业向 WhatsApp 用户发送模板消息。
  • WhatsApp 用户向企业号码发送任何消息。

无论对话是如何启动的,在用户向企业发送消息之前,企业只能发送模板消息。只有在用户向企业发送消息后,企业才能在活动对话期间向用户发送文本或媒体消息。 24 小时对话窗口到期后,必须重新发起对话。 若要了解有关对话的详细信息,请访问 WhatsApp Business 平台查看定义。

对客户端进行身份验证

可使用几个不同的选项对消息客户端进行身份验证:

若要对客户端进行身份验证,请使用连接字符串实例化 NotificationMessagesClientMessageTemplateClient。 还可以使用任何实现 com.azure.core.http.HttpClient 接口的自定义 HTTP 客户端来初始化此客户端。

为简单起见,本文使用连接字符串进行身份验证。 在生产环境中,我们建议使用服务主体

从 Azure 门户中的 Azure 通信服务资源获取连接字符串。 在左侧,导航到“Keys”选项卡。复制 Connection stringPrimary key 字段。 连接字符串采用 endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key} 格式。

显示 Microsoft 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();

设置频道注册 ID

频道注册 ID GUID 是在频道注册期间创建的。 可在门户中,访问 Azure 通信服务资源的“频道”选项卡来查找它。

显示 Microsoft Azure 门户中的 Azure 通信服务资源的屏幕截图,其中显示了“频道”选项卡。将注意力放在“频道 ID”字段的复制操作上。

将它分配给名为 channelRegistrationId 的变量。

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

设置收件人列表

你需要提供一个与 WhatsApp 帐户关联的真实电话号码。 此 WhatsApp 帐户接收本文中发送的文本和媒体消息。 在本文中,此电话号码可以是你的个人电话号码。

收件人电话号码不能是与 WhatsApp 频道注册关联的业务电话号码(发件人 ID)。 发件人 ID 显示为发送给收件人的文本和媒体消息的发件人。

电话号码应包括国家/地区代码。 有关电话号码格式的详细信息,请查看 WhatsApp 文档中的电话号码格式

注意

收件人列表中当前仅支持一个电话号码。

创建如下所示的收件人列表:

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

示例:

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

代码示例

按照以下步骤将所需的代码片段添加到 App.java 文件的 main 函数中。

将反应消息发送到 WhatsApp 用户消息

Messages SDK 使 Contoso 能够在 WhatsApp 用户发起对话时发送 WhatsApp 反应消息。 若要发送文本消息,需要以下条件:

重要

若要向用户消息发送反应,该 WhatsApp 用户必须首先向 WhatsApp 企业帐户发送消息。 有关详细信息,请参阅开始在企业和 WhatsApp 用户之间发送消息

组合反应并将其发送到消息:

// Assemble reaction to a message
String emoji = "\uD83D\uDE00";
ReactionNotificationContent reaction = new ReactionNotificationContent("<CHANNEL_ID>", recipients, emoji, "<REPLY_MESSAGE_ID>");

// Send reaction to a message
SendMessageResult textMessageResult = notificationClient.send(reaction);

// Process result
for (MessageReceipt messageReceipt : textMessageResult.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"
    

完整示例代码

Java 消息 SDK 的 GitHub 上查找此示例的最终代码。

先决条件

设置

创建新的 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 命令安装适用于 JavaScript 的 Azure 通信服务高级消息传送 SDK。

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

--save 选项将该库作为 package.json 文件中的依赖项列出。

对象模型

以下类和接口用于处理适用于 JavaScript 的 Azure 通信服务消息 SDK 的某些主要功能。

类名 说明
NotificationMessagesClient 连接到你的 Azure 通信服务资源。 它会发送消息。
ReactionNotificationContent 定义反应消息内容。

注意

有关详细信息,请参阅适用于 JavaScript 的 Azure SDK 参考文章 @Azure-rest/communication-messages 包

通用配置

按照以下步骤将所需的代码片段添加到 send-messages.js 文件。

开始在企业和 WhatsApp 用户之间发送消息

可通过下面两种方式之一发起 WhatsApp Business 帐户与 WhatsApp 用户之间的对话:

  • 企业向 WhatsApp 用户发送模板消息。
  • WhatsApp 用户向企业号码发送任何消息。

无论对话是如何启动的,在用户向企业发送消息之前,企业只能发送模板消息。只有在用户向企业发送消息后,企业才能在活动对话期间向用户发送文本或媒体消息。 24 小时对话窗口到期后,必须重新发起对话。 若要了解有关对话的详细信息,请访问 WhatsApp Business 平台查看定义。

对客户端进行身份验证

以下代码使用 dotenv 包从名为 COMMUNICATION_SERVICES_CONNECTION_STRING 的环境变量中检索资源的连接字符串。

为简单起见,本文使用连接字符串进行身份验证。 在生产环境中,我们建议使用服务主体

从 Azure 门户中的 Azure 通信服务资源获取连接字符串。 在左侧,导航到“Keys”选项卡。复制 Connection stringPrimary key 字段。 连接字符串采用 endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key} 格式。

显示 Microsoft 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);

设置频道注册 ID

频道注册 ID GUID 是在频道注册期间创建的。 可在门户中,访问 Azure 通信服务资源的“频道”选项卡来查找它。

显示 Microsoft Azure 门户中的 Azure 通信服务资源的屏幕截图,其中显示了“频道”选项卡。将注意力放在“频道 ID”字段的复制操作上。

将它分配给名为 channelRegistrationId 的变量。

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

设置收件人列表

你需要提供一个与 WhatsApp 帐户关联的真实电话号码。 此 WhatsApp 帐户接收本文中发送的模板、文本和媒体消息。 在本文中,此电话号码可以是你的个人电话号码。

收件人电话号码不能是与 WhatsApp 频道注册关联的业务电话号码(发件人 ID)。 发件人 ID 显示为发送给收件人的文本和媒体消息的发件人。

电话号码应包括国家/地区代码。 有关电话号码格式的详细信息,请查看 WhatsApp 文档中的电话号码格式

注意

收件人列表中当前仅支持一个电话号码。

创建如下所示的收件人列表:

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

示例:

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

代码示例

按照以下步骤将所需的代码片段添加到 send-messages.js 文件。

开始在企业和 WhatsApp 用户之间发送消息

可通过下面两种方式之一发起 WhatsApp Business 帐户与 WhatsApp 用户之间的对话:

  • 企业向 WhatsApp 用户发送模板消息。
  • WhatsApp 用户向企业号码发送任何消息。

无论对话是如何启动的,在用户向企业发送消息之前,企业只能发送模板消息。只有在用户向企业发送消息后,企业才能在活动对话期间向用户发送文本或媒体消息。 24 小时对话窗口到期后,必须重新发起对话。 若要了解有关对话的详细信息,请访问 WhatsApp Business 平台查看定义。

对客户端进行身份验证

以下代码使用 dotenv 包从名为 COMMUNICATION_SERVICES_CONNECTION_STRING 的环境变量中检索资源的连接字符串。

为简单起见,本文使用连接字符串进行身份验证。 在生产环境中,我们建议使用服务主体

从 Azure 门户中的 Azure 通信服务资源获取连接字符串。 在左侧,导航到“Keys”选项卡。复制 Connection stringPrimary key 字段。 连接字符串采用 endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key} 格式。

显示 Microsoft 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);

设置频道注册 ID

频道注册 ID GUID 是在频道注册期间创建的。 可在门户中,访问 Azure 通信服务资源的“频道”选项卡来查找它。

显示 Microsoft Azure 门户中的 Azure 通信服务资源的屏幕截图,其中显示了“频道”选项卡。将注意力放在“频道 ID”字段的复制操作上。

将它分配给名为 channelRegistrationId 的变量。

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

设置收件人列表

你需要提供一个与 WhatsApp 帐户关联的真实电话号码。 此 WhatsApp 帐户接收本文中发送的模板、文本和媒体消息。 在本文中,此电话号码可以是你的个人电话号码。

收件人电话号码不能是与 WhatsApp 频道注册关联的业务电话号码(发件人 ID)。 发件人 ID 显示为发送给收件人的文本和媒体消息的发件人。

电话号码应包括国家/地区代码。 有关电话号码格式的详细信息,请查看 WhatsApp 文档中的电话号码格式

注意

收件人列表中当前仅支持一个电话号码。

创建如下所示的收件人列表:

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

示例:

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

将表情符号消息发送到 WhatsApp 用户消息

Messages SDK 使 Contoso 能够在 WhatsApp 用户发起对话时发送 WhatsApp 反应消息。 若要发送文本消息,需要以下条件:

重要

若要向用户消息发送反应,该 WhatsApp 用户必须首先向 WhatsApp 企业帐户发送消息。 有关详细信息,请参阅开始在企业和 WhatsApp 用户之间发送消息

在此示例中,企业向用户消息发送反应:

/**
 * @summary Send a reaction message
 */

const { AzureKeyCredential } = require("@azure/core-auth");
const NotificationClient = require("@azure-rest/communication-messages").default,
  { isUnexpected } = require("@azure-rest/communication-messages");
// Load the .env file if it exists
require("dotenv").config();

async function main() {
  const credential = new AzureKeyCredential(process.env.ACS_ACCESS_KEY || "");
  const endpoint = process.env.ACS_URL || "";
  const client = NotificationClient(endpoint, credential);
  console.log("Sending message...");
  const result = await client.path("/messages/notifications:send").post({
    contentType: "application/json",
    body: {
      channelRegistrationId: process.env.CHANNEL_ID || "",
      to: [process.env.RECIPIENT_PHONE_NUMBER || ""],
      kind: "reaction",
      emoji: "😍",
      messageId: "<incoming_message_id>",
    },
  });

  console.log("Response: " + JSON.stringify(result, null, 2));

  if (isUnexpected(result)) {
    throw new Error("Failed to send message");
  }

  const response = result;
  response.body.receipts.forEach((receipt) => {
    console.log("Message sent to:" + receipt.to + " with message id:" + receipt.messageId);
  });
}

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

运行代码

使用 node 命令运行添加到 send-messages.js 文件中的代码。

node ./send-messages.js

完整示例代码

JavaScript 消息 SDK 的 GitHub 上查找此示例的最终代码。

先决条件

设置环境

创建新的 Python 应用程序

在终端或控制台窗口中,为应用程序创建一个新文件夹并打开它。

mkdir messages-quickstart && cd messages-quickstart

安装包

使用适用于 Python 1.1.0 或更高版本的 Azure 通信消息客户端库。

在控制台提示中运行以下命令:

pip install azure-communication-messages

对于“交互式消息、反应和贴纸”,请使用以下 Beta 版本

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

对象模型

以下类和接口用于处理适用于 Python 的 Azure 通信服务消息 SDK 的某些主要功能。

类名 说明
NotificationMessagesClient 连接到你的 Azure 通信服务资源。 它会发送消息。
ReactionNotificationContent 使用表情符号和回复消息 ID 来定义消息的反应内容。

注意

有关详细信息,请参阅 Azure SDK for Python 参考文章消息包

通用配置

按照以下步骤将所需的代码片段添加到 messages-quickstart.py Python 程序。

对客户端进行身份验证

发送的消息使用 NotificationMessagesClient。 NotificationMessagesClient 使用从 Azure 门户中的 Azure 通信服务资源获取的连接字符串进行身份验证。F

有关连接字符串的详细信息,请参阅访问连接字符串和服务终结点

从 Microsoft Azure 门户获取 Azure 通信资源连接字符串,如屏幕截图中所示。 在左侧,导航到“Keys”选项卡。复制主键的 Connection string 字段。 连接字符串采用 endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key} 格式。

显示 Microsoft 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)

设置频道注册 ID

你已在频道注册期间创建了频道注册 ID GUID。 在门户中 Azure 通信服务资源的“频道”选项卡中可以找到它

显示 Microsoft Azure 门户中的 Azure 通信服务资源的屏幕截图,其中显示了“频道”选项卡。将注意力放在“频道 ID”字段的复制操作上。

将它分配给名为 channelRegistrationId 的变量。

    channelRegistrationId = os.getenv("WHATSAPP_CHANNEL_ID_GUID")

设置收件人列表

需要提供与 WhatsApp 帐户关联的有效电话号码。 此 WhatsApp 帐户接收本文中发送的模板、文本和媒体消息。

对于此示例,可以使用个人电话号码。

收件人电话号码不能是与 WhatsApp 频道注册关联的业务电话号码(发件人 ID)。 发件人 ID 显示为发送给收件人的文本和媒体消息的发件人。

电话号码必须包括国家/地区代码。 有关电话号码格式的详细信息,请查看 WhatsApp 文档中的电话号码格式

注意

收件人列表中当前仅支持一个电话号码。

设置如下所示的收件人列表:

    phone_number = os.getenv("RECIPIENT_WHATSAPP_PHONE_NUMBER")

用例:

    # Example only
    to=[self.phone_number],

开始在企业和 WhatsApp 用户之间发送消息

可通过下面两种方式之一发起 WhatsApp Business 帐户与 WhatsApp 用户之间的对话:

  • 企业向 WhatsApp 用户发送模板消息。
  • WhatsApp 用户向企业号码发送任何消息。

企业无法发起交互式对话。 企业只能在收到用户的消息后发送交互式消息。 企业只能在活动对话过程中向用户发送交互式消息。 一旦 24 小时的对话窗口结束,就只有用户才能重新开始交互式对话。 有关对话的详细信息,请访问 WhatsApp Business 平台查看定义。

若要从个人 WhatsApp 帐户发起交互式对话,请向企业号码(发送方 ID)发送消息。

Web 上显示的 WhatsApp 对话,其中显示了发送到 WhatsApp Business 账号的用户消息。

代码示例

按照以下步骤将所需的代码片段添加到 messages-quickstart.py Python 程序。

将表情符号消息发送到 WhatsApp 用户消息

Messages SDK 使 Contoso 能够在 WhatsApp 用户发起对话时发送 WhatsApp 反应消息。 若要发送文本消息,需要以下条件:

  • WhatsApp 频道 ID

  • E16 格式的接收方电话号码

  • 可以使用给定属性创建心情内容:

    操作类型 说明
    ReactionNotificationContent 此类定义组内容的标题和组的数组。
    表情 此属性定义表情符号字符的 Unicode。
    回复消息 ID 此属性定义要用表情符号答复的消息的 ID。

重要

若要向 WhatsApp 用户发送文本消息,WhatsApp 用户必须先向 WhatsApp 企业帐户发送消息。 有关详细信息,请参阅开始在企业和 WhatsApp 用户之间发送消息

在此示例中,企业向用户消息发送反应:

    def send_reaction_message(self):

        from azure.communication.messages import NotificationMessagesClient
        from azure.communication.messages.models import ReactionNotificationContent

        messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)

        video_options = ReactionNotificationContent(
            channel_registration_id=self.channel_id,
            to=[self.phone_number],
            emoji="\uD83D\uDE00",
            message_id="<<ReplyMessageIdGuid>>",
        )

        # calling send() with whatsapp message details
        message_responses = messaging_client.send(video_options)
        response = message_responses.receipts[0]
        print("Message with message ID {} was successful sent to {}".format(response.message_id, response.to))

若要运行 send_reaction_message(),请更新 main 方法

    #Calling send_reaction_message()
    messages.send_reaction_message()

显示企业发送给用户的 WhatsApp 行动号召交互式消息的屏幕截图。

运行代码

若要运行代码,请确保你位于 reaction-messages-quickstart.py 文件所在的目录中。

python reaction-messages-quickstart.py
Azure Communication Services - Advanced Messages Quickstart
WhatsApp Reaction 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_reaction_message(self):

        from azure.communication.messages import NotificationMessagesClient
        from azure.communication.messages.models import ReactionNotificationContent

        messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)

        video_options = ReactionNotificationContent(
            channel_registration_id=self.channel_id,
            to=[self.phone_number],
            emoji="\uD83D\uDE00",
            message_id="<<ReplyMessageIdGuid>>",
        )

        # calling send() with whatsapp message details
        message_responses = messaging_client.send(video_options)
        response = message_responses.receipts[0]
        print("WhatsApp Reaction Message with message ID {} was successful sent to {}".format(response.message_id, response.to))

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

其他示例

可以在 Python 消息 SDK 上的 GitHub 上查看和下载其他示例代码。

后续步骤

有关详细信息,请参阅: