如何用Node.js SDK为Azure域名添加抑制列表?文档过时急寻API方案
解决方案:直接调用Azure通信服务抑制列表REST API
核心思路
既然Node.js SDK文档过时且对应suppressionLists属性不存在,直接调用Azure官方REST API是最快的替代方案,完全避开SDK版本兼容问题。
步骤实现
1. 生成有权限的访问令牌
使用Azure通信服务连接字符串生成带EmailSuppressionLists.Write权限的令牌,这是修改抑制列表的必要权限:
const { CommunicationIdentityClient } = require("@azure/communication-identity"); const connectionString = "你的Azure通信服务连接字符串"; const identityClient = new CommunicationIdentityClient(connectionString); async function getAccessToken() { const user = await identityClient.createUser(); const tokenResponse = await identityClient.getToken(user, ["EmailSuppressionLists.Write"]); return tokenResponse.token; }
2. 调用API添加抑制列表条目
用axios或原生fetch发送POST请求,直接向Azure API提交需要添加的邮箱地址:
const axios = require("axios"); async function addToSuppressionList() { const token = await getAccessToken(); const endpoint = "https://<你的通信服务资源名称>.communication.azure.com/email/suppressionLists/default/items?api-version=2024-07-01-preview"; const payload = { emailAddresses: ["user1@example.com", "user2@example.com"], reason: "UserRequested" // 可选值:UserRequested、Bounced、SpamComplaint }; try { const response = await axios.post(endpoint, payload, { headers: { "Authorization": `Bearer ${token}`, "Content-Type": "application/json" } }); console.log("添加成功,状态码:", response.status); } catch (error) { console.error("添加失败:", error.response?.data || error.message); } } addToSuppressionList();
替换说明:将<你的通信服务资源名称>改为你Azure通信服务实例的资源名称。
3. 验证添加结果
发送GET请求查询当前抑制列表,确认条目已成功添加:
async function checkSuppressionList() { const token = await getAccessToken(); const endpoint = "https://<你的通信服务资源名称>.communication.azure.com/email/suppressionLists/default/items?api-version=2024-07-01-preview"; try { const response = await axios.get(endpoint, { headers: { "Authorization": `Bearer ${token}` } }); console.log("当前抑制列表内容:", response.data); } catch (error) { console.error("查询失败:", error.response?.data || error.message); } }
关键注意事项
- API版本:示例使用
2024-07-01-preview,可根据Azure官方API文档切换为正式版 - 权限校验:令牌必须包含
EmailSuppressionLists.Write,否则会返回403权限错误 - 错误处理:重点捕获400(请求格式错误)、401(令牌无效)、404(资源未找到)等常见错误码
内容的提问来源于stack exchange,提问作者Dharmendra Soni
相关产品推荐
相关产品推荐

