Diferencia entre revisiones de «Pago asistido»
| Línea 153: | Línea 153: | ||
Caso de no existir, ver instrucciones en [[#Instalación de mdpay en versiones anteriores de VIVAit Call]] | Caso de no existir, ver instrucciones en [[#Instalación de mdpay en versiones anteriores de VIVAit Call]] | ||
| + | <br> | ||
=== Activar mdpay === | === Activar mdpay === | ||
Revisión del 16:00 19 feb 2026
Sumario
- 1 Pago asistido "mdpay"
- 2 Configuración y puesta en marcha
- 2.1 Disponer de canal mdpay
- 2.2 Disponer de las modificaciones específicas en dialplan
- 2.3 Activar mdpay
- 2.4 Para llamadas inversas, adaptar el trunk SIP a la PBX externa
- 2.5 Definir tiempos de espera
- 2.6 Desactivar trazas de multifrecuencia (desactivar DTMF, verbose máximo 3)
- 2.7 Definir que llamadas pasarán tendrán pago asistido
- 3 API Omnisuite para mdpay
- 4 Instalación de mdpay en versiones anteriores de VIVAit Call
1 Pago asistido "mdpay"
1.1 Introducción
mdtel ha desarrollado en VIVAit Call un módulo específico que facilita la existencia de pago telefónico con tarjeta de crédito en pasarela de pago, pero asistido por agente humano, cumpliendo normativa PCIDSS.
Esta funcionalidad es muy útil en (por ejemplo) entornos de televenta, donde el cliente desea realizar una compra, llama por teléfono a un contact center, el agente consigue la venta, y para realizar el pago ha de pasarle a la plataforma de pagos. El funcionamiento tradicional ha sido que el agente transfiere la llamada a la plataforma de pagos, el cliente paga, y el agente posteriormente recupera la llamda para continuar con la venta.
Este modelo tradicional adolece del problema de la falta de control del proceso por parte del agente; con la funcionalidad "mdpay" se consigue que el agente continúe en comunicación con el cliente durante el proceso de pago, cumpliendo normativa PCIDSS.
- El agente no escucha ni ve información alguna de tarjeta de crédito.
- VIVAit Call no almacena información alguna sobre tarjeta de crédito durante el proceso de pago asistido.
1.2 Nomenclatura
| Término | Definición |
|---|---|
| Cliente | Persona que desea realizar la compra |
| Agente | Profesional de ventas en contact center que atiende al cliente |
| Pasarela de pagos | Entorno de pagos telefónicos que se encarga de realizar la transacción de pago |
| PBX externa | Contact center al que está conectado el agente |
| CRM | Aplicación de negocio que maneja el agente |
| Identificador de pago | Identificador único del pago de la transacción |
1.3 Interconexiones
La arquitectura del sistema y sus interconexiones s la reflejada en la figura siguiente.
1.4 Proceso general
El proceso general para la realización del pago asistido será el que se muestra a continuación; se muestra el flujo para llamadas directas; el flujo para llamadas inversas será el equivalente a la inversa :
- El cliente llama a la PBX externa y es atendido por un agente; la comunicación entre cliente y agente no solo pasa por la PBX externa, sino también por VIVAit Call.
- Una vez conseguida la venta:
- Para iniciar el proceso de pago el agente pulsará un botón en el CRM de "inicio de pago asistido".
- Este botón invocará a una API en la PBX externa para el envío de códigos DTMF
###{numero Psasarela de pagos}*{Identificador pago}#. - Los códigos DTMF son capturados por VIVAit Call.
- VIVAit Call envía la llamada del cliente a la plataforma de pagos con los headers adecuados (UCID e identificador de pago).
- VIVait Call mantiene la llamada de agente, aparcándola (importante para que el agente no quede disponible y pueda entrarle otra llamada del contact center).
- Con la llamada en la plataforma de pagos y el agente aparcado:
- La plataforma de pagos:
- Realiza una llamada a VIVAit con los headers adecuados (UCID)
- Establece una multiconferencia entre la llamada entante de VIVAit Call y la llamada saliente a VIVAit Call
- Se asegura de no enviar DTMF's
- VIVAit Call:
- Correla llamada entrante de plataforma de pagos y llamada de agente aparcado
- Desaparca agente y le conecta la llamada entrante de la plataforma de pagos
- La plataforma de pagos:
Durante esta fase:
- El cliente podrá realizar el proceso de pago en la plataforma de pagos
- El agente seguirá manteniendo la comunicación con el cliente, pudiendo asistirle en todo lo que sea necesario
- El cliente no ve ni escucha ningún dato de tarjeta de crédito
- Una vez finalizado el pago
- La plataforma de pagos finalizará la multiconferencia
- VIVAit Call reconecta la llamada cliente-agente
2 Configuración y puesta en marcha
Para versiones de VIVAIt Call anteriores a la 5.2, las instrucciones de instalación se encuentran en #Instalación de mdpay en versiones anteriores de VIVAit Call
Los pasos fundamentales para poner en marcha el pago asistido serán:
- Disponer de canal mdpay
- Disponer de las modificaciones específicas en dialplan
ext_MARCAR_Externo.conf - Activar mdpay
- Para llamadas inversas, adaptar el trunk SIP a la PBX externa (añadir un contexto, damos como ejemplo
ext_mdpay_Particular.conf.ejemplo) - Definir tiempos de espera
- Desactivar trazas de multifrecuencia (desactivar DTMF, verbose máximo 3)
- Definir que llamadas pasarán tendrán pago asistido
2.1 Disponer de canal mdpay
Para confirmar que disponemos de canal mdpay, usaremos el comando de consola asterisk core show channeltypes
Ejemplo de salida
Type Description Devicestate Presencestate Indications Transfer ------------- ------------- ------------- ------------- ------------- ------------- Recorder Bridge Media Recording Channel Driver no no yes no Announcer Bridge Media Announcing Channel Driver no no yes no CBAnn Conference Bridge Announcing Channel no no yes no CBRec Conference Bridge Recording Channel no no no no UnicastRTP Unicast RTP Media Channel Driver no no no no MulticastRTP Multicast RTP Paging Channel Driver no no no no SIP Session Initiation Protocol (SIP) yes no yes yes DAHDI DAHDI Telephony yes no yes no IAX2 Inter Asterisk eXchange Driver (Ver 2) yes no yes yes mdtap Tap Channel Driver yes no yes yes mdpay Pay Channel Driver yes no yes yes Local Local Proxy Channel Driver yes no yes no Surrogate Surrogate channel used to pull channel f no no no no
En el ejemplo anterior se puede observar que el canal tipo mdpay (descripción "Pay Channel Driver") está instalado
2.2 Disponer de las modificaciones específicas en dialplan
En el archivo ext_MARCAR_Externo.conf encontraremos las siguientes líneas
;-----------------------------------------------------------------
[Cen_Marcar_Externo]
;-----------------------------------------------------------------
exten => _[*#%0-9a-zA-Z].,1,NoOp(MDMAREXT**CadMarcar=${Enr_CadMar}**CID=${Enr_CalID}*)
same => n,GotoIf($["${R_RUT_SAL_${ENR_RUTA_CAD}}"=""]?finLlamada)
same => n,GotoIf($["${R_RUT_NODO_${ENR_RUTA_CAD}}"=""]?:nodo)
;***********************MDPAY**********************
same => n,GotoIf($["${hay_mdpay}"!="1"]?finmdpay)
same => n,Set(activar_mdpay=)
same => n,GosubIf($[${DIALPLAN_EXISTS(Cen_mdpay_directo_Particular,${EXTEN},1)}>0]?Cen_mdpay_directo_Particular,${EXTEN},1)
same => n,GotoIf($["${activar_mdpay}"!="1"]?finmdpay)
same => n,Set(__MDPAY_SENTIDO=1)
same => n,Set(__MDPAY_CONTEXT=${CONTEXT})
same => n,Set(__MDPAY_EXTEN=${EXTEN})
same => n,Set(__MDPAY_PRIO=$[${PRIORITY}+2])
same => n,Goto(Cen_mdpay,${R_DEST_${ENR_RUTA_CAD}},1)
same => n(finmdpay),NoOp(Retorno mdpay)
;***********************MDPAY**********************
Caso de no existir, ver instrucciones en #Instalación de mdpay en versiones anteriores de VIVAit Call
2.3 Activar mdpay
2.4 Para llamadas inversas, adaptar el trunk SIP a la PBX externa
2.5 Definir tiempos de espera
2.6 Desactivar trazas de multifrecuencia (desactivar DTMF, verbose máximo 3)
2.7 Definir que llamadas pasarán tendrán pago asistido
3 API Omnisuite para mdpay
3.1 Introducción
En este documento definimos las invocaciones mínimas a realizar a endpoints de Omnisuite para activar el pago asistido Será necesario:
- Obtener Id de usuario
- Obtener UniqueId de la llamada del usuario
- Enviar tonos DTMF a esa llamada
3.2 Autenticación
Todas las peticiones deben incluir el siguiente encabezado de seguridad:
- Header: x-api-key
- Valor: El API KEY de usuario de omnisuite proporcionado.
3.3 Endpoints
3.3.1 Obtener ID de un usuario
Recupera el identificador de un usuario específico basado en filtros.
- Método: GET
- URL: https://omnisuite.cliente.com/users
- Parámetros de consulta (Query Params):
- fields: Especifica los campos a retornar (ej. id).
- filter: Criterio de búsqueda (ej. jac).
- sort: Orden de los resultados (ej. id).
Ejemplo de solicitud:
GET https://omnisuite.cliente.com//users?fields=id&filter=jac&sort=id
Ejemplo de respuesta:
{
"count": 1,
"rows": [
{
"id": 5
}
]
}
3.3.2 Consultar llamadas de un usuario
Obtiene el registro o estado de las llamadas asociadas a un ID de usuario.
- Método: POST
- URL: https://omnisuite.cliente.com/webbar/calls
- Cuerpo de la petición (JSON):
{
"userId": 5
}
Ejemplo de respuesta
{
"count": 1,
"rows": [
{
"abandoned": false,
"accountcode": "",
"answertime": "2026-02-10 14:53:54",
"answered": true,
"billableseconds": 0,
"channel": "SIP/Trunk_PrepoCopr0-00000022",
"callerid": "",
"calleridname": "/50002",
"calleridnum": "50002",
"connectedlinename": "JAC",
"connectedlinenum": "1004",
"context": "from-voip-provider",
"destination": "",
"destinationchannel": "SIP/jac-00000023",
"disposition": "ANSWERED",
"duration": 0,
"endtime": null,
"exten": "10000",
"holdtime": 6,
"lastapplication": "queue",
"lastdata": "Desarrollo,xX,,,300,,,,,",
"linkedid": "1770731628.77",
"membername": "jac",
"monitor": true,
"monitors": [
{
"filename": "/var/spool/asterisk/monitor/1770731628.76.wav",
"createdAt": "2026-02-10 14:53:54",
"mixmonitorid": "",
"status": "rec"
}
],
"monitorFilename": "/var/spool/asterisk/monitor/1770731628.76.wav",
"mohtime": 0,
"queue": "Desarrollo",
"sipcalllinkedid": "23f0e8b840c85fd057d7474a5fc68844@172.25.129.174:0",
"sipcalluniqueid": "067515e4161a16e9594cd0aa6ea74fed@172.25.128.251:5060",
"starttime": "2026-02-10 14:53:48",
"tag": null,
"type": "inbound",
"uniqueid": "1770731628.76",
"unmanaged": false,
"UserId": 5,
"routeid": "287"
}
]
}
3.3.3 Enviar DTMF a una llamada
Permite enviar una secuencia de dígitos DTMF a una llamada activa.
- Método: POST
- URL: https://omnisuite.cliente.com/webbar/send-dtmf
- Cuerpo de la petición (JSON)
{
"digits": "###444*12345#",
"duration": 100,
"uniqueId": "1770732063.80",
"userId": 5
}
El valor “duration” indica la duración del envío en ms (en el ejemplo anterior serían 100ms, que es el valor recomendado)
Ejemplo de respuesta:
{
"error": false,
"message": "SendDTMF [###444*12345#] executed"
}
4 Instalación de mdpay en versiones anteriores de VIVAit Call
En el caso que no este instalado procederemos a incluir el canal en asterisk
En el directorio de los fuentes de asterisk, tipicamente /usr/src/MDtel/asterisk hay que añadir el archivo chan_mdpay.c en el directorio channels
tipicamente: /usr/src/MDtel/asterisk/channels/chan_mdpay.c
En el directorio raiz de los fuentes de asterisk
- lanzamos el comando
make - una vez compilado sin errores paramos asterisk(
/etc/init.d/asterisk stop) - lanzamos el comando
make installpara poner los binarios en su lugar - volvemos a arrancar asterisk (
/etc/init.d/asterisk start)
En la consola asterisk podemos teclear el comando core show channeltypes
y ahora debe aparecer el canal mdpay Pay channel Driver
Documentar que va en el dialplan