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

如何在Twilio Run Function组件中动态获取主叫号码并作为JSON键传递

问题解决方法

1. 配置Studio Run Function Widget参数

Twilio Studio的Run Function组件默认不会自动传递通话上下文变量到Function的event对象,你需要手动在组件配置的Function Parameters区域添加参数:

  • 键填From
  • 值选流动态变量{{From}},或者对应前置节点输出的Caller ID变量即可

2. 补充参数存在性校验

你当前代码没有做event.From的空值判断,一旦变量不存在调用substring会直接抛出异常,导致Function运行失败,修改后代码如下:

exports.handler = function(context, event, callback) {
    let twiml = new Twilio.twiml.VoiceResponse();
    // 先判断手机号是否存在
    if (!event.From) {
        twiml.say("无法获取您的手机号,支付失败");
        return callback(null, twiml);
    }
    var Client = require("@paymentsds/mpesa").Client;
    var phoneNumber = event.From;
    // 避免硬编码截断长度适配不同号码格式,按你原有逻辑可调整为前缀判断
    var phoneNumberNorm = phoneNumber.startsWith("+258") ? phoneNumber.substring(4) : phoneNumber.replace(/^\+\d+/, '');
    
    var client = new Client({
        apiKey: 'xxxxxxxxxxxxxxxxxx',
        publicKey: 'xxxxxxxxxxxxxxxxxx',
        serviceProviderCode: '171717'
    });
    var paymentData = {
        from: phoneNumberNorm,
        reference: '11114',
        transaction: 'T12344CC',
        amount: '10'
    };
    client.receive(paymentData).then(function(r) {
        twiml.say("您的支付已成功");
        callback(null, twiml);
    }).catch(function(e) {
        twiml.say("您的支付失败");
        callback(null, twiml);
    });
};

3. 检查Function运行配置

确认你的Function运行时权限已开启,依赖包@paymentsds/mpesa已在Function配置的Dependencies区域添加正确的版本号,避免依赖加载失败导致逻辑中断。

内容的提问来源于stack exchange,提问作者Ernesto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:42:03