拨号会话与Twilio异步接收忙音后,如何留下mp3语音邮件?

时间:2019-12-05 23:13:21

标签: php twilio twilio-api twilio-php twilio-twiml

我想创建一个拨号会话循环(一个拨号会话结束后,创建另一个),以便一次呼叫多个客户端。

我的拨号动词有这种方法:

public function afterCall(Call $call, DialSession $ds, TwilioClient $client): VoiceResponse
{

        $voiceResponse = new VoiceResponse();
        $voiceResponse->pause(['length' => 1]);

        if ($_REQUEST['DialCallStatus'] === 'completed') {
            $call->status = Call::COMPLETED;
            $call->connected = true;
            $call->recording_link =  $_REQUEST['RecordingUrl'];
        }

        if ($_REQUEST['DialCallStatus'] === 'busy' || $_REQUEST['DialCallStatus'] === 'no-answer') {
            $call->status = Call::BUSY;
            $client->leaveVoiceMail($_REQUEST['DialCallSid']);
        }

        if ($_REQUEST['DialCallStatus'] !== 'completed' &&
            $_REQUEST['DialCallStatus'] !== 'busy' &&
            $_REQUEST['DialCallStatus'] !== 'no-answer'
        ) {
            $call->status = Call::ERROR;
        }

        return $voiceResponse;
}

当我的DialCallStatusbusyno-answer时,我想留下一个保存的mp3消息(语音邮件)

但是当我更新呼叫/ w DialCallSid(在$client->leaveVoiceMail($_REQUEST['DialCallSid']);中)时,出现此错误:

Twilio\Exceptions\RestException: [HTTP 400] Unable to update record: Call is not in-progress. Cannot redirect.

有没有一种方法可以从当前呼叫异步在Dial端留下消息?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果DialCallStatus返回忙音或无人接听,则表示被叫方未接听电话。如果被叫方的语音邮件或人工接听了电话,您只能留下语音邮件或播放自动通知。

https://www.twilio.com/docs/voice/twiml/dial#dialcallstatus

也许可以使用Calls REST API资源来模拟出站呼叫并使用电话答录机检测(AMD)来简化此过程,从而为您提供更好的服务。