如何使用Twilio Functions统计指定号码进行中与振铃通话总数
Twilio Function 实现方案
你不需要掌握复杂的Node.js开发,Twilio Functions 内置了官方Twilio SDK,不需要额外安装依赖,只需要写核心的接口调用和统计逻辑即可完成需求。
核心逻辑
调用Twilio Call资源列表接口,按指定电话号码、指定通话状态做过滤,直接统计符合条件的通话总数,返回结构化JSON给Twilio Studio读取即可。
步骤1:创建Twilio Function
- 进入Twilio控制台的Functions服务页面,新建一个空白函数模板
- 配置函数权限为可被Twilio Studio调用,如果你要固定统计某个号码,可以在函数环境变量里加
TARGET_PHONE_NUMBER存目标号码,也可以后续从Studio动态传参。
步骤2:替换函数代码
把函数默认的示例代码替换为以下内容:
exports.handler = function(context, event, callback) { // 自动使用当前Twilio账号完成鉴权,无需手动填写Account SID/Auth Token const client = context.getTwilioClient(); // 优先读取Studio传入的动态号码,没有则读取环境变量配置的固定号码 const targetPhone = event.targetNumber || context.TARGET_PHONE_NUMBER; client.calls.list({ // 统计该号码作为被叫的活跃通话就填to,作为主叫就填from,按需修改 to: targetPhone, // 同时筛选振铃、通话中两种状态 status: ['ringing', 'in-progress'], // 调整limit值覆盖你业务的最大并发通话规模,默认值20会导致统计不全 limit: 500 }) .then(callList => { const totalActive = callList.length; // 返回JSON格式响应,方便Studio直接解析取值 const res = new Twilio.Response(); res.appendHeader('Content-Type', 'application/json'); res.setBody({ count: totalActive }); callback(null, res); }) .catch(error => callback(error)); };
保存后部署函数即可。
步骤3:Studio侧配置
- 在需要统计通话数的流程位置,添加Run Function组件,选中你刚部署的函数
- 如果需要动态传入统计的目标号码,在组件的Function Parameters配置项中添加参数
targetNumber,值绑定Studio流程里对应的号码变量(比如触发流程的被叫/主叫号码变量) - 函数执行完成后,你可以通过
{{widgets.你的Run Function组件名.body.count}}直接拿到统计好的整数结果,后续做分支判断、变量赋值都可以直接使用这个值。
补充说明
- 如果你需要同时统计某个号码作为主叫、被叫的所有活跃通话,只需要在函数里分别查询
to: targetPhone和from: targetPhone的两个列表,把两个列表的长度相加后返回即可 - 如果你不想维护Node.js代码,也可以用你熟悉的PHP写同样的接口逻辑,在Studio里用Make HTTP Request组件调用你的PHP接口,同样能拿到结果,效果完全一致。
内容的提问来源于stack exchange,提问作者Rover
相关产品推荐
相关产品推荐

