d. Dialers v5

 

 

Dialers

 

Menu for defining dialer’s campaigns.

The dialers can generate direct dialing campaigns under various channels and in different forms , among which we are:

  • VOICE

  • SMS

 

SMS

 

Regarding SMS, we have a unique type of dialer that will only have a schedule assosiated as well as an only dialer device.

It will associate a time range for all campaigns, that will establish the time and day on which they run in order not to make actions at improper schedules.

 

 

Name: Name that the dialer will have.

Schedule: Schedule a date in which it is desired that the dialer works. As an example you can put the dialer to work from Monday to Friday from 13hs to 18hs in which the dialer will start dialing when it is on schedule.

Note: It is important to know that in order to make the dialer to start working it must be enabled previously.

 

Enabled: Indicates the status in wich the dialer is, if it is active or not.

DNCR: Allows to enable the registry check in white lists for telephone numbers not to call or send SMS

Dial string: In base of the api that sends sms it can be configured with the following options:

  • Dinstar - DinstarWeb:  You enter from wich to wich channel, e.g: (0.3) it means that sms will be sent for 4 channels recursively (0-1-2-3-0...).

  • Qualirt: It does not take dial string.

  • Twillio: It does not take dial string.

Time between messages: Allows to set the time between message and message in ms.

 Voice

 

 

Variables to configure:

  • Type of Dialer: PowerDialer, VoiceBrodCast, Progressive (with assignation per agent), Preview (Progressive without asignation of agent), Predictive (50 agents minimum).

    For any dialer of telephony points are needed like dial string (which is usuallyis the output device calls), and specyfic context to indicate the behavior of the dialer. Alsoit's important to define certain amount of chanels coherent with the physical available of equipment.

    Notes:

    The voice dialers always has to have digital lines as own signaling (to indicates the begining and the end of the call).
    The provider of telephony yo use must have the answers of cause of call (to start when he could  not make the call ).

 

  • Name: It is the name of the dialers.  When entring a  name , automatically a new campaing is created in the system with that name and depends the type of Dialer if campaingn it will be incoming or outgoing. For PowerDialer and Predictive it will create a Incoming Campaign, for Progressive and Preview one Outgong Campaign and for VoiceBroadCast it will not create any campaing, can use any name.


  • Schedule: Schedule a date in which it is desired that the dialer works. As an example you can put the dialer to work from Monday to Friday from 13hs to 18hs in which the dialer will start dialing when it is on schedule.

    Note: It is important to know that in order to make the dialer to start working it must be enabled previously.

     

  • Enabled Indicates the status in wich the dialer is, if it is active or not.

  • Dial String:  It what we use to make the call, example : DAHDI/G1/ o SIP/CARRIER/.

  • Context: Context which will enter the  dialer, for VoiceBroadCast, PowerDialer, Predictive is the context who enter in a connected call with a customer and match a workflow; in Progressive is the context by the call is ejecuted to the client once connected with the agent. Context there are  already preensambled each with the names of dialers.

  • Maximum: Amount of calls that are made simultaneously.

  • Overdial:  It select a percentage of overdial that wolud have the dialer.  The possible values are MIN,0%,5%,10%,15%,20%,25%,....,100%,MAX, MIN and MAX which is the lower and the highest possible value. The idea is that when, for example I take 100 chanels to dialer and in the server can not handle many request at the same time, it's possible to lower the percentage of overdial, as this slows the dialer.

  • Maximum time: Maximum time of wait of call one destination or in Progressive to try to connect to an agent.

  • Rety: Maximum amount of calls for number in the base in Progressive to try to connect with the agent.

  • Sound: Sound or concatatenation of sounds (with &) that pass throw to the Workflow, useful for VoiceBrodCast.

  • Callerid: Number leaving with calls.

  • CallerPres: For ISDN if show or not the Callerid where the provider supports.

  • AMD: If it's active, the detection of the Answering Machine, this variable arrives ${am} in 1 or 0 and may use  in the flow activity to use to cut amd calls of voicemail.

  • DNCR: Do not call registry, allows verify whether blocked the registry.

  • Variables: All that you want to pass throw to the workflow,to level of global dialer.


Dialers Process

 

 

The system starts according to the created scheduler.

When starting, the system creates a task for each Dialer defined in the system, the same start and end according to the scheduler they have. All values can be seen on the Monitoring Dashboard

in real time for that dialer.

In the first information box we can see on the left side of the screen, among other things, inside is the Contactability, it indicates the percentage of calls answered of the campaign. We can see this property in the Dashboard or in the List Management.

Two circular dashboards can be seen that indicates the amount of processed and not processed calls as well as the number of agents on their respective states, also a there is a real time graph that shows  the total of active calls, busy agents and calls that are being dialed.

Note:

In some occasions it is possible to see on the graph that the amount of busy agents is greater than the total as well as viewing the dialing with a negative value. This happens when the campaign makes manual calls or when it has incomming calls that are not from the dialer, anyways the graphs show the evolution of the dialer.

It is possible at any time to stop or turn on again the campaign manually from the play or stop button on the upper side of the screen. It is possible to upload new lists or black list registries, it is also possible to download the lists of the dialer by pressing the lists button located on the right upper corner of the screen.

The task is executed, the task is the responsible for making the calls obtained from the calls spool (calls_spool table), this are obtained according to the dialer type and are dialed according to the dial string of the same (it can be by TDM or VOIP), note that it will only work on Digital lines, VOIP or Analogics with Disconnect Supervision (inverted polarity). Once the call is executed, its status will change. Calls are only obtained from the active list.

 

SPOOL

 

CAMPAIGN: Name of the dialer for the contact.

DESTINATION: Contact telephone number.

STATUS: Status of the contact

  • STATUS: 0 - PROCESSING (it is dialing)

  • STATUS: 1 - TO PROCESS (it is on the spool ready to be processed, are the ones taken by the dialer)

  • STATUS: 3 - BLOCKED (bloqued by DNCR, it will be deleted from the spool at the daily maintenance job)

DATA: Values given to the workflow to be able to use.

ALTERNATIVES: Alternative numbers for the contact separated by :

RETRIES: 0 initially, > 0 amount of retries for that number.

CONTACT: Auto-generated to differentiate the contact.

DIALERBASE: Name of the uploaded dialers base, it has name plus the uploaded date.

PRIORITY: 9999. to 1, initially all are inserted with a high number, but by reasons of the calls scheduler of the dialer, calls will be inserted with 1 to be executed immediately while the dialer is active. If it is required to give priorities to others, it is possible to insert them with intermediate values.

AGENTPHONE: For Progressive dialer, to which agent goes each contact.

The calls are deleted from the spool if they are answered or exceed the amount of retries defined by the dialer.

 

If the system could process the call, it is deleted from the table, if it was occupied or no answer or if there where no channels, the call is retried, increasing retry by 1, this is to not be taken immediately and others will be processed before retrying it.

It is important not to overlap a lot of channels, if we have 30 channels and have 2 campaigns at the same time with a maximum of 20 channels, it is likely to result in dialer errors allowing to repeat some calls. Also when having more than 1 campaign, for a better performance it is a good idea to leave 1 pivot channel, since being an asynchronous system based on events, it is possible that at some millisecond it is dialing on other campaigns and the system does not have info that it is really active occupying an channel, therefore in border cases it is possible to jump a campaign, anyways if it jumps and was not possible for the system to create a channel becase there are not, this will be processed later when the existent in the spool are completed as it will have one more retry.

Within the callerid (name) it is the VoiceBroadCast:Campaign:Dial number:List:Retry, this allows the tracking the system events to know how many calls are active by campaign and allows to re-insert calls in the spool that could not reach destination.

It's importanr the concept of Respool and Reschedule, the first allows to put you back a call almost be attended to continue dialer, and the second schedule a number to call later.

List Management 

 

 

On this tab you can see and manage the uploaded lists for an specific dialer. 

Initially on the upper side of the screen you can see the dialer status and if it is on date or not (it is established on the Schedule field on the campaign creation), as well as stop or start the dialer by using the stop or start button.

The system allows to have multiple lists for a campaign, when uploading the lists they will be inserted on that order, the first for a campaign it is marked as active, then the rest as inactive.

The supervisor can decide from the dialers dashboard, which list wants to be active, the dashboard shows the lists in the system the amount of registries that is left for each one, allowing to activate or deactivate the same and the amount of registries per agent. To visualize the amount of registries for each agent, the agents icon must be pressed on the desired list. There you can see a dasboard with the agents of that list allowing to reasign contacts from agent to agent.

To reasign contacts from an agent to other you must press the Reassing button on the agents lists where the next image will appear.

 

Inside the information that the supervisor can see, in the list of upload bases is the Contactability, percentage of answered calls. If you want to see ir you have to pass above the mouse of the property.

 

 

Then select the desired agent and click on the reasign button to complete the action.

It can exist N active lists at the same moment and each has its percentage which must sum 100% in total, this percentage tells us how many contacts will get from the list to be able to mix the lists. As an example if you have two lists with 10 contacts each, if both have 50% of priority, it will execute 5 contacts from one list and 5 contacts from the other before continuing dialing.

To set the percentage for each list you must active the desired lists and then by clicking the percentage the next window will appear.

 

 

It is important to know that the scheduled calls are always priority, no matter what list is executing.

Once a list has ended and has 0 registries, this will be deleted from the system, an email is sent (AlertMail Configuration) noticing that the base has ended. We have 2 cases; the first one is that it does not exist another active list, if this happen an inactive list is active with 100% active (in the order that it was uploaded), if there are active lists, the percentage of the list that was in 0 it is added to the first uploaded list to be able to keep working on a 100% model.

It is possible to upload a Do not call registry (DNCR). This adds the uploaded numbers to the black list in order no to be able to call them. To clear the DNCR for the selected campaign you must click the red button on the right lower section of the screen.

 

Note: The dialers will only select contacts from the active lists.

 

Contacts upload

 

CSV file that has: campaign, telephon number, status, data. The correct format is MSDOS CSV (separated by ;  and line break \n)

The dial order is the excel order, the only thing that varies is that the uploaded ones go to the end, while the ones with high priority or scheduled will go first.

 

Base.csv (In this case a Progressive Dialers)

campaign

telephone

data

alternative numbers

priority

agentphone(Progressive)

campaign

telephone

data

alternative numbers

priority

agentphone(Progressive)

test1

098344484

variable1=valor1:variable2=valor2

099111111:099121212

99

1001

 

Example:

Base.csv
test1;098344484;var1=val1:var2=val2;099124484:099111111;99;1001

 

OBSERVATION

  • The priority is the priority that will have the call in the queue, the highest priority is 1 and the lowest is 9999, if we want a call is placed before any other call we give priority 1, if in turn have several contacts with the same priority it does it is take the chance respecting priority levels.

  • Fields like alternative phones and data are not obligatory, and if you have more than one variable is separated with a : between them. With the rest of the attributes necessary to load the base is separated ; as usual, but within these fields are separeted with two points, that's the difference.

VoiceBroadCast

 

Introduction

The VoiceBroadCast system is to make auto dialed campaigns. A database with phone numbers is uploaded  and this are sent to an IVR workflow which can be used to reproduce notifications, audios, dynamically or statically. You can also perform automatic static or dynamic surveys, as well as according to an option, the client can be redirected to a campaign.

In this case the important thing is to set the number of channels as the VoiceBroadCast use every possible channel most of the time.

 

Steps

  1. The dialer obtains the number of calls to make, if the amount is 0 it waits and asks again, else it obtains according to:

  1.  

    1. Number of available channels (Maximum - Used).

  2. The dialer gets the contacts according to the amount and the next rules:

    1. Asks for scheduled contacts that are in first place.

    2. Asks contacts active lists orderer by priority and ascending retries (depending on the percentage each one.

  3. If DNCR (do not call registry) is active, it only let to make the call if the number is not on the black list.

  4. All variables are sent to the workflows either campaign or contact.

  5. The contact registry of the dialer is sent with retry + 1 to the business logic, this allows to create the Respooling Logic (to reinsert the contact for not being able to be reached with its alternative).

  6. If the amount of retries for a number is exceeded, then if alternative numbers exists it obtains the first and inserts it as main number, then the rest of the numbers are left as alternatives and the process starts again.

  7. The call is made.

  8. If it is unattended or an error occurs, the amount of retries is increased and the contact goes to the bottom of the list to be dialed later.

  9. If it is attended, the assigned workflow is executed step by step, at the end the lit is deleted, if a Respooling exists i continues dialers.


Base.csv

campaign

telephone

data

alternative numbers

priority

campaign

telephone

data

alternative numbers

priority

test1

098344484

NOMBRE=Sebastian Gutierrez:Monto=200

099124484:099111111

9999

 

Example:

Base.csv
test1;098344484;NOMBRE=Sebastian Gutierrez:Monto=200;099124484:099111111;9999

 

Variables that arrives to the flow: ${sound},${am}, ${FORM}, ${VBQUEUE} are all configurated variables for that campaign. Then with that is possible in stead of been a simple flow of BroadCast, it's possible design IVRs where  dynamically quiz are generated automatic.

Progressive and Preview Dialers

 

Introduction

 

In this case, this dialer is one step below regarding PowerDialer or Predictive to maximum automation, but we are still on a system of purely automatic calls. The Progressive dialres are based on the Agents availability.

The progressive dialers, usually are very suitable for Centers with a low or moderate volume of calls, where they would not be able to collect enough information to obtain reliable statistics.

Basically it calls the agent and when it answers the call is made, this makes that many attempts could be busy, wrong number, etc using time from the agent. The workflow that is used is the outbound, that is why we use outbound campaigns on Progressive and not inbound (there is not queue handling but it exists the wrapup concept) . 

The contacts have Agents properties, this means that each contact is asociated to a phone number of an Agent which is going to have that contact. This is for Progressive, Preview will call any agent

 

Steps

  1. The dialer obtains the amount of calls to make, if it is 0 waits and asks again, else it obtains according to:

    1. Amount of available Agents that are not in wrapup

  2. This dialer obtains the contacts according to the quantity and the next rules:

    1. Asks for scheduled for each available agent.

    2. Asks for that campaign the active list sorted by priority and amount of ascending  retries (by the percentage that correspond each one).

  3. If DNCR (do not call registry) is active, it only let to make the call if the number is not on the black list.

  4. All variables are sent to the workflows either campaign or contact.

  5. The contact registry of the dialer is sent with retry + 1 to the business logic, this allows to create the Respooling Logic (to reinsert the contact for not being able to be reached)

  6. If the amount of retries for a number is exceeded, then if alternative numbers exists it obtains the first and it is inserted as main number, then the rest of the numbers are left as alternatives and the process starts again.

  7. If it is unattended or an error occurs, the amount of retries is increased and the contact goes to the bottom of the list to be dialed later.

  8. The call is made to the agent, if for any reason it could not be answered, it will be retried without affecting the amount of retries once the agent is available again.

  9. The contacts registry is sent to the Agent so that actions could be made based on the business login and to be able to make the Respooling for the contact if it is required (having all his data). The agent also gets data from the CTI (to be able to open forms with the data of the client to call)

 

Base.csv

campaign

telephone

data

alternative numbers

priority

agentphone

campaign

telephone

data

alternative numbers

priority

agentphone

test1

098344484

NOMBRE=Sebastian Gutierrez:Monto=200

099124484:099111111

9999

1001

 

Example:

Base.csv
test1;098344484;NOMBRE=Sebastian Gutierrez:Monto=200;099124484:099111111;9999;1001

 

PowerDialers

 

Introduction

 

Unlike Progressive, the Power Dialer does not call the agent first and then makes the call, it is very similar to a Predictive but with a more Real Time calculation of over dial, this is a good fit for smaller groups of Agents and will respect the maximum channels configured for the dialer.

The first thing that the system does is to dial while exist available agents to answer calls on the campaign, for example if there are 2 agents available, it is going to make 2 calls simultaneously and until one is contacted, once a client is reached it is sent to the campaign. On the 99% of the cases the agent should be free to answer instantly. This avoids having to deliver busy or inexistent calls to the agents and deliver only the ones answered. This way of working is exactly de same on VoiceBradCast dialer, PowerDialer and Predictive, the only thing that changes is the amount of calls that are being executed, If we have an overdial rate, then will behave as a Predictive dialer, where we have abandon rate.

The PowerDialer tries to have all the agents with a call with its over dial.

Steps

  1. The dialer obtains the amount of calls to make, if it is 0 waits and asks again, else it obtains according to:

    1. Normal Mode (OverDial 0%): Amount of available Agents that are not in wrapup without exceeding the max amount of channels for that campaign.

    2. OverDial Mode (OverDial X%): Same as Normal Mode but with a a real time model or selected percentage of over dial model.

  2. The dialer obtains the contacts based on the amount and the next rules:

    1. Asks all  scheduled.

    2. Or any other contact that is scheduled for that campaign with maximum priority.

    3. Asks sorting the contacts by Priority and Amount of retries ascending (depending on the percentage of each one).

  3. If DNCR (do not call registry) is active only lets to make the call if its not on the black list.

  4. All  variables are sent to the Workflows, either campaign or contact.

  5. The contact registry of the dialer is sent with retry +1 to the business logic, this will allow to create the Respooling Logic (re insert the contact for not being able to be reached).

  6. If the amount of retries for that number is exceeded then, if there are alternative numbers, the first one is set as main and the rest are left as alternatives and the process starts over.

  7. The call is made.

  8. If it is not answered or an error occurs, the amount of retries is increased and the contact goes to the bottom of the list to be dialed later.

  9. If it is answered and AMD is enabled then if it is MACHINE the registry is reinserted with the next alternative number unless it is the last retry of the contact. If it is HUMAN is going to the ACD to be distributed between the available agents.

  10. If it is answered and AMD is not enabled it goes straight to the ACD to the agents.

  11. The contact registry is sent to the agent so that actions could be made based on the business logic and to be able to make the Respooling of te contact if it is required (having all his data).

 

Base.csv

campaign

telephone

data

alternative numbers

priority

campaign

telephone

data

alternative numbers

priority

test1

098344484

var1=val1:var2=val2

099124484:099111111

9999

 

Example:

Base.csv

 

Predictive Dialer

 

Introduction

 

The Predictive dialers behavior is based on phone numbers data bases, and they do it as their name says, on a "predictive" way.

This means that comes into play an algorithm based underlyingly on statistics strategies, which take multiple variables from the Call Center and calculate various factors to be able to put the Agents in contact with the contact numbers in the most efficient possible way.

By general rule, the main utility and advantage of the Predictive dialers resides on the volume of calls from the Centers in which are based on, given that they are grounded on statistics techniques, their most reliability redounds on the Law of Big Numbers. This is why, in small Call Centers it is little recommended for its base behavior. 


Essentially, the conceptual idea behind the predictive dialers is:

  • First the ideal time to make calls to clients must be calculated using various statistics strategies, which includes:

    • Calculate the average time between each call that result in success, and each call that fails.

    • Calculate the average proportion of calls that result in success and failure and with that it is weighted an average estimated time for all calls in general.

    • Use other factors that affect the times, such as average preparation time to accept another call from each agent and Wrapup

 

The more sophisticated the algorithm is, the better in general terms the Predictive Dialer will be. In fact this is one of the key factors that will determine its success in the future. A lot of predictive algorithms are based on the Erlang distribution.

  • In second place, the calls are launched for the numbers stored on the data base, abiding this calculated time:

    • With calls in progress, the Predictive dialer must be able to identify any type of inconvenience where the client could not be reached, mainly for the type of tone he receives, according to the national convention of tones from his country.

    • Also it is able to detect Fax tones and other possibilities that follows some type of standards.

    • In case that an event of this kind occurs, depending on the event, the application must be able to dial the phone properly according to what happened.

    • Besides the ability to detect VoiceMail given that by general rule they are "Not available" symbols, to be able to try the call again later. The detection is relatively easy, in function of the total voice response time, since the majority of the answers of physical people use to be a simple "Hello?", while the answering machines often use long phrases.

    • At the time it receives an answered call, it is sent to the Agents queue to be answered shortly.

With this system, the agents will only lie in wait for the machine to do its work, and by general rule, they do not have the possibility to take the call if desired, this will put directly in communication with the agent.

Firstly, this method can be ideal and, if we are really in front of a quality Predictive Dialer, this premise is true. But in return we are dealing with some inconvenience that we must overcome when choosing this type of Dialers:

  • If on the interval in which the agent answers a call and the operator receives it there is no answer, it is probably that the client abandon the call. In this case most of the Predictive Dialers put the number to be called in a future, but we can generate dissatisfaction on the client.

  • If we want to use it with commercial purposes from Business to Business, it is possible to be quite inefficient, because most of Business use an IVR which is likely to prevent our Predictive Dialer from completing its purpose in good conditions.

  • As we mentioned, if we have few calls in the Center, it is possible that the statistics algorithms do not return quality numbers and so the first problem occurs, being a very inefficient system.

 

Base.csv

campaign

telephone

data

alternative numbers

priority

campaign

telephone

data

alternative numbers

priority

test1

098344484

var1=val1:var2=val2

099124484:099111111

9999

 

Example:

Base.csv

 

Scheduler

 

The dialers scheduler is to be able to Schedule calls and for the dialer to make them at the right moment, for this it exists a WebService of Rest type which allows to schedule the calls. It is possible to do it from Forms, Workflows or from external systems.

 

Basically the process is that exist a table where the calls are scheduler whit the necessary information.

calls_scheduler

 

calldate

campaign

destination

alternatives

agentphone

data

calldate

campaign

destination

alternatives

agentphone

data

time and date to be executed

prueba1

098344484

099111111:099121212

1001

variable1=valor1:variable2=valor2

 

The scheduler is located in calls_spool with priority 1 for the calls that must be executed on that minute, which is going to make the dialers to take it as soon as posible to make it. On the base it takes the name as Schedule and Date to be able to see which calls where scheduled and which should be made to be able to compare it with the calldate from CDR.

 

Web Service

REST

 

RESPOOL

 

The respool is given by a webservice that allows to reprocess a contact that was answered due to the business logic, it can insert a contact as it is requested with alternative numbers, priority, etc.

A registry is sent to the CTI.

Dialer: Ventas->, 098344484, 1, Par1=val1:Par2=val2, 091121212:099888888, 1, 12, basetesting, 99, 1001

(campaign, destination, status, parameters and values, alternatives, retries, contactid, basename, priority, agent phone)

With this data and the next webservice, it is possible to add any type of business logic to the dialer from Forms or third-party applications(The first alternative number arrives as primary number as it is considered that the main number was already contacted, anyways you can do a reschedule of that main number to itself).

 

REST

 

CTI

 

Example CTI event that arrives to the Browser.

 

 

SMS

 

Basically it works on a similar way to the rest of the dialers we have, it puts on memory 50 messages of state 1 from the table sms_spool sorted by income position of the same, it searches if it is on the black_list, if it is there, the sms is not sent and puts in state 3.

 

States

STATE: 0 NONE
STATE: 1 TO PROCESS
STATE: 3 BLOCKED 

campaign

destination

message

device

idm

data

campaign

destination

message

device

idm

data

test1

098344484

este es mi sms

Dinstar

autonumerico

datos extra

 

Base.csv

campaign

destination

message

priority

campaign

destination

message

priority

test1

098344484

este es mi sms

9999

 

Example:

Base.csv

 

WebService

 

Sending an sms

 

Scheduler

 

The SMS dialers scheduler is to be able to schedule SMS and that the dialer makes it on the right moment, for this it exists a WebService of REST type that allows to schedule the same, it is possible to do it from Forms, Workflows or from external systems.

 

Basically the process is that exists a table where all scheduled calls are, with all the relevant information.

sms_scheduler

 

calldate

campaign

destination

data

calldate

campaign

destination

data

time and date that it is wanted to be executed

test1

098344484

The message

 

The scheduler is located on the sms_spool with a priority of 1 for the sms that needs to be executed on that minute, which is going to do that the dialers take it as soon as possible to send the message, it takes the base name Schedule and the Date to be able to see the sms that are scheduled and when they should be made to be able to compare with the dateprocessed from sms_repo

 

Schedule SMS

 

 

Formatting from excel to CSV

 

It is needed to be changed firstly the delimit option inside the control panel > Clock, Language and Region options > Change date, time or numers format.

 

1) Change date,time or number formats

 

 

 

2) Additional settings...

 

 

3)We change the list separator combo so it shows a semicolon.

Apply and close.

 

 

4) BASE CREATION

Necessarily we will have to insert a row at the beggining of all our bases independently of the dialer type that we will use, so as the time of exporting to csv, it is guided by the heads we have whether there are 5 or 6 in total

 

 

4) We are headed to file>save as

We select that the filed type is CSV (MS-DOS)

 

 

5) Right click to the generated file, choose edit to visualize it on CSV mode and check that it is exported correctly.

 

 

6) This is the generated file. Erease the first line completely and save again.

 

 

7) Finally the file is ready to be uploaded to uContact

*We can see on line 3 and 5 that if one of the fields is empty, the delimiter is going to generate the relevant commas so that the base is uploaded anyways.

*Also we can see that at the end of the line at the 9999 a comma is inserted, creating an aditional field to be consistent to the bases requeriments to be uploaded to uContact correctly.

 

CLARIFICATION

Suposse we have a base without alternative numbers or priority.

 

 

 

Without those fields this would be the resulting CSV after making the import.

 

 

We proceed to delete the first line, and the optimum result would be: