本插件用于集成 Twilio 的语音 API 和支付处理功能,可实现开始支付捕获、捕获卡号等操作,且所有支付数据处理和存储均由 Twilio 安全流程完成,确保 PCI 合规性。
npm install twilio-mcp-server-plugin
import { StartPaymentCaptureTool } from 'twilio-mcp-server-plugin';
const params = {
accountSid: process.env.TWILIO_ACCOUNT_SID,
apiKey: process.env.TWILIO_API_KEY,
apiSecretKey: process.env.TWILIO_API_SECRET_KEY
};
const paymentCapture = new StartPaymentCaptureTool(params);
async function handleVoiceCallStarted(callSid: string, amount: string) {
try {
const session = await paymentCapture.startPaymentCapture(callSid, amount);
// 监听后续语音交互
} catch (err) {
console.error('Error starting payment capture:', err);
}
}
使用 npm
进行安装:
npm install twilio-mcp-server-plugin
interface StartPaymentCaptureParams {
accountSid: string;
apiKey: string;
apiSecretKey: string;
}
class StartPaymentCaptureTool extends EventEmitter {
constructor(params: StartPaymentCaptureParams) {
super();
// 初始化 Twilio 客户端
}
async startPaymentCapture(callSid: string, amount: string): Promise<PaymentSession> {
// 调用 Twilio 语音 API 开始支付捕获会话
// 返回新的 PaymentSession 对象
}
}
interface CaptureCardNumberParams {
accountSid: string;
apiKey: string;
apiSecretKey: string;
}
class CaptureCardNumberTool extends EventEmitter {
constructor(params: CaptureCardNumberParams) {
super();
}
async captureCardNumber(callSid: string): Promise<PaymentData> {
// 调用 Twilio 语音 API 捕获卡号
// 处理返回的支付数据
}
}
CaptureSecurityCodeTool
- 捕获安全验证码CaptureCardTypeTool
- 捕获卡片类型GetPaymentStatusTool
- 获取支付状态{
"PaymentConnector": "PGP_MOCK",
"DateCreated": "2021-08-10T03:55:53.408Z",
"PaymentMethod": "credit-card",
"CallSid": "CAzzzzz",
"ChargeAmount": "9.99",
"AccountSid": "ACxxxxx",
"Sid": "PKxxxx"
}
{
"SecurityCode": "xxx", // 安全验证码
"PaymentCardType": "visa", // 卡片类型(如 visa、mastercard 等)
"Sid": "PKxxxx", // 支付会话 ID
"PaymentConfirmationCode": "ch_a9dc6297cd1a4fb095e61b1a9cf2dd1d",
"CallSid": "CAxxxxx", // 调用 ID
"Result": "success", // 支付结果
"AccountSid": "AC75xxxxxx", // 账户 ID
"DateCreated": "2021-08-10T03:55:53.408Z",
"ChargeAmount": "9.99"
}
所有工具类都继承自 EventEmitter
,并定义了统一的日志事件接口:
interface LogEvent {
timestamp: string;
level: 'info' | 'error' | 'debug';
message: string;
context?: object;
}
日志发射器实现:
class Logger extends EventEmitter {
log(level: 'info' | 'error' | 'debug', message: string, context?: object): void {
const event: LogEvent = {
timestamp: new Date().toISOString(),
level,
message,
context
};
this.emit('log', event);
}
}
插件实现了以下 MCP 标准接口:
startPaymentCapture
captureCardNumber
captureSecurityCode
getPaymentStatus
handlePaymentComplete
所有操作都会通过事件发射器通知 MCP 管理器。
本插件通过继承 EventEmitter
类来实现事件的监听和触发,统一的日志事件接口方便了日志的记录和管理。在与 Twilio 语音 API 交互时,使用有效的 Twilio 账户凭证进行 API 调用,确保支付流程的安全性和合规性。
⚠️ 重要提示
- 所有 API 调用都需要有效的 Twilio 账户凭证
- 支付流程必须在受信任的网络环境中进行
- 回调数据需要妥善处理和验证
- 确保日志记录完整,便于故障排查