如何在呼叫状态更改为响铃时自动取消 Twilio 出站呼叫

Posted

技术标签:

【中文标题】如何在呼叫状态更改为响铃时自动取消 Twilio 出站呼叫【英文标题】:How do I automatically cancel Twilio outbound call as soon as the call status changes to ringing 【发布时间】:2022-01-16 14:15:17 【问题描述】:

您好,我正在使用 Twilio 进行出站呼叫,我有本地节点应用程序可以发起呼叫。我也有 Twilio 状态回调函数来监控通话状态。我想在通话状态更改为“响铃”时取消/结束通话 我已尝试通过挂断方式结束通话并拒绝 TwiML。我原以为电话会自动取消,但我的电话一直在响。

用于拨打电话的节点代码

router.post('/call', async (requ, resp) => 

    const accountSid = myaccoundsid;
    const authToken = myauthtoken;
    const client = require('twilio')(accountSid, authToken);
    client.calls
        .create(
            to: 'to_number',
            from: 'from_number',
            url: 'http://demo.twilio.com/docs/voice.xml',
            statusCallback: 'url_to_my_status_call_back_function',
            statusCallbackMethod: 'POST',
            statusCallbackEvent: ['initiated', 'ringing', 'answered', 'completed'],
        )
        .then((call) => 
             console.log(call.status);
        );

   );

我的终端返回的通话状态是排队的。

我的状态回调函数

const VoiceResponse = require('twilio').twiml.VoiceResponse;
const response = new VoiceResponse();

exports.handler = function(context, event, callback) 
    if(event.CallStatus ==='ringing')
        console.log("Call status changed: "+ event.CallStatus);
        response.hangup();
        console.log(response.toString());
    
    callback(null, response);
;

Twilio 控制台

任何帮助将不胜感激,谢谢

【问题讨论】:

【参考方案1】:

这里是 Twilio 开发者宣传员。

首先,您应该检查 Twilio 条款,特别是 terms related to voice calls,以确保您不会违反此规则:

在给定的月份内,客户不会有 (a) 来自单个始发电话号码的大量未应答的出站语音呼叫尝试,或 (b) 平均出站语音呼叫持续时间较短。如果客户有上述任何行为,电信提供商可以独立阻止客户使用其网络。

如果您有正当理由在电话响起后立即挂断电话,请继续阅读。

状态回调 webhook 是异步的,它们发生在调用本身之外,因此将 TwiML 返回给它们不会影响调用。相反,要使用状态回调来影响呼叫,您需要 use the REST API to modify the call 并完成它。

这方面的一个例子可能是:

exports.handler = async function(context, event, callback) 
    if(event.CallStatus ==='ringing')
        const client = context.getTwilioClient();
        await client.calls(event.CallSid).update( status: 'canceled' );
    
    callback(null, response);
;

【讨论】:

以上是关于如何在呼叫状态更改为响铃时自动取消 Twilio 出站呼叫的主要内容,如果未能解决你的问题,请参考以下文章

Twilio 可编程语音呼叫立即完成

如何在 react-native android 应用程序中单击时将铃声模式更改为静音/响铃/振动?

UCMA 如何在遇忙信号和终止信号之前检测呼叫响铃持续时间并转移呼叫?

Twilio - 如何通过在 NodeJs 中提供呼叫 SID 来检索语音呼叫记录媒体文件

没有 Pushkit / Callkit 的 Swift 电话呼叫,如响铃 / 闹钟 / 振动通知

Twilio - 如何将现有呼叫移至会议