Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dynamically set Twilio <Dial> timeLimit

I have an app which lets the users dial number(s) they want to add to a call. Each user is subjected to Balance they have in their account.

The dial is performed by using TwiML <Dial>

So as per my amount per minute rate i calculate the remaining balance in terms of seconds and set that as a timeLimit for <Dial>.

I want to do a simple thing like when the user is in a call and his call timeLimit is about to expire, I would want to charge them using my payment methods and If the charge was a success replenish the timeLimit for the same call.

Can this be done?

like image 266
shridatt Avatar asked Jan 30 '26 07:01

shridatt


1 Answers

Twilio Developer Evangelist here.

There isn't a way to modify the timeLimit on a dial while the call is in progress. But I think I have a solution that could work for you.

Instead of dialing the number directly you could call into a conference with a timeLimit.

<Response>
  <Dial timeLimit="30">
    <Conference>YourCall</Conference>
  </Dial>
</Response>

Then when their account is replenished you could modify the live call to redirect to a TwiML url that rejoins the conference call with the new timeLimit:

<?php
// Get the PHP helper library from twilio.com/docs/php/install
require_once('/path/to/twilio-php/Services/Twilio.php'); // Loads the library

// Your Account Sid and Auth Token from twilio.com/user/account
$sid = "{{ sid }}"; 
$token = "{{ auth_token }}"; 
$client = new Services_Twilio($sid, $token);

// Get an object from its sid. If you do not have a sid,
// check out the list resource examples on this page
$call = $client->account->calls->get("{{call sid}}");
$call->update(array(
        "Url" => "http://youserver.com/conference.xml",
    "Method" => "POST"
    ));
echo $call->to;
like image 174
rickyrobinett Avatar answered Feb 02 '26 02:02

rickyrobinett



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!