BrokerOffice Integrated Dialing Software

I am currently using BrokerOffice which is an insurance lead vendor and the difference between them and other lead providers is that they will send the lead directly to my current dialer as they receive it. It is literally a “real time” lead. Does Voicent support BrokerOffice? More information on BrokerOffice is available here: https://www.brokeroffice.com/

Yes we do! We currently have a handful of users actively using Voicent’s software with BrokerOffice, below is a list of our tools that fully work with BrokerOffice:

When setting up integration with BrokerOffice, please follow the below article:

  • Download and install a web server like: xampp.
  • Once installed, setup your Voicent CRM and give the CRM a password, you will need the password later on.
  • Write down the IP Address to your Voicent Gateway, you will need this later.
  • Copy the code below and change $voicent_gateway and $voicent_crm_password respectively.
  • Save the file as ‘brokeroffice.php’ in your C:\xampp\htdocs\ directory
  • Update BrokerOffice with the URL path for the webpage you just put on your webserver.
  • Lastly, make sure you create a custom contact category in Voicent CRM named ‘BrokerOffice’


< ?php

$voicent_gateway = 'localhost';
$voicent_crm_password = 'crm';

$lead_id = 'null';

if(isset($_POST['lead_id']))
$lead_id = $_POST['lead_id'];

$timestamp = 'null';

if(isset($_POST['timestamp']))
$timestamp = $_POST['timestamp'];

$first_name = 'null';

if(isset($_POST['first_name']))
$first_name = $_POST['first_name'];

$last_name = 'null';

if(isset($_POST['last_name']))
$last_name = $_POST['last_name'];

$email = 'null';

if(isset($_POST['email']))
$email = $_POST['email'];

$day_phone = 'null';

if(isset($_POST['day_phone']))
$day_phone = $_POST['day_phone'];

$evening_phone = 'null';

if(isset($_POST['evening_phone']))
$evening_phone = $_POST['evening_phone'];

$fax = 'null';

if(isset($_POST['fax']))
$fax = $_POST['fax'];

$street1 = 'null';

if(isset($_POST['street1']))
$street1 = $_POST['street1'];

$street2 = 'null';

if(isset($_POST['street2']))
$street2 = $_POST['street2'];

$city = 'null';

if(isset($_POST['city']))
$city = $_POST['city'];

$state = 'null';

if(isset($_POST['state']))
$state = $_POST['state'];

$zipcode = 'null';

if(isset($_POST['zipcode']))
$zipcode = $_POST['zipcode'];

$ip_address = 'null';

if(isset($_POST['ip_address']))
$ip_address = $_POST['ip_address'];

$currently_insured = 'null';

if(isset($_POST['currently_insured']))
$currently_insured = $_POST['currently_insured'];

$contact_time = 'null';

if(isset($_POST['contact_time']))
$contact_time = $_POST['contact_time'];

$medications = 'null';

if(isset($_POST['medications']))
$medications = $_POST['medications'];

$conditions = 'null';

if(isset($_POST['conditions']))
$conditions = $_POST['conditions'];

$applicant_dob = 'null';

if(isset($_POST['applicant_dob']))
$applicant_dob = $_POST['applicant_dob'];

$applicant_gender = 'null';

if(isset($_POST['applicant_gender']))
$applicant_gender = $_POST['applicant_gender'];

$applicant_heightFT = 'null';

if(isset($_POST['applicant_heightFT']))
$applicant_heightFT = $_POST['applicant_heightFT'];

$applicant_heightIN = 'null';

if(isset($_POST['applicant_heightIN']))
$applicant_heightIN = $_POST['applicant_heightIN'];

$applicant_smoker = 'null';

if(isset($_POST['applicant_smoker']))
$applicant_smoker = $_POST['applicant_smoker'];

$applicant_weight = 'null';

if(isset($_POST['applicant_weight']))
$applicant_weight = $_POST['applicant_weight'];

$spouse_dob = 'null';

if(isset($_POST['spouse_dob']))
$spouse_dob = $_POST['spouse_dob'];

$spouse_gender = 'null';

if(isset($_POST['spouse_gender']))
$spouse_gender = $_POST['spouse_gender'];

$spouse_heightFT = 'null';

if(isset($_POST['spouse_heightFT']))
$spouse_heightFT = $_POST['spouse_heightFT'];

$spouse_heightIN = 'null';

if(isset($_POST['spouse_heightIN']))
$spouse_heightIN = $_POST['spouse_heightIN'];

$spouse_smoker = 'null';

if(isset($_POST['spouse_smoker']))
$spouse_smoker = $_POST['spouse_smoker'];

$spouse_weight = 'null';

if(isset($_POST['spouse_weight']))
$spouse_weight = $_POST['spouse_weight'];

$child_1_dob = 'null';

if(isset($_POST['child_1_dob']))
$child_1_dob = $_POST['child_1_dob'];

$child_1_age = 'null';

if(isset($_POST['child_1_age']))
$child_1_age = $_POST['child_1_age'];

$child_1_gender = 'null';

if(isset($_POST['child_1_gender']))
$child_1_gender = $_POST['child_1_gender'];

$child_1_heightFT = 'null';

if(isset($_POST['child_1_heightFT']))
$child_1_heightFT = $_POST['child_1_heightFT'];

$child_1_heightIN = 'null';

if(isset($_POST['child_1_heightIN']))
$child_1_heightIN = $_POST['child_1_heightIN'];

$child_1_weight = 'null';

if(isset($_POST['child_1_weight']))
$child_1_weight = $_POST['child_1_weight'];

$child_2_dob = 'null';

if(isset($_POST['child_2_dob']))
$child_2_dob = $_POST['child_2_dob'];

$child_2_age = 'null';

if(isset($_POST['child_2_age']))
$child_2_age = $_POST['child_2_age'];

$child_2_gender = 'null';

if(isset($_POST['child_2_gender']))
$child_2_gender = $_POST['child_2_gender'];

$child_2_heightFT = 'null';

if(isset($_POST['child_2_heightFT']))
$child_2_heightFT = $_POST['child_2_heightFT'];

$child_2_heightIN = 'null';

if(isset($_POST['child_2_heightIN']))
$child_2_heightIN = $_POST['child_2_heightIN'];

$child_2_weight = 'null';

if(isset($_POST['child_2_weight']))
$child_2_weight = $_POST['child_2_weight'];

$child_3_dob = 'null';

if(isset($_POST['child_3_dob']))
$child_3_dob = $_POST['child_3_dob'];

$child_3_age = 'null';

if(isset($_POST['child_1_age']))
$child_3_age = $_POST['child_3_age'];

$child_3_gender = 'null';

if(isset($_POST['child_3_gender']))
$child_3_gender = $_POST['child_3_gender'];

$child_3_heightFT = 'null';

if(isset($_POST['child_3_heightFT']))
$child_3_heightFT = $_POST['child_3_heightFT'];

$child_3_heightIN = 'null';

if(isset($_POST['child_3_heightIN']))
$child_3_heightIN = $_POST['child_3_heightIN'];

$child_3_weight = 'null';

if(isset($_POST['child_3_weight']))
$child_3_weight = $_POST['child_3_weight'];

$child_4_dob = 'null';

if(isset($_POST['child_4_dob']))
$child_4_dob = $_POST['child_4_dob'];

$child_4_age = 'null';

if(isset($_POST['child_4_age']))
$child_4_age = $_POST['child_4_age'];

$child_4_gender = 'null';

if(isset($_POST['child_4_gender']))
$child_4_gender = $_POST['child_4_gender'];

$child_4_heightFT = 'null';

if(isset($_POST['child_4_heightFT']))
$child_4_heightFT = $_POST['child_4_heightFT'];

$child_4_heightIN = 'null';

if(isset($_POST['child_4_heightIN']))
$child_4_heightIN = $_POST['child_4_heightIN'];

$child_4_weight = 'null';

if(isset($_POST['child_4_weight']))
$child_4_weight = $_POST['child_4_weight'];

$child_5_dob = 'null';

if(isset($_POST['child_5_dob']))
$child_5_dob = $_POST['child_5_dob'];

$child_5_age = 'null';

if(isset($_POST['child_5_age']))
$child_5_age = $_POST['child_5_age'];

$child_5_gender = 'null';

if(isset($_POST['child_5_gender']))
$child_5_gender = $_POST['child_5_gender'];

$child_5_heightFT = 'null';

if(isset($_POST['child_5_heightFT']))
$child_5_heightFT = $_POST['child_5_heightFT'];

$child_5_heightIN = 'null';

if(isset($_POST['child_5_heightIN']))
$child_5_heightIN = $_POST['child_5_heightIN'];

$child_5_weight = 'null';

if(isset($_POST['child_5_weight']))
$child_5_weight = $_POST['child_5_weight'];

$child_6_dob = 'null';

if(isset($_POST['child_6_dob']))
$child_6_dob = $_POST['child_6_dob'];

$child_6_age = 'null';

if(isset($_POST['child_6_age']))
$child_6_age = $_POST['child_6_age'];

$child_6_gender = 'null';

if(isset($_POST['child_6_gender']))
$child_6_gender = $_POST['child_6_gender'];

$child_6_heightFT = 'null';

if(isset($_POST['child_6_heightFT']))
$child_6_heightFT = $_POST['child_6_heightFT'];

$child_6_heightIN = 'null';

if(isset($_POST['child_6_heightIN']))
$child_6_heightIN = $_POST['child_6_heightIN'];

$child_6_weight = 'null';

if(isset($_POST['child_6_weight']))
$child_6_weight = $_POST['child_6_weight'];

$child_1_dob = $child_1_dob . '|' . $child_2_dob . '|' . $child_3_dob . '|' . $child_4_dob . '|' . $child_5_dob . '|' . $child_6_dob;
$child_1_age = $child_1_age . '|' . $child_2_age . '|' . $child_3_age . '|' . $child_4_age . '|' . $child_5_age . '|' . $child_6_age;
$child_1_gender = $child_1_gender . '|' . $child_2_gender . '|' . $child_3_gender . '|' . $child_4_gender . '|' . $child_5_gender . '|' . $child_6_gender;
$child_1_heightFT = $child_1_heightFT . 'FT ' . $child_1_heightIN . 'IN|' . $child_2_heightFT . 'FT ' . $child_2_heightIN . 'IN|' . $child_3_heightFT . 'FT ' . $child_3_heightIN . 'IN|';
$child_1_heightFT .= $child_4_heightFT . 'FT ' . $child_4_heightIN . 'IN|' . $child_5_heightFT . 'FT ' . $child_5_heightIN . 'IN|' . $child_6_heightFT . 'FT ' . $child_6_heightIN . 'IN';
$child_1_weight = $child_1_weight . '|' . $child_2_weight . '|' . $child_3_weight . '|' . $child_4_weight . '|' . $child_5_weight . '|' . $child_6_weight;

$spouse_heightFT = $spouse_heightFT.'FT ' . $spouse_heightIN . 'IN';
$applicant_heightFT = $applicant_heightFT . 'FT ' . $applicant_heightIN . 'IN';

$url = 'http://' . $voicent_gateway . ':8155/vxcrm.jsp';
$fields = array('action' => 'add',
'passwd' => $voicent_crm_password,
'dcuser' => '0',
'first_name' => urlencode($first_name),
'last_name' => urlencode($last_name),
'email' => urlencode($email),
'home_phone' => urlencode($day_phone),
'work_phone' => urlencode($evening_phone),
'fax' => urlencode($fax),
'cf_1' => urlencode($currently_insured),
'cf_2' => urlencode($contact_time),
'cf_3' => urlencode($medications),
'cf_4' => urlencode($conditions),
'cf_5' => urlencode($applicant_dob),
'cf_6' => urlencode($applicant_gender),
'cf_7' => urlencode($applicant_heightFT),
'cf_8' => urlencode($applicant_smoker),
'cf_9' => urlencode($applicant_weight),
'cf_10' => urlencode($spouse_dob),
'cf_11' => urlencode($spouse_gender),
'cf_12' => urlencode($spouse_heightFT),
'cf_13' => urlencode($spouse_smoker),
'cf_14' => urlencode($spouse_weight),
'cf_15' => urlencode($ip_address),
'cf_16' => urlencode($child_1_age),
'cf_17' => urlencode($child_1_gender),
'cf_18' => urlencode($child_1_heightFT),
'cf_19' => urlencode($child_1_weight),
'cf_20' => urlencode($child_1_dob),
'customer_catname' => urlencode('BrokerOffice')
);

//url-ify the data for the POST
$fields_string = '';
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post
$result = curl_exec($ch);
echo $result;
//close connection
curl_close($ch);
?>

Posted in Predictive Dialer | Tagged , ,

Set up call disposition rules for predictive campaigns

In the upcoming 9.1.0 release, you can setup call disposition rules for predictive campaigns that started from Voicent CRM. Here are the steps:

Step 1. Define and Start a Predictive Campaign

From Voicent CRM, choose Find from the main menu. Fill in the necessary info to define your campaign call list. From the search result window that displays the customer list, select Start Campaign > Predictive Campaign….

Enter the necessary info as usual.

Step 2. Define Call Disposition Rules

Click the Call Disposition… button, from the dialog window, click the Add… button to invoke the following window:

call disposition rule

call disposition rule for predictive campaign

The example above show a rule that if the call notes contains “follow up”, then set the customer’s category to “Hot Lead”.

Posted in Call Center Software, Predictive Dialer |

Call Center CRM: Dynamic Campaigns

The upcoming release (9.1.0) contains support for dynamic campaigns. Comparing with normal campaigns, dynamic campaigns are Voicent CRM based outbound voice/sms/email campaigns that call list can be dynamically changed.

To start a dynamic campaign, follow these steps:

Step 1. Define call list

Open Voicent CRM, select Contact > Find Contact… from the program main menu. From the Quick Search dialog window, enter any criteria for the call list, such as a specific city name or area code.

Step 2. Start dynamic campaign

From the search result window, select Campaign > Start Campaign from the program main menu; then select the type of campaign (predictive campaign, voice broadcast campaign, sms/text message campaign, and email campaign) to run. The following is the voice broadcast campaign window:

Create dynamic voice broadcast campaign

Make sure to choose “this is an dynamic campaign”.

Step 3. Choose the phone number column

In the CRM customer record, there are different fields for customer’s phone number, such as mobile phone, home phone, work phone, and other phone. You can choose the search order in the phone column window. Click OK to start the campaign.

To see all the current dynamic campaigns, select Campaign main menu, then select Show campaigns.

CRM campaign list

Add new contact to campaign

Comparing with a static campaign, dynamic campaign will keep the campaign alive even it reaches the end of the call list. Once it reaches the end of the call list, dynamic campaign will enter into a waiting mode. As soon as new customers are added to CRM database, and if the new customers satisfy the original search criteria, these customers will be added to the call list, and the campaign will resume.

The above is executed automatically. So for example, when a new customer calls in, a new CRM record will be created automatically. This customer, if match the campaign search criteria, will be automatically added to the campaign.

Add new contact using the web interface

You can also add new customers to a dynamic campaign using HTTP POST. The is a useful feature, for example, a call or email can be automatically triggered after a customer fills in a web contact us form. The following is the CRM update URL:

http://(gateway host name or ip address):8155/vxcrm.jsp

The required parameters are:

action: add
passwd: this is the CRM web password defined on Voicent Gateway
user: this is the customer ID if you are using Voicent hosted service, or 0

The rest of the parameters corresponds to the fields in Voicent CRM for customer table. They are:

first_name, middle_name, last_name, home_phone, work_phone, work_phone_ext, cell_phone, other_phone,
email, email2, fax, business, job_title, customer_catid, do_not_call, do_not_email

For custom fields, use cf_1, cf_2, …, cf_20

It is also possible to use the display name of the custom field. What you must do is to replace the space with underscore in the display name. For example, if you set the first custom field (cf_1) to “Age Group“, the you can set the parameter name as Age_Group.

For customer category, you can also use the display name. For example, instead of setting customer_catid to 3, you can use customer_catname to “Priority Customer“.

For address, use the following:

home_street, home_city, home_state, home_zipcode, home_country, work_street, work_city, work_state, work_zipcode, work_country.

Please note that adding a new customer to the CRM database may trigger multiple dynamic campaigns. As long as the new customer record satisfy the campaign call list search criteria, the new customer will be added to the campaign.

Posted in Call Center Software, Predictive Dialer |