Twilio Click-to-Call in Laravel

Twilio is a pretty powerful tool for making calls and sending SMS messages. When integrating into your marketing efforts, it’s just short of magic.

I recently had a project, built on Laravel, where I needed to create a click-to-call functionality. Basically, we display phone numbers as a link. When the user clicks on a phone number, the user first receives a call, and then connects to user to the selected phone number. Here’s how I did it….

First install via composer.

composer require twilio/sdk

Then create two routes to handle the call and dial requests

Route::get('call', 'TwilioController@call');
Route::get('dial', 'TwilioController@dial');

Create our TwilioController


namespace App\Http\Controllers\Dash;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class TwilioController extends Controller

    public function call(Request $request)
        // Set our Account SID and AuthToken
        $sid = 'AC123';
        $token = 'abcd';

        // A phone number you have previously validated with Twilio
        $phonenumber = '4151234567';

        // Instantiate a new Twilio Rest Client
        $client = new Services_Twilio($sid, $token, $version);

        // Initiate a new outbound call
        $call = $client->account->calls->create(
            $phonenumber, // The number of the phone initiating the call
            $user->phone, // The number of the phone receiving call
            ''.$user->phone.'&to='.\Request::get('to'), // The URL Twilio will request when the call is answered
            array("Method" => "GET")); //use the GET Method

    public function dial(Request $request) {
        $response = new \Services_Twilio_Twiml;
        $response->dial(\Request::get('to'), array(
            'callerId' => \Request::get('from')
        return \Response::make($response, '200')->header('Content-Type', 'text/xml');
        print $response;

This controller is responsible for first handling the request to call the users phone from the phone link. Then, to handle the GET request back from Twilio, which connects the user to the selected phone number.

One thing to note here. When initiating a new outbound call in the call method, I’m using the GET method. This was just to bypass the TokenMismatchException error that Laravel will throw back by default.

To test, you can visit http://{yourdomain}.com/dial?from=4151234567&to=4151234567, and you should see a page like this:


The shown XML is created through TwiML.

Finally, create the phone links…

<a href="/call.php?to=123-123-1234">123-123-1234</a>

Clicking on the link will will trigger the call function, starting a phone call to the user. And when the user picks up the phone, the Twilio will ping the /dial URL, read the provided XML, which then triggers the outbound phone call.

Done and done.


Now read this

Installing Laravel 5.1 on OSX with MAMP

1) Install Composer # If you don’t yet have composer installed, you will need to do that. You can test weather you have composer installed by simply typing in the composer command into mac’s terminal. You should see a list of available... Continue →