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

如何从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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:25:27