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); }
<?php header('Content-type: text/xml'); global $sugar_config; $record = "true"; $action = $sugar_config['site_url'] . "/index.php?entryPoint=twilio&action=callComplete&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 .= "&record_id={$record_id}&module_name={$module_name}";
<?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();
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 }