簡體   English   中英

從瀏覽器作為主管(靜音)和教練(對代理耳語)加入活動的 Twilio 語音電話會議

[英]Join an active Twilio Voice conference call from browser as Supervisor (Muted) and Coach (Whisper to agent)

I have implemented Twilio Conference call using Twilio JavaScript SDK and PHP. 到目前為止,正在運行的功能是:

  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;
?>

現在,作為主管,一旦在座席(使用瀏覽器)和另一個電話號碼之間建立電話會議,我就會獲取並顯示正在進行的通話記錄,並帶有一個按鈕以作為主管加入。 下面的代碼已執行,但我在瀏覽器上聽不到任何聲音。

public function supervisecall()
    {
        $response = new VoiceResponse();
        $dial = $response->dial('');
        $dial->conference('first-conference-room', ['muted' => 'true']);
        echo $response;
   }

下面是當主管單擊加入呼叫按鈕時執行的代碼。

$("#btn-supervisor").click(function(e){
      $("#btn-supervisor").hide();
      $("#btn-coach").hide();
      $("#btn-endcall").show();
      e.preventDefault();

      var scallsid = $(this).attr('data-ssid');

      $.post("<?=base_url()?>TwilioTest/supervisecall",
      {
        callsid: scallsid,
      },
      function(data,status){
        //alert("Data: " + data + "\nStatus: " + status);
        if(status=="success")
        {
          alert("You have successfully dialled into call as supervisor:"+scallsid);
        }
        else
        {
          alert("Failed to join as a supervisor.")
        }
      });
    });

以下是我的初始化設備 function,主管瀏覽器已在他將監視/插入/指導電話會議的頁面上執行。

function intitializeDevice() {
    const data = await $.getJSON('link-to-function-to-get-token');
    token = data.token;
    device = new Twilio.Device(token, {
      codecPreferences: ["opus", "pcmu"],
    allowIncomingWhileBusy: false,
    });

    addDeviceListeners(device);

    device.register();
  }

有什么建議可以讓第三個人作為主管或教練加入會議嗎?

一個單獨的問題 - 三個人(號碼)之間的 Twilio 會議是否按兩次 Twilio 語音通話或一個 Twilio 語音通話收費,第三人加入會議的費用較低?

您的主管也在瀏覽器中,因此當您單擊加入按鈕時,我假設您正在使用Twilio 語音 SDK進行呼叫,並且您的 TwiML 應用程序將 webhook 定向到運行問題中第二個代碼塊的端點。

當您想要指導通話時,您實際上想要的不僅僅是靜音。 您希望能夠在另一端的人聽到的情況下收聽電話、與座席交談,或者插入並與會議中的兩個人交談。 為此,您需要使用<Conference> TwiML 的coach屬性

要使用coach ,您需要獲取座席呼叫段的SID。 如果代理從瀏覽器發出出站呼叫,那么他們的 SID 將是發送到您的 webhook URL 的CallSid參數。 如果他們正在接收呼叫,則他們的呼叫 SID 將從 API 呼叫返回以創建會議參與者。

獲得 SID 后,在代理的 webhook 響應中,您需要撥入會議並添加帶有代理呼叫 SID 值的coach屬性。

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

一個單獨的問題 - 三個人(號碼)之間的 Twilio 會議是否按兩次 Twilio 語音通話或一個 Twilio 語音通話收費,第三人加入會議的費用較低?

Twilio 按呼叫段收費。 Twilio 和調用者之間的每個連接都是一條腿。 所以在這種情況下,會議中的三個人是三條腿,每人按每分鍾的會議費率收費。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM