你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Important
Azure 通信服务的这一功能目前以预览版提供。 预览版中的功能已公开发布,可供所有新客户和现有Microsoft客户使用。
预览版 API 和 SDK 在没有服务级别协议的情况下提供。 建议不要将它们用于生产工作负荷。 某些功能可能不受支持,或者功能可能受到限制。
有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
Introduction
欢迎使用消息传送连接,这是使用 Azure 通信服务全局传递短消息服务(SMS)的新方法。 它集成了受信任的合作伙伴,以便可以租用号码并满足本地法规要求,同时继续使用熟悉的 Azure 通信服务:单个 API 终结点、强可观测性和跨Microsoft服务的深度集成。 无论你是发送约会提醒、预订确认还是智能 Copilot 提示,Messaging Connect 都可以帮助你以较少的复杂性全局访问用户。
无需与多个提供商建立和维护单独的集成,而是通过 Azure 通信服务连接一次,并将流量路由到全球合作伙伴。 合作伙伴处理号码租赁和合规处理。 消息传递、可观测性和 AI 工作流保持在 Azure 环境中,在这个环境中,你已进行构建、监视和扩展。
价值一目了然:
全球覆盖 190 多个国家/地区
通过合作伙伴实现本地合规性和更快的预配
易于使用的 Azure 通信服务 API/SDK、诊断和事件网格可观测性
职责分离:Microsoft提供开发人员平台;合作伙伴交付和预配号码
概念性概述
全球短信本质上很复杂:法规因国家/地区而异,发送方类型有所不同,传递路由碎片化。 Messaging Connect 集成了预先批准的合作伙伴,因此无需离开 Azure 通信服务开发人员体验即可获取合规的发件人标识和路由流量。
预配流(高级):
在 Azure 门户中,转到“消息连接”面板
选择你的 Messaging Connect 合作伙伴。
你将被重定向到合作伙伴的门户,购买/配置支持短信的电话号码,完成任何所需的注册,并等待审批。
合作伙伴将批准的号码同步回 Azure 通信服务资源。
该号码显示在 Azure 门户中,已准备好与 Azure 通信服务 SMS API 一起使用。
可以使用标准的 Azure 通信服务短信 API 发送和接收短信。 发送消息时,可以像往常一样向 Azure 进行身份验证,并在运行时包含来自 Messaging Connect 合作伙伴的密钥,以便我们可以相应地路由流量。 合作伙伴处理消息传递,而可观测性(如传递回执、诊断和日志记录)仍与其他服务一起保留在 Azure 中。
此模型在实际方案中非常有效。 你可以使用 Messaging Connect 接触全球用户,无论是通过 Copilot Studio 构建 AI 驱动的助手、管理需要在巴西和印度使用本地发件人 ID 的物流,还是在数十个国家间协调市场活动。 使用 Azure 通信服务(通过消息传递连接),可以通过受信任的合作伙伴获取正确的发件人标识,并将其与首选的 Azure 通信服务 SMS SDK 一起使用,同时在 Azure 中保持完全控制和可观测性。
Capabilities
下表汇总了公共预览版期间使用消息连接时可用的功能。 某些功能由 Azure 直接提供,其他功能由 Messaging Connect 合作伙伴提供。
| Capability | Supported |
|---|---|
| 支持的合作伙伴 | Infobip(更多合作伙伴即将加入) |
| 长代码 | ✔️ |
| 动态字母数字发送者 ID | ✔️ |
| 短代码 | ❌ (即将推出) |
| 预注册的 Alpha 发件人标识(合作伙伴管理) | ✔️ |
| 双向消息传送 | ✔️ |
| 单向消息传送 | ✔️ |
| 1:1 (单个收件人) | ✔️ |
| 1:N(批量消息) | ✔️ |
| 190 多个国家/地区的覆盖范围 | ✔️ |
| 传递报告 (DLL) | ✔️ |
| 入站消息的事件网格 | ✔️ |
| 合作伙伴管理的选择退出 | ✔️ |
| 本地监管执法 | ✔️ |
| C# SDK | ✔️ |
| JavaScript SDK | ✔️ |
| Python SDK | ❌ (即将推出) |
| Java SDK | ❌ (即将推出) |
| 自动国家/地区发件人选择(合作伙伴管理) | Infobip ✔️ |
🌐 国家/地区可用性
消息传递连接显著扩展了可以通过 Azure 通信服务访问的国家/地区数量,通过我们的全球合作伙伴网络支持 190 多个国家/地区。 在公共预览版期间,可以从 Messaging Connect 合作伙伴获取和使用两种类型的发件人标识:
- 长代码 – 支持双向短信的标准本地电话号码或手机号码。 通常称为虚拟长代码。
- 动态字母数字发送方 ID – 在允许的情况下的单向带品牌标识的发送方(例如,“CONTOSO”)。 只能在非 Azure 通信服务支持的国家/地区启用 DASID。
在 Azure 门户中搜索国家/地区和号码类型时,如果 Azure 通信服务直接不支持该配置,则可以选择“消息连接”作为选项。 然后,通过合作伙伴的门户完成预配过程。
消息连接合作伙伴确定国家/地区可用性。 Messaging Connect 合作伙伴(例如 Infobip)处理数字类型、合规性要求和载入步骤,步骤因国家/地区而异。
| Partner | 全球影响力 | 支持的国家/地区 |
|---|---|---|
| Infobip | Infobip 连接到 200 多个国家/地区的 800 多个运营商,支持短代码、长代码(VLAN)和字母数字发送方。 几乎所有的市场都提供单向短信服务;在超过 100 个国家/地区提供双向短信服务。 | 查看 Infobip 覆盖率。 |
身份验证:使用 Azure 标识保护访问
若要通过消息传递连接发送消息,应用程序必须使用受支持的标识模型之一向 Azure 通信服务进行身份验证。 此步骤验证应用是否有权通过 Azure 通信服务资源发送消息,并确保消息与正确的 Azure 订阅相关联。
Azure 通信服务支持以下身份验证方法:
- 访问密钥身份验证 (连接字符串)
- Microsoft Entra ID 身份验证
使用 Azure 通信服务进行身份验证的方式与对任何其他短信请求进行身份验证的方式相同。 消息连接不会更改身份验证在平台级别的工作方式-它只是在验证消息后添加基于合作伙伴的路由步骤。
了解详细信息: 向 Azure 通信服务进行身份验证
身份验证后,应用程序还会包含运行时的合作伙伴 API 密钥,以通过正确的 Messaging Connect 合作伙伴路由消息。 此合作伙伴 API 密钥是消息有效负载的一部分,下一部分将进一步介绍。
消息连接如何验证请求
在使用消息传送连接发送消息之前,Azure 会检查请求是否包含必要的路由信息并经过正确身份验证。 若要执行此步骤,有效负载必须包含标识消息连接合作伙伴的特定元数据,并允许 Azure 通信服务通过其基础结构路由消息。
所需的有效负载格式
使用消息连接号码发送消息时,请求必须包含一个 messagingConnect 对象。 此对象包含消息连接合作伙伴(例如 Infobip)和合作伙伴名称提供的 API 密钥。 Azure 使用此信息来授权请求并确定如何路由消息。
{
"from": "+447700900123",
"to": ["+447700900456"],
"message": "Hello from Messaging Connect!",
"options": {
"messagingConnect": {
"apiKey": "your-partner-api-key",
"partner": "[PARTNER NAME]"
}
}
}
messagingConnect每当使用通过 Messaging Connect 预配的数字时,都需要该对象。 如果丢失或配置错误,Azure 通信服务将拒绝该消息。
包含此元数据后,Azure 通信服务会在两个阶段执行验证检查:首先,Azure 通信服务会在收到请求后立即验证请求,然后在将请求提交到合作伙伴后再次验证。
同步验证
一旦 Azure 通信服务收到消息请求,就会立即执行此第一层验证。 如果缺少或无效(例如合作伙伴名称、API 密钥或数字与 Azure 通信服务资源之间的关联),则会收到即时错误响应。 此检查可防止消息被错误发送或路由到错误的合作伙伴。
常见验证结果:
| Scenario | Response |
|---|---|
缺少 messagingConnect 字段 |
400 错误的请求,包含验证详细信息 |
| 未授权发件人号码 | 401 未授权 |
Messaging Connect 电话号码缺失 messagingConnect |
400 错误请求 - “未提供 MessagingConnect 选项” |
| 合作伙伴不匹配 | 400 错误请求 - “MessagingConnect 选项与数字信息不匹配。 |
这些错误在 API 响应中同步返回,也显示在 Azure 诊断和日志中。
异步交付错误
即使请求通过同步验证,Azure 通信服务可能仍无法将其移交给消息连接合作伙伴。 在某些情况下,Azure 通信服务在移交之前停止消息,例如,如果收件人以前选择退出或合作伙伴有已知的送达阻止。 这些情况仍会导致传递报告,因此始终会通知你消息结果。 将消息传递到合作伙伴后,任何下游传递失败(如无法访问的数字、过期有效期或运营商级拒绝)也通过传递报告异步返回。 可以从 Azure 事件网格事件查看传递报告中的传递状态(如果已配置)。
了解更多:Azure 事件网格事件的交付报告
Tip
为了确保对消息流量的充分可见性,我们强烈建议为投递报告配置事件订阅。 通过此设置,可以监视消息状态、排查故障并与现有遥测系统集成。 了解如何配置 SMS 事件: 处理 SMS 事件
Note
如果消息失败,请检查 messagingConnect 对象的准确性,查看传递报告,并查阅合作伙伴文档了解下游错误代码。
Important
Microsoft不会保留用于访问外部消息连接合作伙伴的任何凭据。 合作伙伴 API 密钥仅用于处理每个消息请求,并在请求完成后立即放弃。 这些凭据不会以任何形式存储、记录或保留。
通过安全且合规的消息传送实现全球访问
消息连接是为全球用途构建的,无论是从亚洲、非洲、南美洲还是欧盟运营。 本部分介绍如何跨区域流动数据、如何维护隐私,以及 Azure 如何确保符合驻留要求。
消息路由和数据流
Messaging Connect 将消息传送(由合作伙伴处理)与处理和可观测性(由 Azure 处理)分开。 工作原理如下:
- 出站消息:使用 Azure 通信服务 API 发送短信,并通过
messagingConnect对象包含合作伙伴路由信息。 Azure 记录消息,执行验证,然后将其路由到所选的 Messaging Connect 合作伙伴。 - 入站消息:合作伙伴接收短信并将其转发到 Azure 的基础结构。 从那里,Azure 通信服务会处理消息,就像发送到 Azure 通信服务本机号码的任何消息一样,通过事件网格触发事件。
尽管合作伙伴处理交付,但 Azure 提供:
- 送达收据和可观测性
- 标准 Azure 通信服务 API 和 SDK
- 仅暂时性消息处理 - 未存储任何消息内容
传递或失败后,Azure 通信服务不会保留短信内容。 消息和元数据仅在需要时暂时在内存中进行路由和诊断处理。
Important
Microsoft不会保留用于访问外部消息连接合作伙伴的任何凭据。 合作伙伴 API 密钥仅用于处理每个消息请求,并在请求完成后立即放弃。 这些凭据不会以任何形式存储、记录或保留。
了解详细信息: 数据驻留和用户隐私
EU 数据边界 (EUDB)
Azure 通信服务保证 EUDB 中的短信数据存储在 EUDB 区域中。 截至今天,我们在荷兰、爱尔兰或瑞士地区处理和存储数据,确保不会在欧盟(欧盟经济区)之外进行未经授权的数据传输。 此外,Azure 通信服务还采用高级安全措施(包括加密)来保护静态和传输中的短信数据。 客户可以在 EUDB 中选择其首选数据驻留,确保数据保留在指定的欧盟区域中。
了解详细信息: 欧盟数据边界(EUDB)
从任意位置使用 Messaging Connect
消息传递连接设计用于全球使用。 通过 Messaging Connect 合作伙伴获取号码后,可以使用 Azure 通信服务 API 将其集成到应用程序中,而不考虑其托管位置。 但是,一些国家/地区对数字使用、允许的内容类型或流量来源要求强制实施本地电信规则。 消息连接合作伙伴在编号预配过程中管理这些要求。 合作伙伴(而不是 Azure 通信服务)优化传送路由。 根据数字类型、本地规则和合作伙伴设置,消息可能通过本地或区域基础结构进行路由。
选择退出管理
选择退出和选择加入的合规性是短信通信中的关键部分,特别是在受监管市场中。 通过 Messaging Connect,此责任由你(客户)、合作伙伴(例如 Infobip)和 Microsoft 共享,每个角色都有不同的责任。
关键责任
- 合作伙伴(例如 Infobip)支持检测像“STOP”或“START”这样的退订和订阅关键字,但这项功能并非自动化。
Note
必须通过合作伙伴的门户来显式配置这些关键字。 Infobip 可以维护已选择退出用户的阻止列表,但你应管理自己的列表,尤其是在通过其他渠道(例如电子邮件或 Web 表单)进行选择退出时。
- 默认情况下不会发送“你未订阅”等确认消息。 如果需要,你必须使用合作伙伴显式配置它们,或在自己的应用程序中实现它们。
- 客户负责确保消息传送体验符合本地法规,包括选择退出处理、关键字配置和最终用户同意管理。
- Azure 通信服务不会处理选择退出关键字或发送任何自动响应。 但是,Microsoft 确实会维护一组预定义的选择退出关键字,以便观察。
Azure 通信服务的作用
默认情况下,Azure 通信服务会检测标准选择加入/退出关键字:START 和 UNSTOP 被识别为 Opt-In 触发器,而 STOP、ARRET、QUIT、END、REVOKE、OPT OUT、CANCEL、CANCEL 和 UNSUBSCRIBE 被识别为选择退出命令。 当传入消息与其中一个关键字完全匹配时,Azure 通信服务会自动处理请求,并相应地更新数据库中用户的选择加入状态。
定价和计费
Messaging Connect 使用双重费用模型将Microsoft的平台使用情况与合作伙伴的交付和租赁服务分开。
你支付给Microsoft的费用
需要支付平台费用,以使用 Azure 通信服务 API 和消息传递连接的基础结构。 这包括消息处理、诊断、传递跟踪和 API 级可观测性。
- 无论消息最终是否由合作伙伴传递,Azure 都会为每个提交的短信发送请求收取 0.0025 美元的平台费用。 Microsoft不收取送货费用。
- 此费用属于 Azure 预付款(也称为货币承诺),符合 MACC(Microsoft Azure 消耗承诺)的条件,并显示在正常的 Azure 发票中。
Messaging Connect 合作伙伴(而不是Microsoft)处理消息传递。
你支付给合作伙伴的费用
直接向 Messaging Connect 合作伙伴支付以下费用:
- 电话号码租赁(每月或每年)
- 每封邮件的传递费用,因国家/地区和路线而异
合作伙伴定义商业条款和支持级别。 默认情况下,Messaging Connect 合作伙伴(例如 Infobip)会直接向你收取送货费和号码租赁费用。 除非显式设置市场计费,否则这些费用不会显示在 Azure 发票上。 没有订阅限制。 可以将 Messaging Connect 与任何 Azure 订阅类型配合使用,包括即用即付和企业协议。 与Microsoft的直接短信产品/服务不同,消息连接不是电信服务,它是开发人员平台模型。
| Partner | 交付费用模型 | 定价详细信息 |
|---|---|---|
| Infobip | 短信按使用量付费定价模型。 | 查看 Infobip 短信速率 |
可选:通过 Azure 市场合并计费
如果想要将费用合并到 Azure 发票中,可以请求合作伙伴通过 Azure 市场提供消息传送连接。 市场流的工作原理如下:
- 你要求合作伙伴 (Infobip) 通过 Azure 市场提交专用产品/服务。
- 你的 Azure 管理员接受 Azure 门户中的产品/服务。
- 每个月,合作伙伴都会向Microsoft发送使用情况数据。
- Microsoft代表合作伙伴向你收费(直通费用)。
此设置简化了采购,并允许 Messaging Connect 使用情况计入 Azure MACC 承诺。
了解详细信息:Azure 市场
Tip
无论是选择合作伙伴还是市场计费,Azure 中的技术体验都完全相同。
开发人员体验
使用Messaging Connect获取电话号码
Messaging Connect 引入了新的预配模型:而不是直接从 Microsoft 获取数字,而是通过受信任的合作伙伴(从 Infobip 开始)获取这些号码,然后将其连接到 Azure 通信服务资源。 此过程允许你在 190 多个国家/地区访问短信号码,而合作伙伴则处理本地合规性、文档和审批流。
Tip
如果你不熟悉 Azure 通信服务,我们建议从 “创建通信服务”资源 指南开始,以便设置并准备好使用消息连接加入短信。
让我们一步步来:
选择消息连接合作伙伴
在 Azure 门户中的通信服务资源中,转到 “消息连接” 边栏选项卡,并从列表中选择合作伙伴。 接受条款。 你将被重定向到合作伙伴的网站以完成获取号码。
获取合作伙伴门户上的号码
若要购买号码,请按照 Messaging Connect 合作伙伴提供的提示进行作。 根据国家/地区,可能需要上传支持文档或完整的身份验证。 批准后,该号码将分配给合作伙伴帐户。
Tip
需要有关配置 Infobip 端的帮助?
按照官方指南将 Azure 通信服务资源连接到 Infobip 并预配短信号码:
Microsoft Azure 通信服务的短信 - 消息连接
返回到 Azure 门户
合作伙伴确认已预配号码后,会触发与 Azure 通信服务的同步。 同步完成后,这些号码会自动显示在 ACS 资源中-可供与 ACS 短信 API 一起使用,就像直接通过 Azure 通信服务预配的任何号码一样。 不需要额外的设置。
Note
Messaging Connect 合作伙伴设置审批和激活时间线,时间线因国家/地区和号码类型而异。 消息连接目前不支持即时预配,Microsoft不参与审核或审批过程。
重要说明:
- Microsoft不管理消息连接号码的合规性或审核。 合作伙伴完全处理此过程。
- 每个合作伙伴都有不同的预配流和服务级别协议(SLA),具体取决于区域和本地电信法规。
- 通过 Messaging Connect 获取的数字会显示在 Azure 门户中,带有“作员名称”标签,以便你可以将它们与 Azure 通信服务管理的号码区分开来。
- 若要发送包含这些数字的消息,请不要忘记在 API 请求中包含该
MessagingConnect对象。
SMS SDK 教程
Note
消息连接公共预览版期间支持以下 API 和 SDK 版本:
-
API 版本:
2025-05-29-preview -
JavaScript SDK:
1.2.0-beta.4 -
.NET SDK:
1.1.0-beta.3
消息传递连接基于 Azure 通信服务的现有 SMS 功能构建。 它使用相同的短信 API 和 SDK,因此,如果你已经熟悉使用 ACS 发送消息(尤其是完成 发送短信快速入门),你几乎就在那里。 只需确保使用 Send SMS with options 该方法并将对象包含在 MessagingConnect 选项字段中。
如果你不熟悉 Azure 通信服务,请首先完成 发送短信快速入门 来设置身份验证、创建 SmsClient和了解发送请求的基本结构。 请务必在请求中包含对象 MessagingConnect 。
此对象包含:
- 合作伙伴名称(例如“infobip”)
- 获取号码后收到的合作伙伴 API 密钥
Azure 通信服务令牌继续授权向 Azure 发出的请求,合作伙伴密钥告知 Azure 通信服务如何路由消息。
Tip
如何从 Infobip 获取合作伙伴 API 密钥
若要使用消息传送连接发送消息,需要 Infobip API 密钥:
- 使用 Infobip 凭据登录到 Infobip 门户 。
- 选择“ 创建新 API 密钥”。
- 在 API 作用域下,启用:
sms:message:send - 将 API 密钥保存在安全的位置。 在 Azure 通信服务 API 调用中使用它。
以下示例演示如何使用 C# 和 JavaScript 通过 Messaging Connect 发送消息。
C# 示例
smsClient.Send(
from: "<YOUR-ACS-NUMBER>",
to: ["<RECIPIENT-NUMBER>"],
message: $"Hello from Azure Communication Services!",
options: new SmsSendOptions(true)
{
MessagingConnect = new MessagingConnectOptions("<YOUR-INFOBIP-API-KEY>", "infobip")
});
JavaScript 示例
await smsClient.send(
{
from: "<YOUR-ACS-NUMBER>",
to: ["<RECIPIENT-NUMBER>"],
message: "Hello from Azure Communication Services! JS SDK is working!",
},
{
enableDeliveryReport: true, // Optional: Enable delivery reports
messagingConnect: {
apiKey: "<YOUR-INFOBIP-API-KEY>",
partner: "infobip"
}
});
Tip
如果使用的是 Messaging Connect 号码但不包括 messagingConnect 对象,则请求将失败并显示验证错误。 有关可能的验证错误和响应的列表, 请跳转到验证结果表。
SMS 错误代码
通过消息连接发送短信时,可能会遇到错误代码,无论是作为同步验证(即时 API 响应)的一部分,还是在异步传递报告中。 Azure 通信服务在所有短信流量(包括消息连接)中使用相同的错误模型。
了解详细信息: 请参阅短信错误代码的完整列表
消息连接伙伴目录
Messaging Connect 通过与受信任的全球短信提供商直接集成来运作。 这些合作伙伴负责号码分配、合规性、交付和退订执行,而 Azure 则提供开发者平台、可观测性和消息编排。 下表列出了当前支持的合作伙伴。 随着时间推移,将添加更多合作伙伴,以提供更广泛的覆盖范围和冗余。
| Partner | 简要说明 | 国家/地区可用性 | Pricing |
|---|---|---|---|
| Infobip | 全球通信平台,与200多个国家和地区的800多家运营商建立直接连接。 Infobip 支持所有发送方类型,包括短代码、长代码(虚拟长代码或 VLAN)和字母数字(alphas)。 详细信息 | 单向消息传送几乎适用于所有国家和地区的所有网络。 100 多个国家/地区支持双向消息传递。 国家/地区覆盖范围 | Infobip 为短信提供灵活的即用即付定价模型。 查看费率。 有关自定义定价, 请联系销售人员。 |
Important
基于全球影响力、法规专业知识、可靠性和与Microsoft生态系统的强集成,选择消息传递连接合作伙伴。