API Endpoint
https://brain.fonia.ai/rest.php
</pre>
<p>
Brain es un sistema automatizado, parte de la suite de Fonia, encargado de recibir las llamadas telefonicas recibidas, directamente desde las PBX, y procesar mediante una red de aprendizaje neuronal IA (TensorFlow) con el fin de extraer la siguiente información:<br><br>
<strong>- Transcribir la llamada a Texto identificando los interlocutores</strong><br>
<strong>- Extraer la información de los sentimientos de la llamada según el estandar de Ekman.</strong><br>
<strong>- Aprender orgánicamente nuevas palabras y categorizarlas mediante sentimientos</strong><br>
<strong>- Poder añadir argumentarios propios a los operarios y identificar su cumplimiento en llamadas</strong><br>
<br>
Adicionalmente, se contemplan las siguientes funciones secundarias:<br><br>
<strong>- Cálculo dinámico de costes de transcripción e IA por llamada individual</strong><br>
<strong>- Cálculo de las palabras por minuto expresas en cada llamada asi como diversas métricas relacionadas con los interlocutores</strong><br>
</p>
<p>
Para usar esta API, necesitas que se te permita el acceso desde dirección, contacta con <a href="mailto:carlos.presa@fonia.ai">carlos.presa@fonia.ai</a>. Tambien deberás tener una <strong>dominio TLS verificado o una IP permitida.</strong>
</p>
</div>
<div class="overflow-hidden content-section" id="uploadFile">
<h2 id="get-characters">Transcribir una Grabación</h2>
<pre><code class="bash">
Ejemplo de peticion lanzable desde ReactJS y VueJS
$.post(server, {
opt: '/#uploadFile',
file:b64blobFile,
type:engineType -> String
}, function(data) { return data } });
Esta función nos permite enviar un archivo de audio (WAV 16Bits), se normaliza el bitrate a 32 automáticamente y devuelve su transcripción.
El parámetro de acceso que debe enviarse en la variable POST opt es el siguiente :
/#uploadFile
Ejemplo de Respuesta :
{ "status": "finished", "remaining seconds": 3535, "results": { "transcript": "Las azarosos palomas vuelan frágiles.", "word_time_offsets": [ { "word": "Las", "speaker": 1, "end_time": 0.45, "confidence": 0.378226, "start_time": 0.27 }, { "word": "azarosos", "speaker": 1, "end_time": 0.96, "confidence": 0.962743, "start_time": 0.451993 }, { "word": "palomas", "speaker": 1, "end_time": 1.53, "confidence": 0.975684, "start_time": 0.960903 }, { "word": "vuelan", "speaker": 1, "end_time": 2.1, "confidence": 1, "start_time": 1.56 }, { "word": "frágiles", "speaker": 0, "end_time": 2.79, "confidence": 1, "start_time": 2.13 } ], "summary": "" } }
Parámetros de la Petición
| Campo | Tipo | Descripción |
|---|---|---|
| opt | String | Valor catchback para la seleccion de funciones de la API REST |
| type | String | Motor de transcripción seleccionado, puede ser o 'speechtext.ai' o 'gvoice'. En caso de no especificar, se opta por el de mayor exactitud |
<div class="overflow-hidden content-section" id="loadStatics">
<h2 id="get-characters">Obtener listas de BRAIN</h2>
<pre><code class="bash">
Ejemplo de peticion lanzable desde ReactJS y VueJS
$.post(server, {
opt: '/#loadStatics'
}, function(data) { return data } });
Esta función nos devuelve las listas de palabras categorizadas por sensaciones de Ekman aprendidas y aceptadas por Brain
El parámetro de acceso que debe enviarse en la variable POST opt es el siguiente :
/#loadStatics
Ejemplo de Respuesta :
{ "alegria": {data}, "ira": {data}, "rechazo": {data}, "sorpresa": {data}, "tristeza": {data} }
Parámetros de la Petición
</tbody>
</table>
</div>
<div class="overflow-hidden content-section" id="setNewWord">
<h2 id="get-characters">Añadir palabra estática</h2>
<pre><code class="bash">
Ejemplo de peticion lanzable desde ReactJS y VueJS
$.post(server, {
opt: '/#setNewWord',
type: (STRING)Categoría de Ekman de la palabra | alegría,
word: (STRING)La Palabra a añadir | confianza'
}, function(data) { return data } });
Esta función nos permite añadir una nueva palabra estática a las listas de palabras aceptadas de BRAIN
El parámetro de acceso que debe enviarse en la variable POST opt es el siguiente :
/#setNewWord
Ejemplo de Respuesta :
{ ok:wordAdded }
Parámetros de la Petición
| Campo | Tipo | Descripción |
|---|---|---|
| opt | String | Valor catchback para la seleccion de funciones de la API REST |
</tbody>
</table>
</div>
<div class="overflow-hidden content-section" id="evalueText_ES">
<h2 id="get-characters">Evaluar una transcripción</h2>
<pre><code class="bash">
Ejemplo de peticion lanzable desde ReactJS y VueJS
$.post(server, {
opt: '/#evalueText_ES',
text: (STRING)Texto a Evaluar,
customerpbx: (STRING)Dominio de confianza de la PBX => company.fonia.ai',
user: (STRING)Extension del usuario desde la centralita => 200'
}, function(data) { return data } });
Esta función nos permite evaluar una transcripción, devolviéndonos los datos de las sensaciones asi como el porcentaje de cumplimiento del argumentario si este está configurado.
El parámetro de acceso que debe enviarse en la variable POST opt es el siguiente :
/#evalueText_ES
Ejemplo de Respuesta :
{"alegria":{"score":1,"percentage":100}, "ira":{"score":0,"percentage":0}, "rechazo":{"score":0,"percentage":0}, "sorpresa":{"score":0,"percentage":0}, "tristeza":{"score":0,"percentage":0}, "rateable_word":true, "argumentation":"no argument"}
Parámetros de la Petición
| Campo | Tipo | Descripción |
|---|---|---|
| opt | String | Valor catchback para la seleccion de funciones de la API REST |
| type | String | String de la categoría : alegria | ira | sorpresa | rechazo | tristeza |
| word | String | Palabra a añadir |
</tbody>
</table>
</div>
<div class="overflow-hidden content-section" id="getEvaluationWords_ES">
<h2 id="get-characters">Listar Palabras Evaluadas</h2>
<pre><code class="bash">
Ejemplo de peticion lanzable desde ReactJS y VueJS
$.post(server, {
opt: '/#getEvaluationWords_ES',
function: (STRING) list | total
}, function(data) { return data } });
Esta función nos devuelve las palabras pendientes de evaluacion, con un mínimo de 10 repeticiones.
El parámetro de acceso que debe enviarse en la variable POST opt es el siguiente :
/#getEvaluationWords_ES
Ejemplo de Respuesta :
{ "id": "109", "word": "viejo", "languagestring": "ES", "repeats": "2", "probable_cat": "tristeza", "ban": null }, { "id": "110", "word": "carro", "languagestring": "ES", "repeats": "2", "probable_cat": "tristeza", "ban": null }, { "id": "111", "word": "ronoso", "languagestring": "ES", "repeats": "2", "probable_cat": "tristeza", "ban": null }, { "id": "113", "word": "cachos", "languagestring": "ES", "repeats": "2", "probable_cat": "tristeza", "ban": null }, { "id": "114", "word": "pero", "languagestring": "ES", "repeats": "2", "probable_cat": "tristeza", "ban": null }, { "id": "115", "word": "verdad", "languagestring": "ES", "repeats": "2", "probable_cat": "tristeza", "ban": null }, { "id": "116", "word": "tiene", "languagestring": "ES", "repeats": "2", "probable_cat": "tristeza", "ban": null }, { "id": "117", "word": "unos", "languagestring": "ES", "repeats": "2", "probable_cat": "tristeza", "ban": null }, { "id": "118", "word": "asientos", "languagestring": "ES", "repeats": "2", "probable_cat": "tristeza", "ban": null }, { "id": "119", "word": "super", "languagestring": "ES", "repeats": "2", "probable_cat": "tristeza", "ban": null }, { "id": "120", "word": "esto", "languagestring": "ES", "repeats": "4", "probable_cat": "alegria", "ban": null }, { "id": "121", "word": "esta", "languagestring": "ES", "repeats": "4", "probable_cat": "alegria", "ban": null }, { "id": "97", "word": "pinchapalo", "languagestring": "ES", "repeats": "5", "probable_cat": "alegria", "ban": null }
Parámetros de la Petición
| Campo | Tipo | Descripción |
|---|---|---|
| opt | String | Valor catchback para la seleccion de funciones de la API REST |
| text | String | Texto a Evaluar |
| customerPBX | String | Dominio del servidor PBX asociado |
| user | String | Extension del usuario a evaluar |
</tbody>
</table>
</div>
<div class="overflow-hidden content-section" id="banWord_ES<">
<h2 id="get-characters">Banear Palabra Orgánica</h2>
<pre><code class="bash">
Ejemplo de peticion lanzable desde ReactJS y VueJS
$.post(server, {
opt: '/#banWord_ES',
word: (STRING) palabra
}, function(data) { return data } });
Esta función banea una palabra organica para descartarla de su aprendizaje automático. Esto es especialmente útil a la hora de descartar nombres propios de los procesos de aprendizaje.
El parámetro de acceso que debe enviarse en la variable POST opt es el siguiente :
/#banWord_ES
Ejemplo de Respuesta :
data{ ok }
Parámetros de la Petición
| Campo | Tipo | Descripción |
|---|---|---|
| opt | String | Valor catchback para la seleccion de funciones de la API REST |
| function | String | Valor que determina si la respuesta será una lista de las palabras o bien el total de palabras pendientes de evaluación |
</tbody>
</table>
</div>
<div class="overflow-hidden content-section" id="acceptWord_ES">
<h2 id="get-characters">Añadir nueva Palabra a BRAIN</h2>
<pre><code class="bash">
Ejemplo de peticion lanzable desde ReactJS y VueJS
$.post(server, {
opt: '/#acceptWord_ES',
word: (STRING) palabra,
type: (STRING)Categoría de Ekman de la palabra => alegría
}, function(data) { return data } });
Esta función acepta una palabra organica dando por bueno el resultado del aprendizaje (según la implementación aconsejada por Google, es la validación de la palabra como último factor humano del aprendizaje de esta), tambien se puede forzar una categoria para añadirla manualmente.
El parámetro de acceso que debe enviarse en la variable POST opt es el siguiente :
/#acceptWord_ES
Ejemplo de Respuesta :
data{ ok }
Parámetros de la Petición
| Campo | Tipo | Descripción |
|---|---|---|
| opt | String | Valor catchback para la seleccion de funciones de la API REST |
| word | String | Palabra a descartar |
</tbody>
</table>
</div>
<div class="overflow-hidden content-section" id="newArgument_ES">
<h2 id="get-characters">Crear nuevo argumentario</h2>
<pre><code class="bash">
Ejemplo de peticion lanzable desde ReactJS y VueJS
$.post(server, {
opt: '/#newArgument_ES',
customerpx: (STRING) Dominio PBX del usuario,
users: (STRING)Usuario a asignar el argumentario => Opcional,
group: (STRING)Grupo a asignar el argumentario => Opcional,
wordsList: Lista de palabras, en CSV, del argumentario,
transcript: Argumentario transcrito original,
title: (STRING)Título del argumentario,
desc: (STRING)Descripción del argumentario
}, function(data) { return data } });
Esta función está destinada a la creacion de nuevos argumentarios, los cuales se comprobarán en cada una de las transcripciones , para ver su cumplimiento por parte de los usuarios y/o grupos
El parámetro de acceso que debe enviarse en la variable POST opt es el siguiente :
/#newArgument_ES
Ejemplo de Respuesta :
data{ ok }
Parámetros de la Petición
| Campo | Tipo | Descripción |
|---|---|---|
| opt | String | Valor catchback para la seleccion de funciones de la API REST |
| word | String | Palabra a añadir |
| type | String | Categoría de Ekman definida por el usuario |
</tbody>
</table>
</div>
<div class="overflow-hidden content-section" id="listArguments_ES">
<h2 id="get-characters">Listar todos los Argumentarios de una compañía</h2>
<pre><code class="bash">
Ejemplo de peticion lanzable desde ReactJS y VueJS
$.post(server, {
opt: '/#listArguments_ES',
customerpbx: (STRING)Dominio aceptado del servidor PBX del cliente
}, function(data) { return data } });
Esta función lista todos los argumentarios
El parámetro de acceso que debe enviarse en la variable POST opt es el siguiente :
/#listArguments_ES
Ejemplo de Respuesta :
{ "id": "13", "customer": "0", "users": "admin", "words": "Lorem,ipsum,dolor,amet,consectetur,adipiscing,elit.,Pellentesque,eget,interdum,quam.,Aenean,congue,tempor,consequat.,Donec,turpis,volutpat,cursus,vitae,commodo,eros.,consequat,sollicitudin,justo,vulputate,nunc,viverra,sed.,Quisque,nibh,odio,scelerisque,quis,elementum,nec,luctus,Suspendisse,pellentesque,rutrum,cursus.,Curabitur,tristique,mauris,arcu,posuere,Integer,felis,gravida,vehicula,tortor,sodales,lectus.,Vestibulum,egestas,diam,dapibus,tincidunt,erat,arcu.,auctor,ante,aliquet,enim,efficitur.,Maecenas,sem.,Aliquam,faucibus,eros,semper,nulla.,nisl,turpis.,libero,finibus", "transcript": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget interdum quam. Aenean congue tempor ipsum ut consequat. Donec dui turpis, volutpat id cursus vitae, commodo vitae eros. Donec consequat sollicitudin justo, a vulputate nunc viverra sed. Quisque nibh odio, scelerisque quis elementum nec, luctus eget elit. Suspendisse pellentesque rutrum cursus. Curabitur tristique viverra mauris, eu scelerisque arcu posuere ut. Integer id felis gravida, vehicula tortor quis, sodales lectus. Vestibulum egestas, diam a dapibus tincidunt, erat nibh vehicula odio, ac vulputate est tortor sit amet arcu. Ut auctor ante sed arcu interdum, et aliquet enim efficitur. Maecenas vel tincidunt sem. Aliquam in faucibus eros, nec semper nulla. Curabitur eget nisl turpis. Maecenas viverra mi libero, eu finibus erat finibus at.", "language": "ES", "groupcompare": "", "title": "Test", "description": "Test de argumentario", "seedid": "5fce15f695d0a" }
Parámetros de la Petición
| Campo | Tipo | Descripción |
|---|---|---|
| opt | String | Valor catchback para la seleccion de funciones de la API REST |
| customerpbx | String | Dominio del servidor PBX de cliente |
| users | String | Usuario al que se le asignara el argumentario, también acepta JSON |
| group | String | Grupo de Usuarios |
| wordsList | String | (CSV)Palabras detectadas del argumentario, separas por comas |
| transcript | String | Transcripción literal del argumentario |
| title | String | Titulo del argumentario |
| desc | String | Descripción del argumentario |
</tbody>
</table>
</div>
<div class="overflow-hidden content-section" id="listArgumentsSpecific_ES">
<h2 id="get-characters">Listar agumentario Único</h2>
<pre><code class="bash">
Ejemplo de peticion lanzable desde ReactJS y VueJS
$.post(server, {
opt: '/#listArgumentsSpecific_ES',
seedid: (STRING) ID unico del argumento a listar
}, function(data) { return data } });
Esta función lista toda la información del argumento determinado por la variable SeedID
El parámetro de acceso que debe enviarse en la variable POST opt es el siguiente :
/#listArgumentsSpecific_ES
Ejemplo de Respuesta :
{ "id": "13", "customer": "0", "users": "admin", "words": "Lorem,ipsum,dolor,amet,consectetur,adipiscing,elit.,Pellentesque,eget,interdum,quam.,Aenean,congue,tempor,consequat.,Donec,turpis,volutpat,cursus,vitae,commodo,eros.,consequat,sollicitudin,justo,vulputate,nunc,viverra,sed.,Quisque,nibh,odio,scelerisque,quis,elementum,nec,luctus,Suspendisse,pellentesque,rutrum,cursus.,Curabitur,tristique,mauris,arcu,posuere,Integer,felis,gravida,vehicula,tortor,sodales,lectus.,Vestibulum,egestas,diam,dapibus,tincidunt,erat,arcu.,auctor,ante,aliquet,enim,efficitur.,Maecenas,sem.,Aliquam,faucibus,eros,semper,nulla.,nisl,turpis.,libero,finibus", "transcript": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget interdum quam. Aenean congue tempor ipsum ut consequat. Donec dui turpis, volutpat id cursus vitae, commodo vitae eros. Donec consequat sollicitudin justo, a vulputate nunc viverra sed. Quisque nibh odio, scelerisque quis elementum nec, luctus eget elit. Suspendisse pellentesque rutrum cursus. Curabitur tristique viverra mauris, eu scelerisque arcu posuere ut. Integer id felis gravida, vehicula tortor quis, sodales lectus. Vestibulum egestas, diam a dapibus tincidunt, erat nibh vehicula odio, ac vulputate est tortor sit amet arcu. Ut auctor ante sed arcu interdum, et aliquet enim efficitur. Maecenas vel tincidunt sem. Aliquam in faucibus eros, nec semper nulla. Curabitur eget nisl turpis. Maecenas viverra mi libero, eu finibus erat finibus at.", "language": "ES", "groupcompare": "", "title": "Test", "description": "Test de argumentario", "seedid": "5fce15f695d0a" }
Parámetros de la Petición
| Campo | Tipo | Descripción |
|---|---|---|
| opt | String | Valor catchback para la seleccion de funciones de la API REST |
| customerpbx | String | Dominio aceptado del servidor PBX del cliente |
</tbody>
</table>
</div>
<div class="overflow-hidden content-section" id="removeArgument_ES">
<h2 id="get-characters">Eliminar argumentario</h2>
<pre><code class="bash">
Ejemplo de peticion lanzable desde ReactJS y VueJS
$.post(server, {
opt: '/#removeArgument_ES',
seedid: (STRING) SeedID del argumentario a Eliminar
}, function(data) { return data } });
Esta función elimina un argumentario del sistema
El parámetro de acceso que debe enviarse en la variable POST opt es el siguiente :
/#removeArgument_ES
Ejemplo de Respuesta :
data{ ok }
Parámetros de la Petición
| Campo | Tipo | Descripción |
|---|---|---|
| opt | String | Valor catchback para la seleccion de funciones de la API REST |
| seedid | String | ID único del argumentario |
</tbody>
</table>
</div>
<div class="overflow-hidden content-section" id="editArgument_ES">
<h2 id="get-characters">Editar argumentario</h2>
<pre><code class="bash">
Ejemplo de peticion lanzable desde ReactJS y VueJS
$.post(server, {
opt: '/#editArgument_ES',
seedid: SeedID del argumentario
customerpx: (STRING) Dominio PBX del usuario,
users: (STRING)Usuario a asignar el argumentario => Opcional,
group: (STRING)Grupo a asignar el argumentario => Opcional,
wordsList: Lista de palabras, en CSV, del argumentario,
transcript: Argumentario transcrito original,
title: (STRING)Título del argumentario,
desc: (STRING)Descripción del argumentario
}, function(data) { return data } });
Esta función edita un argumentario del sistema
El parámetro de acceso que debe enviarse en la variable POST opt es el siguiente :
/#editArgument_ES
Ejemplo de Respuesta :
data{ ok }
Parámetros de la Petición
| Campo | Tipo | Descripción |
|---|---|---|
| opt | String | Valor catchback para la seleccion de funciones de la API REST |
| SeedID | String | Identificador Único de Argumentario |
</tbody>
</table>
</div>
<div class="overflow-hidden content-section" id="getEmotionsPastCall">
<h2 id="get-characters">Ver Emociones de una llamada efectuada</h2>
<pre><code class="bash">
Ejemplo de peticion lanzable desde ReactJS y VueJS
$.post(server, {
opt: '/#getEmotionsPastCall',
uniqueid: (STRING) uniqueid de la llamara recibido desde el servidor de PBX,
customerpbx: Dominio PBX del servidor aceptado de cliente
}, function(data) { return data } });
Devuelve los datos emotivos, y otros datos relevantes en cuanto a metricas de las palabras empeladas en la llamada evaluada
El parámetro de acceso que debe enviarse en la variable POST opt es el siguiente :
/#getEmotionsPastCall
Ejemplo de Respuesta :
{ "id": "9", "uniqueid": "admin", "transcript": "Las azarosos palomas vuelan frágiles por el aire. A la espera de que el viento encamine su destino.", "customerpbx": "0", "longest_monologue": "2.1", "wpm": "0.31", "alegria_percent": "0", "alegria_score": "0", "ira_percent": "50", "ira_score": "2", "rechazo_percent": "0", "rechazo_score": "0", "sorpresa_percent": "50", "sorpresa_score": "2", "tristeza_percent": "0", "tristeza_score": "0", "argument_percent": "no argument", "cost": "0.002325" }
Parámetros de la Petición
| Campo | Tipo | Descripción |
|---|---|---|
| opt | String | Valor catchback para la seleccion de funciones de la API REST |
| SeedID | String | Identificador Único de Argumentario |
| customerpbx | String | Dominio del servidor PBX de cliente |
| users | String | Usuario al que se le asignara el argumentario, también acepta JSON |
| group | String | Grupo de Usuarios |
| wordsList | String | (CSV)Palabras detectadas del argumentario, separas por comas |
| transcript | String | Transcripción literal del argumentario |
| title | String | Titulo del argumentario |
| desc | String | Descripción del argumentario |
</tbody>
</table>
</div>
<div class="overflow-hidden content-section" id="receiveCall">
<h2 id="get-characters">Autotranscripción de llamada y evaluación</h2>
<pre><code class="bash">
Ejemplo de peticion lanzable desde ReactJS y VueJS
$.post(server, {
opt: '/#receiveCall',
fileBLOB: (b64) Grabación en formato WAV en base64,
pbxDomain: Dominio PBX del servidor aceptado de cliente,
uniqueid: (STRING)Uniueid de la llamada recibido desde el servidor pbx,
extension: extension interna que interviene en la llamada
}, function(data) { return data } });
Evalua una llamada en formato audio y nos devuelve los datos de metricas, transcripción y emoción de la llamada evaluada. Los datos son almacenados para su posterior consulta.
El parámetro de acceso que debe enviarse en la variable POST opt es el siguiente :
/#receiveCall
Ejemplo de Respuesta :
{ data(INSERTA LOS DATOS EN LA DB, SE CONSULTAN MEDIANTE LA FORMULA ANTERIOR) }
Parámetros de la Petición
| Campo | Tipo | Descripción |
|---|---|---|
| opt | String | Valor catchback para la seleccion de funciones de la API REST |
| SeedID | String | Identificador Único de Argumentario |
</tbody>
</table>
</div>
| Campo | Tipo | Descripción |
|---|---|---|
| opt | String | Valor catchback para la seleccion de funciones de la API REST |
| fileBLOB | String | Archivo WAV en base64 |
| pbxDomain | String | Dominio del servidor PBX del cliente |
| uniqueid | String | Identificador PBX único de la llamada |
| extension | String | Extensión PBX invlucrada en la llamada |