2022-08-10 12:47:21 +00:00
2022-08-10 12:47:21 +00:00
Fix
2022-07-12 11:35:40 +00:00
Fix
2022-07-12 11:35:40 +00:00
2020-12-04 15:07:24 +01:00
2020-11-18 14:48:16 +01:00
2020-12-02 15:36:05 +01:00
2020-12-07 13:21:05 +01:00
2020-12-07 13:21:05 +01:00
2020-12-07 13:21:05 +01:00
2020-11-18 14:48:16 +01:00
Fix
2022-07-12 11:35:40 +00:00
2020-11-18 14:48:16 +01:00
2020-11-18 14:48:16 +01:00
2020-11-18 14:48:16 +01:00
2020-11-18 14:48:16 +01:00
Fix
2022-07-12 11:35:40 +00:00
2020-12-07 13:21:05 +01:00
2020-11-18 14:48:16 +01:00

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
S
Description
No description provided
Readme MIT
24 MiB
Languages
PHP 47.1%
JavaScript 33.9%
HTML 18.4%
SCSS 0.6%