You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移至Azure Communication Services后,如何获取已发送的SMS消息?

如何在Azure Communication Services中获取已发送的短信(用于端到端测试)

ACS目前没有提供类似Twilio messages.list() 那样直接查询账号已发送短信列表的API,但有两种可行的替代方案来满足你的端到端测试需求:

方案1:发送短信时本地记录元数据

在调用ACS发送短信的代码中,同步记录发送的关键信息(接收号码、内容、发送时间、请求ID等)到本地存储(比如数据库、内存缓存或日志文件),测试时直接从这个存储中查询。

示例代码(Node.js):

const { AzureCommunicationSMSClient } = require("@azure/communication-sms");
const { v4: uuidv4 } = require('uuid');
// 测试场景可先用内存数组存储,生产环境建议改用数据库
const sentSmsRecords = [];

module.exports = {
  // 发送短信并同步记录元数据
  async sendAndRecordSms(fromPhone, toPhone, message) {
    const connectionString = process.env.AZURE_COMMUNICATION_SERVICES_CONNECTION_STRING;
    const smsClient = new AzureCommunicationSMSClient(connectionString);
    
    const sendResult = await smsClient.send({
      from: fromPhone,
      to: [toPhone],
      message: message
    });
    
    // 记录测试所需的关键信息
    const record = {
      id: uuidv4(),
      to: toPhone,
      message: message,
      sentDate: new Date(),
      acsMessageId: sendResult.messages[0].messageId,
      status: sendResult.messages[0].status
    };
    sentSmsRecords.push(record);
    return sendResult;
  },

  // 模拟Twilio的查询逻辑,获取指定号码的近期已发短信
  async getSentSms(phoneNumber) {
    // 查询10分钟内发送的消息,可根据测试需求调整时间范围
    const tenMinutesAgo = new Date(Date.now() - 10 * 60 * 1000);
    return sentSmsRecords.filter(record => 
      record.to === phoneNumber && record.sentDate > tenMinutesAgo
    ).slice(0, 10);
  }
};

方案2:通过Azure Event Grid订阅短信状态事件

ACS会将短信的发送状态事件(成功、失败、已送达等)推送到Event Grid,你可以订阅这些事件并将数据持久化,之后通过查询存储的事件数据来获取已发送短信的信息。

步骤概要:

  • 在Azure门户中为你的ACS资源配置Event Grid事件订阅,选择存储账户、事件中心或Webhook作为接收终点
  • 发送短信后,ACS会触发Microsoft.Communication.SMSMessageSent事件,事件数据包含接收号码、消息ID、发送时间、状态等核心信息
  • 将接收到的事件数据存储到数据库,测试时直接查询对应号码的事件记录

这种方案适合需要长期追踪短信状态的场景,配置稍复杂,但能获取更完整的发送链路信息。

内容的提问来源于stack exchange,提问作者Emile Paquette

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 22:55:06