如何从Access VBA调用Twilio carrier lookup功能?
Access VBA 实现 Twilio Carrier Lookup 功能
以下是基于Devin Rader的短信发送示例修改后的Carrier Lookup实现代码,核心是替换Twilio API端点并调整请求逻辑:
前置准备
- 确保你有Twilio的Account SID和Auth Token(在Twilio控制台获取)
- 可以使用VBA-JSON模块来处理JSON格式的返回数据,直接将该模块导入Access VBA项目即可
完整代码示例
Sub TwilioCarrierLookup() Dim xmlHttp As Object Dim accountSid As String Dim authToken As String Dim phoneNumber As String Dim apiUrl As String Dim authHeader As String Dim responseText As String Dim jsonObj As Object ' 需要VBA-JSON模块支持 ' 替换为你的Twilio账号信息和要查询的号码 accountSid = "YOUR_TWILIO_ACCOUNT_SID" authToken = "YOUR_TWILIO_AUTH_TOKEN" phoneNumber = "+1234567890" ' 需带国际区号 ' 构建Carrier Lookup API地址,对+号做URL编码 apiUrl = "https://lookups.twilio.com/v1/PhoneNumbers/" & Replace(phoneNumber, "+", "%2B") & "?Include=carrier" ' 创建XMLHTTP对象(后期绑定,无需额外引用) Set xmlHttp = CreateObject("MSXML2.XMLHTTP.6.0") ' 生成Basic Auth认证头 authHeader = "Basic " & EncodeBase64(accountSid & ":" & authToken) ' 初始化并发送请求 xmlHttp.Open "GET", apiUrl, False xmlHttp.setRequestHeader "Authorization", authHeader xmlHttp.send ' 获取返回结果并判断请求状态 responseText = xmlHttp.responseText If Not xmlHttp.Status = 200 Then MsgBox "查询失败:" & responseText, vbCritical Exit Sub End If ' 解析JSON结果(需VBA-JSON模块) Set jsonObj = JsonConverter.ParseJson(responseText) ' 提取并展示运营商信息 MsgBox "号码:" & jsonObj("phone_number") & vbCrLf & _ "运营商名称:" & jsonObj("carrier")("name") & vbCrLf & _ "运营商类型:" & jsonObj("carrier")("type") & vbCrLf & _ "国家代码:" & jsonObj("country_code"), vbInformation ' 清理对象 Set xmlHttp = Nothing Set jsonObj = Nothing End Sub ' Base64编码函数,用于生成认证头 Function EncodeBase64(inputStr As String) As String Dim bytes() As Byte bytes = StrConv(inputStr, vbFromUnicode) EncodeBase64 = EncodeBase64Bytes(bytes) End Function Function EncodeBase64Bytes(bytes() As Byte) As String Dim objXML As Object Dim objNode As Object Set objXML = CreateObject("MSXML2.DOMDocument") Set objNode = objXML.createElement("b64") objNode.DataType = "bin.base64" objNode.nodeTypedValue = bytes EncodeBase64Bytes = objNode.Text Set objNode = Nothing Set objXML = Nothing End Function
代码说明
- API端点:Twilio Carrier Lookup的固定地址为
https://lookups.twilio.com/v1/PhoneNumbers/{PhoneNumber},通过Include=carrier参数指定返回运营商详情 - 认证逻辑:将Account SID和Auth Token用冒号拼接后做Base64编码,放在请求头的
Authorization字段完成Basic Auth验证 - 号码要求:查询号码必须带国际区号(如
+86代表中国),且+号需替换为URL编码符%2B - 结果解析:返回的JSON数据中,
carrier对象包含运营商的name(官方名称)和type(类型,如mobile、landline、voip等)
注意事项
- 若不想使用VBA-JSON模块,也可通过字符串截取手动解析JSON,但效率较低
- 若出现权限问题,可尝试替换为
MSXML2.ServerXMLHTTP对象发送请求 - 测试优先使用Twilio提供的测试号码,避免产生不必要的查询费用
内容的提问来源于stack exchange,提问作者Bill Edwards
相关产品推荐
相关产品推荐

