sub status call disposition

Discussions about new features or changes in existing features

Moderators: gerski, enjay, williamconley, Op3r, Staydog, gardo, mflorell, MJCoate, mcargile, Kumba, Michael_N

sub status call disposition

Postby saidmsl » Sat Apr 16, 2011 2:02 pm

Hi,

is it possible :
- group status dispositon with sub groups

ex :

- Declined Sale
a. out of campaign (hors cible)
b. not interested
c. call back in few months
d. ....

so when agent finish a call, they first have to select the main group (ie : DEC : declined sales) and then the list of sub group is displayed

idea :
use category
or add a new field in the table and change the logic in the frame
saidmsl
 
Posts: 67
Joined: Mon Mar 15, 2010 9:21 pm

Postby mflorell » Sat Apr 16, 2011 3:02 pm

That is not currently a feature, but it sounds like a good one to add as a feature request.

We do have a few clients doing this with their own web pages using the API to send the selected status to the agent interface.
mflorell
Site Admin
 
Posts: 18335
Joined: Wed Jun 07, 2006 2:45 pm
Location: Florida

thanks

Postby brett05 » Sun Apr 17, 2011 7:02 am

yes very good idea this one if it can be added to vicidial
Jasperreports & Queuemetrics & SugarCRM integration - Customization and Add-ons
Freepbx||Billing||Centos||Opensuse||Debian||Centos||Fedora||Sangoma||Diguim
brett05
 
Posts: 571
Joined: Sun May 24, 2009 5:48 pm
Location: tunisia

Postby saidmsl » Sun Apr 17, 2011 7:33 am

any best design idea for not breaking the actual system and keep it simple for use?
i can start developing on it
thinking of using drop box instead of a list (like it is actually) , but don't know if it's a easy for agent to use
saidmsl
 
Posts: 67
Joined: Mon Mar 15, 2010 9:21 pm

Postby mflorell » Sun Apr 17, 2011 7:52 am

One of our clients uses drop-downs and has 3 levels of statuses(for a total of 284 or so end statuses), another client uses a 2-page approach where the categories are on the first page and the sub statuses are on a second page and the agent only has to click once on each page. The 2-page approach is much faster than the pull-down approach.
mflorell
Site Admin
 
Posts: 18335
Joined: Wed Jun 07, 2006 2:45 pm
Location: Florida

Postby Trying » Sun Apr 17, 2011 8:04 am

This is a very useful feature request.
Vicibox Redux 3.1.14 64 bit
Asterisk: 1.4.39.2-vici | VERSION: 2.8-433a | BUILD: 140411-1434
Sangoma A102D/E1
Servers: 1 x Database; 1 x Web; 6 x Telephony; 2 x Archive
Outbound and blended ratio 3:1 with full voice recording
No additional software
Trying
 
Posts: 865
Joined: Sun Sep 09, 2007 8:41 am
Location: South Africa

thanks

Postby brett05 » Sun Apr 17, 2011 12:08 pm

yeahh i have loved thios features hope to see it a day in vicidial
Jasperreports & Queuemetrics & SugarCRM integration - Customization and Add-ons
Freepbx||Billing||Centos||Opensuse||Debian||Centos||Fedora||Sangoma||Diguim
brett05
 
Posts: 571
Joined: Sun May 24, 2009 5:48 pm
Location: tunisia

Re: sub status call disposition

Postby pradag » Sat Jul 13, 2013 10:44 am

Our solution, not the better but work.

Asterisk: 1.4.39.2-vici
Version: 2.6b0.5
SVN Version: 1904
DB Schema Version: 1336
astgiuclient: VERSION: 2.6-360c BUILD: 121206-0634

It is working also with newer version.

Edit file /srv/www/htdocs/agc/vicidial.php


Line 1304:

**********************************************************************************************************************************************************************************************************************************

##### grab the statuses that can be used for dispositioning by an agent
$stmt="SELECT status,status_name,scheduled_callback,selectable,category FROM vicidial_statuses WHERE status != 'NEW' order by category,status limit 500;";
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01010',$VD_login,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$VD_statuses_ct = mysql_num_rows($rslt);
$i=0;
while ($i < $VD_statuses_ct)
{
$row=mysql_fetch_row($rslt);
if ($TEST_all_statuses > 0) {$SELstatuses[$i]='Y';}
$statuses[$i] =$row[0];
$status_names[$i] =$row[1];
$CBstatuses[$i] =$row[2];
$SELstatuses[$i] =$row[3];
$category[$i] =$row[4];
$category[$i] = str_pad($category[$i], 8, "- ", STR_PAD_LEFT);
$VARstatuses = "$VARstatuses'$statuses[$i]',";
$VARstatusnames = "$VARstatusnames'$status_names[$i]',";
$VARSELstatuses = "$VARSELstatuses'$SELstatuses[$i]',";
$VARCBstatuses = "$VARCBstatuses'$CBstatuses[$i]',";
$VARcategory = "$VARcategory'$category[$i]',";
if ($CBstatuses[$i] == 'Y')
{$VARCBstatusesLIST .= " $statuses[$i]";}
if ($SELstatuses[$i] == 'Y')
{$VARSELstatuses_ct++;}
$i++;
}

##### grab the campaign-specific statuses that can be used for dispositioning by an agent
$stmt="SELECT status,status_name,scheduled_callback,selectable,category FROM vicidial_campaign_statuses WHERE status != 'NEW' and campaign_id='$VD_campaign' order by category,status limit 500;";
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01011',$VD_login,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$VD_statuses_camp = mysql_num_rows($rslt);
$j=0;
while ($j < $VD_statuses_camp)
{
$row=mysql_fetch_row($rslt);

$category[$i] =$row[4];
$category[$i] = str_pad($category[$i], 8, "- ", STR_PAD_LEFT);
$category_title[$i] = "CAT";
$category_sel[$i] = $row[3];
$category_cb[$i] = "N";
if ($category[$i] !== $category_b && $category_sel[$i] == 'Y') {
$VARstatuses = "$VARstatuses'$category_title[$i]',";
$VARstatusnames = "$VARstatusnames'$category[$i]',";
$VARSELstatuses = "$VARSELstatuses'$category_sel[$i]',";
$VARCBstatuses = "$VARCBstatuses'$category_cb[$i]',";
$VARcategory = "$VARcategory'$category[$i]',";
$category_b = $category[$i];
$VARSELstatuses_ct++;
$VD_statuses_camp++;
$i++;

}

$statuses[$i] =$row[0];
$status_names[$i] =$row[1];
$CBstatuses[$i] =$row[2];
$SELstatuses[$i] =$row[3];
$category[$i] =$row[4];
$category[$i] = str_pad($category[$i], 8, "- ", STR_PAD_LEFT);
if ($TEST_all_statuses > 0) {$SELstatuses[$i]='Y';}
$VARstatuses = "$VARstatuses'$statuses[$i]',";
$VARstatusnames = "$VARstatusnames'$status_names[$i]',";
$VARSELstatuses = "$VARSELstatuses'$SELstatuses[$i]',";
$VARCBstatuses = "$VARCBstatuses'$CBstatuses[$i]',";
$VARcategory = "$VARcategory'$category[$i]',";
if ($CBstatuses[$i] == 'Y')
{$VARCBstatusesLIST .= " $statuses[$i]";}
if ($SELstatuses[$i] == 'Y')
{$VARSELstatuses_ct++;}
$i++;
$j++;
}
$VD_statuses_ct = ($VD_statuses_ct+$VD_statuses_camp);
$VARstatuses = substr("$VARstatuses", 0, -1);
$VARstatusnames = substr("$VARstatusnames", 0, -1);
$VARSELstatuses = substr("$VARSELstatuses", 0, -1);
$VARCBstatuses = substr("$VARCBstatuses", 0, -1);
$VARcategory = substr("$VARcategory", 0, -1);
$VARCBstatusesLIST .= " ";

**********************************************************************************************************************************************************************************************************************************

Edit line 3224:

**********************************************************************************************************************************************************************************************************************************

VARCBstatuses = new Array(<?php echo $VARCBstatuses ?>);
VARcategory = new Array(<?php echo $VARcategory ?>);
var VARCBstatusesLIST = '<?php echo $VARCBstatusesLIST ?>';


**********************************************************************************************************************************************************************************************************************************

Edit line 9206:

**********************************************************************************************************************************************************************************************************************************



// Generate the Call Disposition Chooser panel
function DispoSelectContent_create(taskDSgrp,taskDSstage)
{
if (disable_dispo_screen > 0)
{
document.vicidial_form.DispoSelection.value = disable_dispo_status;
DispoSelect_submit();
}
else
{
if (customer_3way_hangup_dispo_message.length > 1)
{
document.getElementById("Dispo3wayMessage").innerHTML = "<br /><b><font color=\"red\" size=\"3\">" + customer_3way_hangup_dispo_message + "</font></b><br />";
}
if (APIManualDialQueue > 0)
{
document.getElementById("DispoManualQueueMessage").innerHTML = "<br /><b><font color=\"red\" size=\"3\">Manual Dial Queue Calls Waiting: " + APIManualDialQueue + "</font></b><br />";
}
if (per_call_notes == 'ENABLED')
{
var test_notes = document.vicidial_form.call_notes_dispo.value;
if (test_notes.length > 0)
{document.vicidial_form.call_notes.value = document.vicidial_form.call_notes_dispo.value}
document.getElementById("PerCallNotesContent").innerHTML = "<br /><b><font size=\"3\">Call Notes: </font></b><br /><textarea name=\"call_notes_dispo\" id=\"call_notes_dispo\" rows=\"2\" cols=\"100\" class=\"cust_form_text\" value=\"\">" + document.vicidial_form.call_notes.value + "</textarea>";
}
else
{
document.getElementById("PerCallNotesContent").innerHTML = "<input type=\"hidden\" name=\"call_notes_dispo\" id=\"call_notes_dispo\" value=\"\" />";
}

HidEGenDerPulldown();
AgentDispoing = 1;
var CBflag = '';
var CATflag = 0;
var SPANflag = 0;
var LINEnum = 0;
var VD_statuses_ct_half = parseInt(VARSELstatuses_ct / 2);
var dispo_HTML = "<table cellpadding=\"5\" cellspacing=\"5\" width=\"1000px\"><tr><td colspan=\"2\"><b> CALL DISPOSITION</b></td></tr><tr><td bgcolor=\"#F5F6CE\" height=\"500px\" width=\"300px\" valign=\"top\"><font class=\"log_text\"><span id=\"DispoSelectA\">";
var loop_ct = 0;
var print_ct = 0;
if (hide_dispo_list < 1)
{
while (loop_ct < VD_statuses_ct)
{
if (VARSELstatuses[loop_ct] == 'Y')
{
if (VARCBstatuses[loop_ct] == 'Y')
{CBflag = '*';}
else
{CBflag = '';}
if (VARstatuses[loop_ct] == 'CAT')
{
if (CATflag != 1)
{
CATflag = 1;
}
CBflag = '***';
if (VARstatusnames[loop_ct] == taskDSgrp || VARstatusnames[loop_ct] == taskDSstage)
{
dispo_HTML = dispo_HTML + "<font size=\"4\" style=\"BACKGROUND-COLOR: #BBFF00\"><b><a href=\"#\" onclick=\"DispoSelectContent_create('" + VARstatuses[loop_ct] + "','ReSET');return false;\">" + CBflag + " - " + VARstatusnames[loop_ct] + " - " + CBflag + "</a> " + "</b></font><br /><br />";
CATflag = 2;
SPANflag = 1;
}
else
{
dispo_HTML = dispo_HTML + "<font size=\"4\" style=\"BACKGROUND-COLOR: #AAAAAA\"><b><a href=\"#\" onclick=\"DispoSelectContent_create('" + VARstatusnames[loop_ct] + "','ReSET');return false;\">" + CBflag + " - " + VARstatusnames[loop_ct] + " - " + CBflag + "</a> " + "</b></font><br /><br />";
}
}
if (CATflag > 1 && VARstatuses[loop_ct] !== 'CAT')
{
if (taskDSgrp == VARstatuses[loop_ct])
{
dispo_HTML = dispo_HTML + "<font size=\"3\" style=\"BACKGROUND-COLOR: #66BBEE\"><b><a href=\"#\" onclick=\"DispoSelect_submit();return false;\">" + VARstatuses[loop_ct] + " - " + VARstatusnames[loop_ct] + "</a> " + CBflag + "</b></font><br /><br />";
}
else if (taskDSgrp == "")
{
// dispo_HTML = dispo_HTML + "<font size=\"3\" style=\"BACKGROUND-COLOR: #FFFFCC\"><b><a href=\"#\" onclick=\"DispoSelect_submit();return false;\">" + VARstatuses[loop_ct] + " - " + VARstatusnames[loop_ct] + "</a> " + CBflag + "</b></font><br /><br />";
}
else
{
dispo_HTML = dispo_HTML + "<a href=\"#\" onclick=\"DispoSelectContent_create('" + VARstatuses[loop_ct] + "','" + VARcategory[loop_ct] + "');return false;\">" + VARstatuses[loop_ct] + " - " + VARstatusnames[loop_ct] + "</a> " + CBflag + "<br /><br />";
}
LINEnum++;
}
if (CATflag < 1)
{
if (taskDSgrp == VARstatuses[loop_ct])
{
dispo_HTML = dispo_HTML + "<font size=\"3\" style=\"BACKGROUND-COLOR: #66BBEE\"><b><a href=\"#\" onclick=\"DispoSelect_submit();return false;\">" + VARstatuses[loop_ct] + " - " + VARstatusnames[loop_ct] + "</a> " + CBflag + "</b></font><br /><br />";
}
else
{
dispo_HTML = dispo_HTML + "<a href=\"#\" onclick=\"DispoSelectContent_create('" + VARstatuses[loop_ct] + "','ADD');return false;\">" + VARstatuses[loop_ct] + " - " + VARstatusnames[loop_ct] + "</a> " + CBflag + "<br /><br />";
}
}


// if (print_ct == VD_statuses_ct_half)
// if (print_ct % 2 != 0)
if (SPANflag > 0 || LINEnum > 15)
{
// dispo_HTML = dispo_HTML + "</span></font></td><td bgcolor=\"#99FF99\" height=\"500px\" width=\"300px\" valign=\"top\"><font class=\"log_text\"><span id=\"DispoSelectB\">";
dispo_HTML = dispo_HTML + "</span></font></td><td bgcolor=\"#F5F6CE\" height=\"500px\" width=\"300px\" valign=\"top\"><font class=\"log_text\"><span id=\"DispoSelectB\">";
SPANflag = 0;
LINEnum = 0;
}
print_ct++;
}



loop_ct++;
}
}
else
{
dispo_HTML = dispo_HTML + "Disposition Status List Hidden<br /><br />";
}
dispo_HTML = dispo_HTML + "</span></font></td></tr></table>";

if (taskDSstage == 'ReSET') {document.vicidial_form.DispoSelection.value = '';}
else {document.vicidial_form.DispoSelection.value = taskDSgrp;}

document.getElementById("DispoSelectContent").innerHTML = dispo_HTML;
if (focus_blur_enabled==1)
{
document.inert_form.inert_button.focus();
document.inert_form.inert_button.blur();
}
if (my_callback_option == 'CHECKED')
{document.vicidial_form.CallBackOnlyMe.checked=true;}
}
}

**********************************************************************************************************************************************************************************************************************************

Good luck.
pradag
 
Posts: 4
Joined: Thu May 31, 2012 6:29 am

Re: sub status call disposition

Postby Trying » Sat Jul 13, 2013 11:02 am

Thank you very much for posting this. Did you also add it to the issue tracker for possible inclusion into Vicidial?
Vicibox Redux 3.1.14 64 bit
Asterisk: 1.4.39.2-vici | VERSION: 2.8-433a | BUILD: 140411-1434
Sangoma A102D/E1
Servers: 1 x Database; 1 x Web; 6 x Telephony; 2 x Archive
Outbound and blended ratio 3:1 with full voice recording
No additional software
Trying
 
Posts: 865
Joined: Sun Sep 09, 2007 8:41 am
Location: South Africa

Re: sub status call disposition

Postby pradag » Mon Jul 15, 2013 5:32 am

Sorry but I am new to this.

How can I add to issue tracker?

Thanks in advance
Best regards
pradag
 
Posts: 4
Joined: Thu May 31, 2012 6:29 am

Re: sub status call disposition

Postby Trying » Mon Jul 15, 2013 5:44 am

Here is the link: http://www.vicidial.org/VICIDIALmantis

It is also at the top of this page. "Vicidial Issue Tracker". On there go to "Report Issue" and report it as a new feature. Please remember to include everything you can to make it as easy for Matt and his team as possible.
Vicibox Redux 3.1.14 64 bit
Asterisk: 1.4.39.2-vici | VERSION: 2.8-433a | BUILD: 140411-1434
Sangoma A102D/E1
Servers: 1 x Database; 1 x Web; 6 x Telephony; 2 x Archive
Outbound and blended ratio 3:1 with full voice recording
No additional software
Trying
 
Posts: 865
Joined: Sun Sep 09, 2007 8:41 am
Location: South Africa

Re: sub status call disposition

Postby pradag » Mon Jul 15, 2013 7:24 am

OK, many thanks
pradag
 
Posts: 4
Joined: Thu May 31, 2012 6:29 am

Re: sub status call disposition

Postby gservices » Tue Dec 22, 2015 6:13 am

Hello,
Thank for all pradag

But I have a questions about sub status call disposition
How we can implement the vicidial status categories ID on report columns.
Because with this new script we have show the VICIDIAL STATUS CATEGORIES in agent Call Disposition and we want to print the vsc_id from the database table vicidial_status_categories at the /vicidial/call_report_export.php

That it sounds like a good one to add as a feature request
Vicibox_v.6.0.x86_64-6.0.4| Vicidial 2.12b0.5 | SVN :2553 | Asterisk 1.8.32.3| 4 Servers | WORKSTATION Z400
ViciBox.x86_64-4.0.2.iso | Vicidial 2.6-393a Build 130124-1721 | Asterisk 1.4.44 | Single Server | Intel(R) Core(TM)2 Duo
gservices
 
Posts: 54
Joined: Mon Mar 11, 2013 5:31 am

Re: sub status call disposition

Postby Natashawilliams » Sat Sep 24, 2016 1:32 am

Ok thank you so much
Natashawilliams
 
Posts: 4
Joined: Thu Jun 16, 2016 2:16 am
Location: India

Re: sub status call disposition

Postby ctenabluestar » Thu Feb 09, 2017 7:56 pm

Hi guys,

i would appreciate if you could give me an idea or advice what could i do with the following:

Starting today we are offering 4 different products within the same call.
When you are offering only 1 product or service, call dispositions are simply the different scenarios your offering could be through, but now that i have 4 products what could i do for not losing any information? i mean as having 4 call dispositions at the end of each call.

Thanks guys!
ctenabluestar
 
Posts: 1
Joined: Thu Feb 09, 2017 7:21 pm

Re: sub status call disposition

Postby williamconley » Thu Feb 09, 2017 10:29 pm

Disposition would be "sale" or "No sale" (NI for instance).

Use a different field for what was sold.

Perhaps even a custom field (or several of them). A text field or multiselect field would be good. Or a field for each item being sold.

Better yet would be to use an iFrame to store your sales in a CRM (for customer service) which allows much more flexibility. Vicidial is not a CRM.
Vicidial Installation and Repair, plus Hosting and Colocation
Newest Product: Vicidial Agent Only Beep - Beta
http://www.PoundTeam.com # 352-269-0000 # +44(203) 769-2294
williamconley
 
Posts: 20018
Joined: Wed Oct 31, 2007 4:17 pm
Location: Davenport, FL (By Disney!)


Return to Features

Who is online

Users browsing this forum: No registered users and 22 guests