以主管(静音)和教练(对座席耳语)的身份从浏览器加入活动的 Twilio Voice 电话会议

问题描述 投票:0回答:2

我已经使用 Twilio JavaScript SDK 和 PHP 实现了 Twilio 电话会议。到目前为止,正在运行的功能是:

  1. 座席可以从浏览器向手机拨打电话
  2. 客服人员可以在浏览器上接听来自另一部手机的来电
<?php
require_once './vendor/autoload.php';
use Twilio\TwiML\VoiceResponse;
use Twilio\Rest\Client;

$response = new VoiceResponse();
$dial = $response->dial('');
$dial->conference('first-conference-room',
    ['startConferenceOnEnter' => 'true', 'endConferenceOnExit' => 'true']);

$sid = getenv("TWILIO_ACCOUNT_SID");
$token = getenv("TWILIO_AUTH_TOKEN");
$twilio = new Client($sid, $token);

$twilio->conferences("first-conference-room")
                      ->participants
                      ->create($fromnumber,
                               $tonumber,[
                       "statusCallbackEvent" => ["ringing","initiated","answered","completed"],
                       "statusCallback" => "link-to-php-function-to-write-call-record-to-database",
                       "statusCallbackMethod" => "POST"
                          ]);
return $response;
?>

现在,作为主管,一旦在代理(使用浏览器)和另一个电话号码之间建立了电话会议,我就会通过一个按钮来获取并显示正在进行的通话记录,以作为主管加入。

有什么建议可以让第三个人作为主管或教练加入会议吗?

一个单独的问题 - 三人(号码)之间的 Twilio 会议是否按两次 Twilio 语音通话收费,或以较低费用第三人加入会议的一次 Twilio 语音通话收费?

twilio-api twilio-conference
2个回答
0
投票

您的主管也在浏览器中,因此当您单击加入按钮时,我假设您正在使用 Twilio Voice SDK 进行呼叫,并且您的 TwiML 应用程序将 Webhook 定向到您的端点,该端点运行您的第二个代码块问题。

当您想要指导通话时,您实际上想要的不仅仅是静音。您希望能够收听呼叫、与座席交谈而不让另一端的人听到,或者介入并与会议中的双方交谈。为此,您需要使用 coach

 TwiML
<Conference>
属性。

要使用

coach
,您需要获取座席呼叫支路的SID。如果代理从浏览器发出出站呼叫,则其 SID 将是发送到您的 Webhook URL 的
CallSid
参数。如果他们正在接收呼叫,则 API 调用会返回他们的呼叫 SID,以创建会议参与者。

获得 SID 后,在代理的 Webhook 响应中,您需要拨入会议并添加

coach
属性以及代理的呼叫 SID 值。

$response = new VoiceResponse();
        $dial = $response->dial('');
        $dial->conference('first-conference-room', ['coach' => $agentCallSid ]);
        echo $response;

一个单独的问题 - 三人(号码)之间的 Twilio 会议是否按两次 Twilio 语音通话收费,或以较低费用第三人加入会议的一次 Twilio 语音通话收费?

Twilio 按每段通话收费。 Twilio 和调用者之间的每个连接都是一条腿。因此,在这种情况下,会议中的三个人就是三条腿,并按每分钟的会议费率收费。


0
投票

在我的场景中,当代理创建出站呼叫时,另一个用户希望作为教练加入该会议,因此它正在工作,但是当代理收到呼叫并且其他用户希望作为教练加入该会议时,它会开始向客户提供指导,而不是对于代理,这条腿不适用于这种情况,因为当我得到代理和客户端连接的参与者呼叫ID时,因此在该腿中,“发件人”号码是客户的号码,而教练属性从该呼叫ID中获取“发件人”号码并开始指导我在这方面需要指导:

public function makecoach(){
  $conferenceSid = $this->input->post('conferencesid');
    $agentCallSid = $this->input->post('callsid');
    $participantsid = $this->input->post('participantcallsid');
    $client = new Client($this->config->item('TWILIO_ACCOUNT_SID'), $this->config->item('TWILIO_ACCOUNT_TOKEN'));
    // Fetch the list of participants in the conference
    $participants = $client->conferences($conferenceSid)
        ->participants
        ->read();

    // Find the participant's CallSid
    $participantCallSid = null;
    $toNumber = null;
    foreach ($participants as $p) {
        if ($p->callSid === $participantsid) {
            $participantCallSid = $p->callSid;
            $toNumber = $p->to;
            break;
        }
    }

    if ($participantCallSid) {
        // Set the participant as a coach
        $client->conferences($conferenceSid)
            ->participants($participantCallSid)
            ->update([
                'coaching' => true,
                'callSidToCoach' => $toNumber // The CallSid of the participant you want to coach
            ]);

        echo json_encode(['status' => 'Supervisor added to conference in coach mode.']);
    } else {
        echo json_encode(['status' => 'Error', 'message' => $participantCallSid]);
    }
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.