¿Puedo hacer una teleconferencia?
Para modificar la funcionalidad de transferencia de la "Campaña Simple" a la funcionalidad de Conferencia, la modificación debe ser la siguiente:
1. Asegúrate de que tienes activada la personalización y el scripting:

2. Una vez que haya hecho esto, puede proceder a modificar los antiguos campos de la función de transferencia para que coincidan con las nuevas definiciones de la función de conferencia.

- Cambie el nombre del botón "Transferir al cliente" por "Conectar las partes":

- En el menú desplegable "Número de transferencia" añada los campos con el nombre y el número de teléfono de la persona/departamento que desea incluir en su conferencia.

3. Inicie una nueva sección sobre el campo "Número de transferencia" y dele un nombre significativo:

A continuación, proceda a crear los campos adicionales necesarios para poder utilizar la función de conferencia:
4. Añada un campo de número de teléfono que tendrá el nombre interno "dial_A".

5. Cree tres nuevos botones con los nombres siguientes (el nombre interno debe ser el indicado):
Llamar al colega -----> xfer
Recuperar cliente -----> unpark
Conferencia -----> conference

6. (Opcional) El último campo que debe agregar es un campo HTML con la siguiente información, edítelo haciendo clic en el lápiz:

8. Por último, una vez hechas todas estas modificaciones, puede reemplazar completamente el código del Script por el de la caja siguiente:
if (form.abrir_url) {
form.abrir_url.onclick = function() {
if (data.url && data.url.substr(0, 7) !== "http://" && data.url.substr(0, 8) !== "https://") {
data.url = "http://" + data.url;
}
window.open(data.url);
};
form.abrir_url.hidden = function() {
return data.url === "";
};
}
/*
// WEITERLEITUNG
if (form.transferir) {
form.transferir.onclick = function() {
var transfer_type = transfer_conf.type ? transfer_conf.type : "";
var transfer_to = data.numero_transfer ? data.numero_transfer.toString() : "";
var transfer_from = transfer_conf.from ? transfer_conf.from.toString() : "";
var transfer_stoprec = transfer_conf.stoprecording ? transfer_conf.stoprecording : true;
if (transfer_to && transfer_to.substr(0, 1) !== "+") transfer_to = "+" + transfer_to;
if (transfer_from && transfer_from.substr(0, 1) !== "+") transfer_from = "+" + transfer_from;
if ((transfer_type !== "pstn" && transfer_type !== "sip") || !transfer_to || transfer_to.substr(0, 1) !== "+") {
//console.log("---------TRANSFER CONFIG ERROR---------",transfer_conf);
return;
}
actions.transfer(transfer_type + ":" + transfer_to, {
"from": transfer_from,
"stopRecordings": transfer_stoprec
});
//console.log("---------TRANSFER SUCCESS---------",transfer_type,transfer_to,transfer_from,transfer_stoprec);
};
}
var transfer_conf = {};
var transfer_list = [];
var conf_error = 0;
function initXferConf(catalogFile) {
$http.get(permissions.actions.campaign + "/resources/" + catalogFile)
.success(function(listdata) {
transfer_conf = temp.compileYaml(listdata);
var transfer_array = transfer_conf ? transfer_conf.to : [];
for (var x in transfer_array) {
var o = {};
o.title = x;
o.value = transfer_array[x];
transfer_list.push(o);
}
form.numero_transfer.setOptions(transfer_list);
//console.log("---------TRANSFER CONFIG OBJECT---------",transfer_conf);
onUpdate();
})
.error(function(error) {
conf_error = 1;
});
}
*/
/**** transfer button ***/
form.xfer.onclick = function () {
var number = formatPhoneNumber(data.numero_transfer);
if (!number) return;
parkId = parkId || createParkId();
var protocol = "pstn:"; // pstn: or sip:
actions.dial(protocol + formatPhoneNumber(data.numero_transfer), {
"parkId": parkId
});
temp.transfer_msg = "Cliente en espera, llamando un tercero al:" + data.dial_A;
data.numero_transfer = "";
};
/*** this is the additional transfer logic for 'hot' transfer buttons ***/
function createParkId() {
var id = "";
var charlist = "23456789ABCDEFGHJKLMNPQRSTUVWXYZ";
for (var i = 0; i < 16; i++) {
id += charlist.charAt(Math.floor(Math.random() * 32));
}
return id;
}
var parkId = "";
form.transferir.onclick = function () {
actions.transfer("park:" + parkId);
parkId = "";
temp.transfer_msg = "Las partes están conectadas ahora";
};
form.conference.onclick = function () {
actions.transfer("conference:", {
"from": "",
"stopRecordings": false
});
temp.transfer_msg = "La Conferencia se ha iniciado";
};
form.conference.hidden = function () {
return !parkId;
};
form.transferir.hidden = function () {
return !parkId;
};
form.unpark.onclick = function () {
actions.dial("park:" + parkId, {});
parkId = "";
temp.transfer_msg = "El cliente ha sido recuperado";
};
form.unpark.hidden = function () {
return !parkId;
};
form.xfer.hidden = function () {
return parkId;
};
/*** end of hot transfer logic ***/
var formatPhoneNumber = function (s_nr) {
return (s_nr || "").replace(/^\+/, "00").replace(/\D/g, "").replace(/^00/, "+");
};
form.dial_A.hidden = function () {
return true;
};
form.numero_transfer.onchange = function () {
data.dial_A = data.numero_transfer;
};
temp.guideline_template = "";
function initGuidelineTemplate(catalogFile) {
$http.get(permissions.actions.campaign + "/resources/" + catalogFile).
success(function(listdata) {
temp.guideline_template = listdata;
//console.log("---------GUIDELINE TEMPLATE---------",temp.guideline_template);
onUpdate();
});
}
function generateGuideline() {
if (!temp.guideline_template) return;
temp.guideline = temp.guideline_template;
var placeholder = temp.guideline.match(/\{\w*\}/g);
for (var p = 0; p < (placeholder || []).length; p++) {
var feld = placeholder[p].replace(/\{|\}/g, "");
temp.guideline = temp.guideline.replace(placeholder[p], data[feld]);
//console.log("---------GUIDELINE---------",placeholder[p],data[feld]);
}
}
function checkEMail(value) {
if (value === "") return true;
var regex = new RegExp(/^(\w|\.|\-|\_){0,}(\w){1,}@(\w|\-|\_|\.){1,}\.(\w){2,11}$/);
return regex.test(value);
}
if (form["Conversation_guideline"]) {
form["Conversation_guideline"].hidden = function() {
return !temp.guideline;
};
}
/*
if (form.transferir) {
form.transferir.hidden = function() {
return !data.numero_transfer;
};
}
form.numero_transfer.hidden = function() {
return conf_error;
};
*/
function onLoad() {
// initXferConf("transfer_config.yaml");
initGuidelineTemplate("guideline.md");
}
function onUpdate() {
generateGuideline();
}
function onSave() {
if (!checkEMail(data.email)) {
return "Incorrect email adress";
}
}