• No se han encontrado resultados

JON BONILLA DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

N/A
N/A
Protected

Academic year: 2021

Share "JON BONILLA DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK"

Copied!
31
0
0

Texto completo

(1)

DISEÑANDO UNA SOLUCIÓN

MULTI-TENANT CON ASTERISK

(2)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

CONTEXTO

VoIP2day2009: El Rombo

4K2012: Solución softswitch para operadores

EW2013: Arquitecturas de operador de HostedPBX

EW2014: Elastix3 (ElastixMT)

(3)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

BASADO EN HECHOS REALES

PekePBX

(4)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

OBJETIVOS

Multitenant (multiempresa)

Completamente orientada a ser manejada por el

usuario: 100% web.

No soporte

(5)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

OBJETIVOS

Seguro de vida: Tecnologías usadas

Debian stable Asterisk 11 Laravel AngularJS MySQL
 
 http://www.barnetik.com

(6)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

DESARROLLO PARTE I: DB

Schema DB. Conceptos y relaciones:

DID, Empresa, 3 niveles de usuario y 3 niveles de

acceso

Destinos y aplicaciones: Usuario, IVR, locuciones,

Sala de conferencia, Moh, Voicemail, Grupos de extensiones, Números externos, colas de

(7)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

DESARROLLO PARTE I: DB

Ast_cdr Ast_musiconhold Ast_queues Ast_sippeers Ast_sipregs Ast_voicemail Ast_voicemail_messagedoctrine_migration_versions ext_log_entries ext_translations sipdoc_prefijos_internacional sipdoc_prefijos_nacionalPeke_CDR Peke_Call_Record Peke_Company Peke_Company_Voicemail Peke_ConferenceRoom Peke_DID Peke_Destination Peke_Group Peke_Group_User Peke_IVR Peke_MOH Peke_Processing Peke_SoundPrompt Peke_User Peke_User_Voicemail

(8)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

DESARROLLO PARTE II: LA WEB

Web MINIMALISTA. No FreePBX

No doc!

Cada rol tiene sus tareas. 3 niveles de acceso

Minimiza las opciones

Responsive!

(9)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

(10)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

(11)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

DESARROLLO PARTE II: LA WEB

Administrador de empresa: Le gustan los colores y

las animaciones.

Lo más importante es la configuración de entrantes

INTUITIVA. Son muchas opciones y a más opciones más fácil es complicar la web.

Recordamos objetivo: No debe tener que

(12)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

(13)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

(14)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

(15)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

(16)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

(17)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

DESARROLLO PARTE II: LA WEB

Mención aparte para el CDR

El CDR VENDE

Tratad por todos los medios no facturar con él.

(18)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

(19)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

DESARROLLO PARTE II: LA WEB

El rol usuario ha de sentirse cómodo

Con el tiempo, querremos que la web de la PBX

(20)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

(21)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

DESARROLLO PARTE III: ASTERISK

La configuración se adapta a la web, al db

schema.

Tenemos toda la info en DB → Realtime

ODBC por supuesto

Elegimos Asterisk 11. Y puede que nos

arrepintamos

Cuanto menos carguemos menos cosas pueden

(22)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

DESARROLLO PARTE III: ASTERISK

Dialplan

No tiene sentido tener un contexto por empresa.

Debemos separar a nivel de variable

Las entrantes no se pueden discriminar por trunk. Hay

que hacerlo por DID

=> Dialplan unificado para todas las empresas.

from-pstn from-users

(23)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

DESARROLLO PARTE III: ASTERISK

Dialplan

Tenemos que estar leyendo configuraciones en base

de datos continuamente

La mayor parte de las lecturas de DB no requieren

tratamientos complejos sino setear variables de canal

(24)

[from-pstn]

exten => _X.,1,Verbose(Llamada entrante desde la PSTN ${CHANNEL(peername)} al número ${EXTEN})

same => n,Set(CDR(type)=incoming) same => n,Set(CDR(src_callerid)=${CALLERID(num)}) same => n,Set(CDR(dst_dialed)=${EXTEN}) same => n,Gosub(sub_geolocation_caller,start,1) same => n,Set(ARRAY(EMPRESA,DIDCUSTOM,DIDID)=${ODBC_DIDEMPRESA(${EXTEN})}) same => n,GotoIf($[${EXISTS(${EMPRESA})}]?:noasignado,1) same => n,Set(CDR(dst_company)=${EMPRESA})

same => n,Verbose(El DID está asignado a la empresa ${EMPRESA})

same => n,GoSub(sub_record_call,start,1(${EMPRESA},${CDR(type)},${EXTEN},${CALLERID(num)})) same => n,GotoIf($["${DIDCUSTOM}" == "1"]?sub_custom_${EMPRESA}_${EXTEN},start,1)

same => n,Set(IDTRATAMIENTO=${ODBC_DIDCONFIGURED(${DIDID})}) same => n,GotoIf($[${EXISTS(${IDTRATAMIENTO})}]?:notratamiento,1) same => n,Agi(peke_processing.php,${IDTRATAMIENTO}) same => n,GotoIf($[${EXISTS(${PROMPT})}]?:destino) same => n,Playback(${SOUNDPATH}/${EMPRESA}/${PROMPT}) same => n(destino),GoSub(sub_destination,start,1(${EMPRESA},${DESTINATION}))

exten => noasignado,1,Verbose(DID no encontrado o no asignado a empresa)

same => n,Hangup()

exten => notratamiento,1,Verbose(DID no está configurado)

(25)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

RELEASES

Tenemos la ventaja de controlar todo el

ecosistema. Podemos hacer releases y upgrades de forma muy sencilla: Hagamos muchas y

pequeñas.

Las nuevas funcionalidades han de venir

determinadas por la necesidad de la solución y no por la necesidad de una empresa o la de un

(26)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

RELEASES

Asume que vas a reescribir todo el dialplan al

menos dos veces. No esperes a tenerlo todo perfecto para sacar la versión 1.0

Prepara un roadmap y prepárate para no poder

cumplirlo porque el mercado te dictará las

necesidades. Sacarlo a producción es el mejor roadmap.

(27)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

FUTURAS RELEASES

Cuando las funciones PBX ya estén estables y maduras…

Salgamos de la PBX y hagamos funciones diferenciadoras:

Módulos:

Salas de MultiVideoconferencia

Chat, compartición de pantalla… centro de comunicaciones de

la empresa: Fidelización.

Integración con sistema de soporte Integración con CRMs

(28)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

(29)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

ESCALABILIDAD

Limitados por: CAPS, Registros, Keepalives

Sacamos los registros a un proxy

Balanceamos los usuarios por nodo de PBX

Sacamos la DB a exterior y compartimos entre todos

los nodos

Sacamos la web al exterior

=> Proxy lb/registrar + MySQL + Web Server + N

(30)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

(31)

DISEÑANDO UNA SOLUCIÓN MULTI-TENANT CON ASTERISK

PREGUNTAS?

Jon Bonilla

[email protected]

@jbmanwe

Referencias

Documento similar

He utilizado los algoritmos holandeses porque me parecen una forma sencilla y visual de poder hacer las operaciones matemáticas más fácilmente.. Método del

Para hacer más sencilla la visualización de los datos se ha elaborado la Tabla 1 que recoge de forma esquemática la información más relevante de cada

Esos 6 grupos son las proteínas, los hidratos de carbono, las grasas, las vitaminas, los minerales y la fibra; el orden mencionado no hace mención a la importancia de éstos

Y así podemos señalar, entre otras muchas, la necesidad de introducir en el aula, para la consecución de competencias basadas en el “saber hacer”, la Metodología Activa:

Reserve tiempo todos los días para dedicar a sus estudios para que pueda hacer su trabajo y aún tener tiempo para disfrutar?. Siempre es mejor estudiar un poco cada día que

Hay muchas cosas que podemos hacer cuando nos encontramos ante una emoción intensa, lo importante es determinar cuáles de ellas son las adecuadas para cada niño y

Però, hi ha al- guna cosa més, perquè aquesta mateixa posada en escena és també una con- fessió de la tragèdia de la invisibilitat social on es veu abocat el protagonista, i els

En conjunto tenemos que bajo esta modalidad de la composición de valor de la mercancía, la máquina, que no crea un valor nuevo, al hacer «desapa- recer» el valor que porta en cada