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

如何在Twilio发起电话时获取号码?基于Node.js实现

解决方案:自定义Twilio语音XML并获取来电号码

咱们直接搞定两个核心需求:替换默认的语音XML URL,以及在Twilio发起呼叫时捕获来电号码。下面是一步步的实现方法和完整代码:

1. 替换自定义Voice XML URL

你只需要把client.api.calls.create里的url参数改成你自己的voice.xml文件地址就行——不管是本地服务地址(比如http://localhost:3000/your-voice.xml)还是线上公开URL都可以,只要Twilio能正常访问到这个地址。

2. 获取来电号码(主叫号码)

当Twilio触发你的语音XML对应的webhook时,会自动把呼叫相关的参数(包括主叫号码From)通过POST请求发送给你的服务器。你需要搭建一个简单的服务来接收这些参数,同时返回自定义的语音响应。

完整实现代码

首先安装必要的依赖:

npm install twilio express

创建服务文件(比如call-handler.js):

// 导入依赖
const express = require('express');
const Twilio = require('twilio');

// Twilio账号信息(替换成你自己的)
const accountSid = 'AC36861400a21a3ee42437f446015cd183';
const authToken = 'your_auth_token';
const client = new Twilio(accountSid, authToken);

const app = express();
// 解析Twilio发送的表单数据
app.use(express.urlencoded({ extended: true }));

// 处理Twilio的呼叫请求:获取来电号码并返回自定义语音XML
app.post('/your-voice', (req, res) => {
  // 从请求体中拿到来电号码
  const callerNumber = req.body.From;
  console.log(`收到来自 ${callerNumber} 的呼叫`);

  // 用Twilio的Twiml构建器生成语音响应(也可以直接返回静态XML文件)
  const voiceResponse = new Twilio.twiml.VoiceResponse();
  voiceResponse.say(`你好,来自 ${callerNumber} 的呼叫已接通`);
  // 这里可以添加更多指令:比如转接到其他号码、播放音频文件等

  // 返回XML格式的响应给Twilio
  res.type('text/xml');
  res.send(voiceResponse.toString());
});

// 发起呼叫的函数
async function makeOutgoingCall() {
  try {
    const call = await client.api.calls.create({
      url: 'http://你的公网IP或域名/your-voice', // 替换成你的服务地址
      to: '+14155551212', // 目标被叫号码
      from: '+你的Twilio电话号码' // 你的Twilio号码
    });
    console.log(`呼叫已发起,SID: ${call.sid}`);
  } catch (error) {
    console.error('呼叫失败:', error);
  }
}

// 启动服务器并发起呼叫
app.listen(3000, () => {
  console.log('服务器运行在 http://localhost:3000');
  makeOutgoingCall(); // 触发发起呼叫的逻辑
});

关键注意点

  • 公网访问要求:如果你的服务在本地运行,Twilio没法直接访问localhost,可以用Ngrok这类工具把本地端口映射到公网,或者把服务部署到线上服务器。
  • 静态XML替代:如果你不想用Twiml构建器,也可以直接在路由里返回你写好的静态voice.xml文件内容,只要确保响应是text/xml格式就行。

内容的提问来源于stack exchange,提问作者鄭暐翰

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:55:19