如何通过Azure Communication Services Python SDK接收SMS短信?
Azure Communication Service Python SDK 接收SMS的实现方式
目前ACS Python SDK并未提供直接拉取SMS消息的API,ACS的SMS接收采用事件推送模式:当有SMS发送到你绑定的ACS电话号码时,Azure会通过事件网格(Event Grid)将消息事件推送到你预先配置的端点,你需要在Python中编写端点服务来接收并解析这些事件数据。
具体实现步骤:
- 第一步:在Azure门户配置ACS的事件订阅
- 进入你的ACS资源,找到「事件」选项卡
- 创建新的事件订阅,选择事件类型为
Microsoft.Communication.SmsReceived - 设置事件的接收端点(比如Azure函数、自建Web服务等)
- 第二步:编写Python端点服务处理事件
以Flask为例,编写一个接口接收事件网格推送的请求:from flask import Flask, request, jsonify app = Flask(__name__) @app.route("/sms-webhook", methods=["POST"]) def receive_sms(): # 获取事件网格推送的事件数据 events = request.get_json() for event in events: # 解析SMS内容 sms_data = event["data"] from_number = sms_data["from"] to_number = sms_data["to"] message_content = sms_data["message"] # 这里可以添加自定义处理逻辑,比如存储到数据库、触发业务流程等 print(f"收到来自{from_number}的消息:{message_content}") return jsonify({"status": "success"}), 200 if __name__ == "__main__": app.run(host="0.0.0.0", port=5000) - 第三步:验证事件签名(可选但推荐)
为了确保事件来自Azure官方,你可以通过事件网格提供的签名密钥验证请求的合法性,避免恶意请求。
补充说明:
- 你需要先在Azure门户购买支持接收SMS的ACS电话号码
- ACS的SMS接收功能依赖事件网格,并非通过SDK主动调用API拉取,因此在SDK文档和路线图中不会看到“接收SMS”的主动API
内容的提问来源于stack exchange,提问作者SeaDude
相关产品推荐
相关产品推荐

