基于Twilio为Discord机器人添加自定义来电显示功能的咨询
实现前置准备
- 先完成Twilio侧的基础配置:
- 购买至少1个支持自定义来电显示呼出权限的Twilio号码,如果你用的是Twilio试用账号,还需要把作为被叫的
myphonenumber本机号码在Twilio后台完成身份验证 - 从Twilio控制台获取你的
Account SID和Auth Token,这两个是调用Twilio API的核心凭证
- 购买至少1个支持自定义来电显示呼出权限的Twilio号码,如果你用的是Twilio试用账号,还需要把作为被叫的
- 完成Discord机器人侧的准备:已经获取Discord Bot Token,机器人已加入目标服务器,且已开启读取消息、发送消息的权限
具体实现步骤
1. 依赖安装
以下以Node.js技术栈为例,你也可以替换成Python等其他你熟悉的技术栈,对应安装依赖即可:
npm install discord.js twilio dotenv
2. 敏感信息配置
创建.env文件存储凭证,不要把敏感信息硬编码到代码中:
DISCORD_BOT_TOKEN=你的Discord机器人Token TWILIO_ACCOUNT_SID=你的Twilio账户SID TWILIO_AUTH_TOKEN=你的Twilio认证Token TWILIO_BASE_NUMBER=你购买的Twilio基础号码
3. 核心逻辑编写
核心逻辑分为指令监听匹配、参数校验、Twilio API调用三个部分,参考代码片段如下:
require('dotenv').config(); const { Client, GatewayIntentBits } = require('discord.js'); const twilio = require('twilio'); // 初始化Discord机器人和Twilio客户端 const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent ] }); const twilioClient = twilio(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN); client.on('messageCreate', async message => { // 过滤非!call指令和机器人自己发的消息 if (!message.content.startsWith('!call') || message.author.bot) return; // 解析带引号的三个入参 const args = message.content.match(/(".*?"|\S+)/g).slice(1); if (args.length !== 3) { return message.reply('参数格式错误,正确格式为:!call "你的本机号码" "自定义来电显示" "服务标识"'); } // 去除参数外层引号 const [myPhoneNumber, callerId, yourService] = args.map(arg => arg.replace(/"/g, '')); try { // 调用Twilio发起呼叫 const call = await twilioClient.calls.create({ url: '你的TwiML服务地址', // 用于指定呼叫接通后的播放内容、流程逻辑,测试可使用Twilio官方默认待接听音乐地址 to: myPhoneNumber, from: callerId, // 该字段即为自定义的来电显示内容 }); message.reply(`呼叫已发起,关联服务:${yourService},呼叫标识ID:${call.sid}`); } catch (err) { message.reply(`呼叫发起失败:${err.message}`); } }); // 启动机器人 client.login(process.env.DISCORD_BOT_TOKEN);
4. 注意事项
- 你要用作
callerid的内容如果是号码,必须先在Twilio后台完成身份验证,否则会呼叫失败;如果是纯文字内容,需要提前向Twilio申请开通文字来电显示权限,同时确认被叫号码所属运营商支持透传文字来电显示 - 所有号码都需要按照E.164格式填写,也就是带国家码前缀的完整格式(比如中国号码为+8613xxxxxxxxx),不要使用本地短号格式
内容的提问来源于stack exchange,提问作者Stevie
相关产品推荐
相关产品推荐

