function loadTwilioClient()
{
    global $current_user, $sugar_config;
    //var_dump($current_user);die();
    $agentId = md5($current_user->id);
    $twilio_connector = new ext_rest_twilio();
    $accountSid = $twilio_connector->getProperty('twilio_account_id');
    $authToken = $twilio_connector->getProperty('twilio_auth_token');
    $appSid = $twilio_connector->getProperty('twilio_app_id');
    $capability = new Services_Twilio_Capability($accountSid, $authToken);
    $capability->allowClientOutgoing($appSid);
    $capability->allowClientIncoming($agentId);
    $token = $capability->generateToken();
    $twilio_client_tpl = "custom/include/Twilio/twilio_client.tpl";
    $smarty = new Sugar_Smarty();
    $smarty->assign("TWILIO_TOKEN", $token);
    $smarty->assign("SITE_URL", $sugar_config['site_url']);
    echo $smarty->fetch($twilio_client_tpl);
}
コード例 #2
0
<?php

header('Content-type: text/xml');
global $sugar_config;
$record = "true";
$action = $sugar_config['site_url'] . "/index.php?entryPoint=twilio&amp;action=callComplete&amp;to_pdf=true";
require 'custom/modules/Connectors/connectors/sources/ext/rest/twilio/twilio.php';
$twilio_connector = new ext_rest_twilio();
$callerId = $twilio_connector->getProperty('twilio_phone_number');
// put your default Twilio Client name here, for when a phone number isn't given
$clients_list = array();
$clients_list_file_path = 'custom/include/Twilio/clients_list.php';
if (file_exists($clients_list_file_path)) {
    include $clients_list_file_path;
}
$number = array_keys($clients_list);
//$number = array("admin","brian");
// $number = array();
// get the phone number from the page request parameters, if given
if (isset($_REQUEST['PhoneNumber'])) {
    $number[] = htmlspecialchars($_REQUEST['PhoneNumber']);
}
_ppl($number);
$record_id = '';
$module_name = '';
if (isset($_REQUEST['record_id']) && isset($_REQUEST['module_name'])) {
    $record_id = $_REQUEST['record_id'];
    $module_name = $_REQUEST['module_name'];
}
if (!empty($record_id) && !empty($module_name)) {
    $action .= "&amp;record_id={$record_id}&amp;module_name={$module_name}";
コード例 #3
0
<?php

global $current_user, $sugar_config;
$current_user->retrieve($_REQUEST['user_id']);
require 'custom/include/Twilio/Services/Twilio.php';
$twilio_connector = new ext_rest_twilio();
$sid = $twilio_connector->getProperty('twilio_account_id');
$token = $twilio_connector->getProperty('twilio_auth_token');
//$appSid     = $twilio_connector->getProperty('twilio_app_id');
// Sugar user's Twilio phone number
$userPublic = "14083530128";
// Sugar user's real phone number
$userPrivate = $current_user->phone_other;
// the end recipient (the Sugar contact)
$callRecipient = $_REQUEST['phone_number'];
$client = new Services_Twilio($sid, $token);
$call = $client->account->calls->create($userPublic, $userPrivate, $sugar_config['site_url'] . "/index.php?entryPoint=twilio_connectcall&callRecipient={$callRecipient}");
//var_dump($call);
//echo $_REQUEST['user_id'];
//die();
コード例 #4
0
function callComplete()
{
    global $timedate, $current_user;
    $current_user = new User();
    $current_user->retrieve('1');
    //	$log = true;
    //
    //	if($log) {
    //		$fp = fopen('callcomplete.txt', 'a+');
    //		$callResponse = print_r($_REQUEST,true);
    //		fwrite($fp, $callResponse);
    //		fclose($fp);
    //	}
    $twilio_connector = new ext_rest_twilio();
    $sid = $twilio_connector->getProperty('twilio_account_id');
    $token = $twilio_connector->getProperty('twilio_auth_token');
    $client = new Services_Twilio($sid, $token);
    $call = new Call();
    //_ppl('request begin');
    //_ppl($_REQUEST);
    //_ppl('request end');
    $record_id = '';
    $module_name = '';
    $record_id = isset($_REQUEST['record_id']) ? $_REQUEST['record_id'] : '';
    $module_name = isset($_REQUEST['module_name']) ? $_REQUEST['module_name'] : '';
    $call_sid = $_REQUEST['DialCallSid'];
    $call->direction = "Outbound";
    if (strpos(strtolower($_REQUEST['From']), 'client:') === false) {
        //Call in or using call conection
        if (strpos(strtolower($_REQUEST['Direction']), 'inbound') !== false) {
            //this is inbound call
            $call_sid = $_REQUEST['CallSid'];
            $call->direction = "Inbound";
        }
    }
    $call_record = $client->account->calls->get($call_sid);
    //    if(is_array($call_record->recordings)){
    //        _ppl('array');
    //    }else{
    //        _ppl('not array');
    //    }
    //_ppl($call_record);
    //    foreach($call_record->recordings as $record_obj){
    //        $call->description= "Recording URL: ". $record_obj->RecordingUrl;
    //        //break;
    //        _ppl('recording url:' . $record_obj->RecordingUrl);
    //        _ppl('recording url2:' . $record_obj->recordingurl);
    //    }
    //$RecordingUrl
    _ppl('from: ' . $call_record->from);
    _ppl('to: ' . $call_record->to);
    _ppl('Direction: ' . $call_record->direction);
    if ($call->direction == 'Inbound') {
        $call->name = "Call from {$call_record->from}";
        /*
         * currently, we only support looking up the phone number in E.164 number formatting, see following URL for detail
         * http://www.twilio.com/help/faq/phone-numbers/how-do-i-format-phone-numbers-to-work-internationally
         */
        $matched_obj = lookup_inbound_obj($call_record->from);
        $module_name = isset($matched_obj['module_name']) ? $matched_obj['module_name'] : '';
        $record_id = isset($matched_obj['record_id']) ? $matched_obj['record_id'] : '';
    } else {
        if (strpos(strtolower($_REQUEST['From']), 'client:') === false) {
            $call->name = "Call to {$call_record->to} (using connection)";
        } else {
            $call->name = "Call to {$call_record->to}";
        }
    }
    $start_time = new DateTime(isset($call_record->starttime) ? $call_record->starttime : '');
    $end_time = new DateTime(isset($call_record->endtime) ? $call_record->endtime : '');
    $timezone = new DateTimeZone("UTC");
    $start_time->setTimezone($timezone);
    $end_time->setTimezone($timezone);
    $call->date_start = $start_time->format($timedate->get_db_date_time_format());
    $call->date_end = $end_time->format($timedate->get_db_date_time_format());
    _ppl('duration: ' . $call_record->duration);
    $duration_hours = floor($call_record->duration / 3600);
    $duration_minutes = $call_record->duration / 60 % 60;
    $call->duration_hours = $duration_hours;
    if ($duration_minutes > 0 && $duration_minutes <= 15) {
        $call->duration_minutes = 15;
    } elseif ($duration_minutes > 15 && $duration_minutes <= 30) {
        $call->duration_minutes = 30;
    } elseif ($duration_minutes > 30 && $duration_minutes <= 45) {
        $call->duration_minutes = 45;
    } else {
        $call->duration_minutes = 0;
    }
    $call->status = "Held";
    $call->team_id = '1';
    $call->assigned_user_id = '1';
    $call->parent_type = 'Contacts';
    $call->parent_id = $record_id;
    if ($module_name == 'Contacts') {
        $call->contact_id = $record_id;
        $contact_bean = new Contact();
        $contact_bean->retrieve($record_id);
        $call->parent_type = 'Accounts';
        $call->parent_id = $contact_bean->account_id;
    }
    if ($module_name == 'Accounts') {
        $call->parent_id = $record_id;
        $call->parent_type = 'Accounts';
    }
    $call->save();
    if ($module_name == 'Contacts') {
        $call->load_relationship("contacts");
        $call->contacts->add($record_id);
    } else {
        if ($module_name == 'Leads') {
            $call->load_relationship("leads");
            $call->leads->add($record_id);
        } else {
            if ($module_name == 'Users') {
                $call->load_relationship("users");
                $call->users->add($record_id);
            }
        }
    }
    header('Content-type: text/xml');
    ?>
<Response>
<Hangup/> 
</Response>
<?php 
}