Twilio: programmatically join conference and play <Say> command or <Play> sound file?

大城市里の小女人 提交于 2019-12-12 13:53:17

问题


I have two users and I joined them both into a <Conference>.

I would like to have a robot join the <Conference> and then make an announcement.

There are two approaches I'm considering:

  1. Take everyone in the conference, redirect them to a TwiML that plays a sound, and then move them back into the Conference.

  2. Create a bot that somehow joins the Conference and plays TwiML, but it's not clear for me, from the documentation, how to do that.


回答1:


Twilio developer evangelist here.

Either of those approaches will work, though will have slightly different effects. Redirecting will cut the conference regardless of who is speaking at the time, but a bot joining in may get spoken over. It depends on which will work better for your use case.

To do the redirect, you'll need to run through the list of Conference participants, redirect them by updating their call to a new URL and return TwiML from that URL that plays the sound and redirects back to your original Conference URL. Something like:

$sid = "{{ account_sid }}"; 
$token = "{{ auth_token }}"; 
$client = new Services_Twilio($sid, $token);

// Loop over the list of participants and redirect ($client->account->conferences->get(CONFERENCE_SID)->participants as $participant) {
    $call = $client->account->calls->get($participant->call_sid);
    $call->update(array(
        "Url" => "http://example.com/conference_message"
    ));
}

Then your /conference_message endpoint would need TwiML like this:

<Response>
  <Play>http://example.com/message.mp3</Play>
  <Redirect>http://example.com/conference</Redirect>
</Response>

On the other hand, having a bot enter the room requires you to create a call to the conference number and supply a URL which points to the TwiML to play the message and then hangup. Like this:

$sid = "{{ account_sid }}"; 
$token = "{{ auth_token }}"; 
$client = new Services_Twilio($sid, $token); 

$call = $client->account->calls->create(A_TWILIO_NUMBER, THE_CONFERENCE_NUMBER, "http://example.com/conference_message");

Then your /conference_message endpoint would return TwiML like this:

<Response>
  <Play>http://example.com/message.mp3</Play>
  <Hangup/>
</Response>

Let me know if this helps at all.



来源:https://stackoverflow.com/questions/36116688/twilio-programmatically-join-conference-and-play-say-command-or-play-sound

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!