Regal
Regal.io es una plataforma de agentes de IA de voz que ayuda a las empresas a impulsar mejores experiencias del cliente a través de conversaciones inteligentes y en tiempo real en todos los canales.
Esta integración es mantenida por Regal.
Al integrar Regal con Braze, puedes unificar datos de comportamiento e IA conversacional para orquestar recorridos del cliente personalizados y omnicanal. Braze captura señales a lo largo del ciclo de vida del cliente, que Regal utiliza para potenciar conversaciones con agentes de IA, enrutamiento y decisiones en tiempo real.
Usa datos de Braze para dar forma a lo que dicen tus agentes de IA, cómo responden y cuándo interactuar. Envía resultados de conversaciones e información de vuelta a Braze para mejorar la segmentación y el marketing del ciclo de vida. Desencadena llamadas y SMS impulsados por IA en momentos clave del recorrido del cliente, y haz seguimiento en Braze en función de lo que ocurra en cada conversación.
Requisitos previos
| Requisito | Descripción |
|---|---|
| Cuenta de Regal | Se requiere una cuenta de Regal para aprovechar esta integración. |
| Clave de API de Regal | Una clave de API de Regal te permite enviar eventos desde Braze a Regal. Envía un correo electrónico a [email protected] para obtener esta clave. |
| Transformación de datos de Braze | Se requiere una Transformación de datos para recibir datos de Regal. |
Integración: Enviar datos de Braze a Regal
Utiliza webhooks de Canvas o Campaign de Braze para enviar datos de perfil de usuario y eventos de Braze a Regal.
Paso 1: Crear nuevos contactos en Regal
Crea un Canvas o Campaign que envíe webhooks a Regal cada vez que crees un nuevo perfil de Braze que deba estar disponible para llamadas y mensajes de texto en Regal.
-
Crea un Canvas o Campaign titulado “Create New Contact for Regal” y selecciona Basado en acciones como tipo de entrada.
-
Configura la lógica de desencadenamiento en Evento personalizado y luego selecciona el evento que se activa cuando se crea un perfil con un número de teléfono. Regal también recomienda añadir un filtro para confirmar que el campo de teléfono está establecido.
-
En tu nueva plantilla de webhook, completa los siguientes campos:
- URL del webhook: https://events.regalvoice.com/events
- Cuerpo de la solicitud: Texto sin formato
Encabezados de solicitud y método
Regal también requiere un encabezado HTTP para autorización y un método HTTP. Los siguientes están incluidos en la plantilla como pares clave-valor en la pestaña Configuración:
- Método HTTP: POST
- Encabezados de solicitud:
- Authorization:
{{<REGAL_API_KEY>}} - Content-Type: application/json
- Authorization:
Cuerpo de la solicitud
El único identificador obligatorio es un número de teléfono dentro de traits.phones. Usa el objeto traits.phones para asociar uno o más números de teléfono con un contacto. Cada número de teléfono puede almacenar su propia etiqueta, designación principal y estado de adhesión voluntaria de voz y SMS. Esta estructura es especialmente útil cuando un contacto tiene múltiples números de teléfono.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
{
"userId": "<uniqueIdentifier>",
"traits": {
"phones": {
"<primaryPhoneNumber>": {
"label": "Mobile",
"isPrimary": true,
"voiceOptIn": {
"subscribed": true,
"ip": "<ipAddress>",
"source": "<leadSource>",
"text": "<voiceOptInText>",
"timestamp": "<timestamp>"
},
"smsOptIn": {
"subscribed": true,
"ip": "<ipAddress>",
"source": "<leadSource>",
"text": "<smsOptInText>",
"timestamp": "<timestamp>"
}
},
"<secondaryPhoneNumber>": {
"label": "Home",
"isPrimary": false,
"voiceOptIn": {
"subscribed": false,
"ip": "<ipAddress>",
"source": "<leadSource>",
"text": "<voiceOptInText>",
"timestamp": "<timestamp>"
},
"smsOptIn": {
"subscribed": false,
"ip": "<ipAddress>",
"source": "<leadSource>",
"text": "<smsOptInText>",
"timestamp": "<timestamp>"
}
}
},
"email": "<email>",
"firstName": "<firstName>",
"lastName": "<lastName>",
"custom1": "<custom1>",
"custom2": "<custom2>"
},
"eventSource": "braze"
}
Este ejemplo de carga útil asume que los números de teléfono indicados incluyen el estado actual de consentimiento de voz y SMS. Si no es así, puedes omitir voiceOptIn y smsOptIn al crear el contacto y configurar un Canvas o Campaign separado para actualizar el consentimiento en el número de teléfono correspondiente cuando se recopile la adhesión voluntaria.
Paso 2: Actualizar la información de adhesión voluntaria
Si la adhesión voluntaria y la cancelación de suscripción pueden ocurrir en diferentes momentos de tu aplicación, actualiza Regal cuando los usuarios cambien su estado de suscripción.
Regal recomienda usar el esquema traits.phones para que puedas gestionar la adhesión voluntaria y la cancelación de suscripción por número de teléfono, en lugar de a nivel de contacto.
Usa la siguiente configuración de Canvas para enviar información de adhesión voluntaria actualizada a Regal.
-
Crea un nuevo Canvas o Campaign titulado “Send Opt In or Out to Regal”.
- Selecciona una de las siguientes opciones de desencadenamiento y luego selecciona el campo que representa el estado de adhesión voluntaria del usuario:
- Campo de perfil de usuario actualizado
- Actualizar estado del grupo de suscripción
- Estado de suscripción
- En tu nueva plantilla de webhook, completa los siguientes campos:
- URL del webhook: https://events.regalvoice.com/events
- Cuerpo de la solicitud: Texto sin formato
Encabezados de solicitud y método
Regal también requiere un encabezado HTTP para autorización y un método HTTP. Los siguientes están incluidos en la plantilla como pares clave-valor en la pestaña Configuración:
- Método HTTP: POST
- Encabezados de solicitud:
- Authorization:
{{<REGAL_API_KEY>}} - Content-Type: application/json
- Authorization:
Cuerpo de la solicitud
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"userId": "<uniqueIdentifier>",
"traits": {
"phones": {
"<phoneNumber>": {
"voiceOptIn": {
"subscribed": "<voice_optin_subscribed>",
"ip": "<ipAddress>",
"source": "<optInSource>",
"text": "<voiceOptInText>",
"timestamp": "<timestamp>"
},
"smsOptIn": {
"subscribed": "<sms_optin_subscribed>",
"ip": "<ipAddress>",
"source": "<optInSource>",
"text": "<smsOptInText>",
"timestamp": "<timestamp>"
}
}
}
},
"eventSource": "braze"
}
También puedes incluir atributos adicionales de perfil de usuario en esta carga útil para mantener otros atributos actualizados al mismo tiempo.
Paso 3: Enviar eventos personalizados
Configura un Canvas o Campaign para cada evento clave que quieras enviar a Regal.
Estos eventos hacen más que desencadenar comunicaciones (por ejemplo, un mensaje de texto de confirmación cuando un cliente potencial completa el registro). Proporcionan el contexto en tiempo real que impulsa cómo los agentes de BrazeAI hablan, toman decisiones y dirigen conversaciones a lo largo del recorrido del cliente. Al enviar datos de eventos y atributos desde Braze, permites que los agentes de IA adapten las conversaciones en función del comportamiento, las preferencias y la etapa del ciclo de vida de cada usuario.
Por ejemplo, los eventos y atributos de Braze se pueden usar en Regal para:
- Personalizar el discurso del agente de IA: Hacer referencia al comportamiento reciente o al interés en productos directamente en las conversaciones.
- Ejemplo: Si un usuario exploró opciones de seguros de vida, el agente puede hacer referencia a
contact.firstNameycontact.brazeProductInteresten la conversación.
- Ejemplo: Si un usuario exploró opciones de seguros de vida, el agente puede hacer referencia a
- Impulsar la lógica dinámica de conversación: Ajustar lo que el agente prioriza en tiempo real.
- Ejemplo: Si
contact.brazeAgees mayor que 65, priorizar la cobertura Medicare; de lo contrario, centrarse en los planes ACA y el estado actual del seguro.
- Ejemplo: Si
- Habilitar enrutamiento y escalamiento inteligente: Dirigir las conversaciones según el valor o la intención.
- Ejemplo: Si
contact.brazeLeadTieres “High Value”, transferir a un agente sénior después de la cualificación; de lo contrario, continuar con el agente de IA.
- Ejemplo: Si
- Alinear mensajes y ofertas: Adaptar lo que el agente presenta según el contexto de la Campaign.
- Ejemplo: Si
contact.brazeCampaignNamees “Spring Mortgage Promo”, destacar la oferta promocional durante la conversación.
- Ejemplo: Si
Crea un nuevo Canvas o Campaign titulado “Send Product Interest Event to Regal.”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
{
"userId": "<uniqueIdentifier>",
"traits": {
"phones": {
"<primaryPhoneNumber>": {
"label": "Mobile",
"isPrimary": true,
"voiceOptIn": {
"subscribed": true,
"ip": "<ipAddress>",
"source": "<optInSource>",
"text": "<voiceOptInText>",
"timestamp": "<timestamp>"
},
"smsOptIn": {
"subscribed": true,
"ip": "<ipAddress>",
"source": "<optInSource>",
"text": "<smsOptInText>",
"timestamp": "<timestamp>"
}
},
"<secondaryPhoneNumber>": {
"label": "Home",
"isPrimary": false,
"voiceOptIn": {
"subscribed": false,
"ip": "<ipAddress>",
"source": "<optInSource>",
"text": "<voiceOptInText>",
"timestamp": "<timestamp>"
},
"smsOptIn": {
"subscribed": false,
"ip": "<ipAddress>",
"source": "<optInSource>",
"text": "<smsOptInText>",
"timestamp": "<timestamp>"
}
}
},
"email": "<email>",
"firstName": "<firstName>",
"lastName": "<lastName>",
"brazeProductInterest": "Life Insurance",
"brazeAge": 68,
"brazeLeadTier": "High Value",
"brazeCampaignName": "Spring Insurance Promo"
},
"name": "Product Interest Captured",
"properties": {
"action": "Viewed Product Comparison",
"productCategory": "Life Insurance",
"intentScore": "High",
"lastPage": "Compare Life Insurance Plans",
"readyToCommit": true
},
"eventSource": "braze"
}
Atributos de contacto actualizados
Regal también recomienda enviar atributos clave del perfil de usuario en las cargas útiles de eventos para que Regal tenga atributos de contacto actualizados cuando ocurran eventos clave.

Si tienes preguntas sobre qué eventos enviar a Regal o cómo configurar estos Canvas y Campaigns, envía un correo electrónico a [email protected].
Integración: envío de datos de Regal a Braze
Utiliza los webhooks de informes de Regal y la transformación de datos de Braze para enviar eventos de informes de Regal (como SMS.sent y call.completed) a Braze. Después de mapear estos eventos, aparecen en los perfiles de usuario y están disponibles para segmentación, Canvas y Campaigns.
Paso 1: Crear una transformación de datos en Braze
Crea una transformación de datos para cada webhook de Regal que planees enviar a Braze.
Para crear una transformación de datos:
- Ve a la página Transformaciones en tu panel de Braze.
- Dale un nombre a tu transformación y haz clic en Crear transformación.
- En la lista de transformaciones, selecciona Ver acciones y selecciona Copiar URL del webhook.
Paso 2: Habilitar webhooks de informes en Regal
Para configurar webhooks de informes:
-
Ve a la aplicación de Regal y abre la página Configuración.
-
En la sección Webhooks de informes, haz clic en Crear webhooks.
-
En el campo de entrada del endpoint del webhook, agrega la URL del webhook de la transformación de datos de Braze correspondiente a la transformación de datos asociada.
Actualización de un endpoint
Cuando editas un endpoint, la caché puede tardar hasta 5 minutos en actualizarse y enviar eventos a tu nuevo endpoint.
Reintentos
Actualmente, Regal no reintenta estos eventos. Si Braze no responde en 5 segundos, Regal descarta el evento. Regal planea agregar reintentos en una versión futura.
Eventos
Para obtener la lista completa de eventos de informes, definiciones de propiedades y cargas útiles de ejemplo, consulta la guía de webhooks de informes de Regal.
Paso 3: Transformar eventos de Regal en eventos de Braze
La característica de transformación de datos de Braze te permite mapear eventos entrantes de Regal al formato necesario para agregarse como atributos, eventos o compras en Braze.
-
Nombra tu transformación de datos. Se recomienda configurar una transformación de datos por cada webhook de evento.
-
Para probar la conexión, crea una llamada saliente desde el escritorio del agente de Regal a tu teléfono y envía el formulario de resumen de conversación para crear un evento
call.completed. -
Determina qué identificadores utilizarás para mapear tus contactos de Regal a tus perfiles de Braze. Los identificadores disponibles en los eventos de Regal incluyen:
userId- solo se establece en eventos si previamente enviaste este identificador para un contactotraits.phonetraits.email- solo se establece en eventos si previamente enviaste este identificador para un contacto
En las cargas útiles de eventos de Braze a Regal, Regal recomienda usar traits.phones para admitir múltiples números de teléfono y consentimiento a nivel de teléfono. En los eventos de informes de Regal enviados de vuelta a Braze, traits.phone puede seguir apareciendo como identificador en las cargas útiles de eventos.
Identificadores compatibles con Braze
- Braze no admite números de teléfono como identificador. Para usar esto como identificador, el número de teléfono puede establecerse como un alias de usuario en Braze.
- Al usar la transformación de datos de Braze, la dirección de correo electrónico puede utilizarse como identificador. Si la dirección de correo electrónico existe como un perfil en Braze, el perfil existente se actualizará. Si la dirección de correo electrónico aún no existe en Braze, se creará un perfil solo con correo electrónico.
Ejemplos
Desencadenar un correo electrónico desde Braze basándose en una disposición de llamada en Regal
La siguiente carga útil de ejemplo muestra un evento call.completed en Regal.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
"userId": "123",
"traits": {
"phone": "+15555550123",
"email": "[email protected]"
},
"name": "call.completed",
"properties": {
"agent_firstname": "Alex",
"agent_fullname": "Alex Lee",
"agent_id": "[email protected]",
"direction": "OUTBOUND",
"regal_voice_phone": "+15555550200",
"regal_voice_phone_internal_name": "Sales Line",
"contact_phone": "+15555550123",
"call_id": "WTxxxxx9",
"type": "Outbound Call",
"disposition": "Converted During Convo",
"notes": null,
"objections": null,
"campaign_name": "Life Insurance Quote Follow Up",
"campaign_friendly_id": "445",
"started_at": 1657855046,
"ended_at": 1657855053,
"completed_at": 1657855059,
"talk_time": 7,
"wrapup_time": 6,
"handle_time": 13,
"journey_uuid": null,
"journey_name": null,
"journey_friendly_id": null
},
"originalTimestamp": "1657855059",
"eventSource": "Regal Voice"
}
La siguiente transformación de datos de ejemplo mapea esto a un evento personalizado en Braze.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// The Braze /users/track endpoint expects timestamps in an ISO 8601 format. To use the Unix timestamp within Regal's call.completed event payload as the event timestamp in Braze must first be converted to ISO 8601. This can be done with the following code:
let unixTimestamp = payload.originalTimestamp;
let dateObj = new Date(unixTimestamp * 1000);
let isoString = dateObj.toISOString();
// This is a default template you can use as a starting point. Feel free to delete this entirely to start from scratch or to delete specific components as you see fit.
// First, this code defines a variable, "brazecall", to build up a /users/track request
// Everything from the incoming webhook is accessible via the special variable "payload". As such, you can template in desired values in your /users/track request with JS dot notation, such as payload.x.y.z
let brazecall = {
"events": [
{
"external_id": payload.userId,
"name": "Call Completed",
"time": isoString,
"_update_existing_only": false,
"properties": {
"agent_firstname": payload.properties.agent_firstname,
"agent_fullname": payload.properties.agent_fullname,
"agent_id": payload.properties.agent_id,
"direction": payload.properties.direction,
"regal_voice_phone": payload.properties.regal_voice_phone,
"regal_voice_phone_internal_name": payload.properties.regal_voice_phone_internal_name,
"contact_phone": payload.properties.contact_phone,
"call_id": payload.properties.call_id,
"type": payload.properties.type,
"disposition": payload.properties.disposition,
"notes": payload.properties.notes,
"objections": payload.properties.objections,
"campaign_name": payload.properties.campaign_name,
"campaign_friendly_id": payload.properties.campaign_friendly_id,
"started_at": payload.properties.started_at,
"ended_at": payload.properties.ended_at,
"completed_at": payload.properties.completed_at,
"talk_time": payload.properties.talk_time,
"wrapup_time": payload.properties.wrapup_time,
"handle_time": payload.properties.handle_time,
"journey_uuid": payload.properties.journey_uuid,
"journey_name": payload.properties.journey_name,
"journey_friendly_id": payload.properties.journey_friendly_id
}
}
]
};
// After the /users/track request is assigned to brazecall, you will want to explicitly return brazecall to create an output
return brazecall;
Actualizar atributos de perfil en Braze basándose en eventos contact.attribute.edited de Regal
La siguiente carga útil de ejemplo muestra un evento contact.attribute.edited en Regal. Regal envía este evento cuando un agente actualiza un atributo en el perfil de un contacto durante una conversación.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"userId": "123",
"traits": {
"phone": "+15555550123",
"email": "[email protected]"
},
"name": "contact.attribute.edited",
"properties": {
"agent_email": "[email protected]",
"contact_phone": "+15555550123",
"changes": {
"custom_properties": {
"annual_income": {
"old_value": "150,000",
"new_value": "300,000"
}
}
},
"created_at": "1657855462"
},
"originalTimestamp": "1657855462",
"eventSource": "Regal Voice"
}
La siguiente transformación de datos de ejemplo mapea los nuevos valores de propiedades personalizadas a los atributos relevantes en tus perfiles de Braze:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// This is an example template you can use as a starting point. Feel free to delete this entirely to start from scratch or to delete specific components as you see fit.
// Capture the key's updated property value within the 'changes' object and store this in an attributes variable that can be used in the /users/track request
const changes = payload.properties.changes.custom_properties;
const attributes = {};
for (const key in changes) {
attributes[key] = changes[key].new_value;
}
// First, this code defines a variable, "brazecall", to build up a /users/track request
// Everything from the incoming webhook is accessible via the special variable "payload". As such, you can template in desired values in your /users/track request with JS dot notation, such as payload.x.y.z
const brazecall = {
"attributes": [
{
"external_id": payload.userId,
"_update_existing_only": false,
...attributes
}
]
};
// After the /users/track request is assigned to brazecall, you will want to explicitly return brazecall to create an output
return brazecall;
Mantén tus experimentos en Braze y Regal sincronizados usando eventos contact.experiment.assigned
La siguiente carga útil de ejemplo muestra un evento contact.experiment.assigned en Regal.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"userId": "123",
"traits": {
"phone": "+15555550123",
"email": "[email protected]"
},
"name": "contact.experiment.assigned",
"properties": {
"experiment_name": "Post Call Offer Test",
"experiment_id": "xxxx-xxxx-xxxx-xxxx",
"experiment_variant": "Aggressive Offer - 50%",
"journey_uuid": "xxxx-xxxx-xxxx-xxxx",
"journey_friendly_id": 220,
"journey_name": "Post Call Follow Up"
},
"originalTimestamp": "1657855118",
"eventSource": "Regal Voice"
}
La siguiente transformación de datos de ejemplo mapea esto a un evento personalizado en Braze.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// The Braze /users/track endpoint expects timestamps in an ISO 8601 format. To use the Unix timestamp within Regal's call.completed event payload as the event timestamp in Braze, it must first be converted to ISO 8601. This can be done with the following code:
let unixTimestamp = payload.originalTimestamp;
let dateObj = new Date(unixTimestamp * 1000);
let isoString = dateObj.toISOString();
// This is an example template you can use as a starting point. Feel free to delete this entirely to start from scratch or to delete specific components as you see fit.
// First, this code defines a variable, "brazecall", to build up a /users/track request
// Everything from the incoming webhook is accessible via the special variable "payload". As such, you can template in desired values in your /users/track request with JS dot notation, such as payload.x.y.z
let brazecall = {
"events": [
{
"external_id": payload.userId,
"_update_existing_only": false,
"name": "Contact Experiment Assigned",
"time": isoString,
"properties": {
"experiment_name": payload.properties.experiment_name,
"experiment_id": payload.properties.experiment_id,
"experiment_variant": payload.properties.experiment_variant,
"journey_uuid": payload.properties.journey_uuid,
"journey_friendly_id": payload.properties.journey_friendly_id,
"journey_name": payload.properties.journey_name
}
}
]
};
// After the /users/track request is assigned to brazecall, you will want to explicitly return brazecall to create an output
return brazecall;
Cancelar la suscripción de un contacto en Braze basándose en eventos contact.unsubscribed de Regal
La siguiente carga útil de ejemplo muestra un evento contact.unsubscribed en Regal.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"userId": "123",
"traits": {
"phone": "+15555550123",
"email": "[email protected]",
"ip": "78.97.213.166"
},
"name": "contact.unsubscribed",
"properties": {
"new_subscription": true,
"channel": "voice",
"text": null,
"ip": "207.38.149.143",
"source": "regalvoice.agent_desktop",
"timestamp": "1657855229"
},
"originalTimestamp": "1657855230",
"eventSource": "Regal Voice"
}
La siguiente transformación de datos de ejemplo cancela la suscripción del contacto en Braze.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// This is an example template you can use as a starting point. Feel free to delete this entirely to start from scratch or to delete specific components as you see fit.
// First, this code defines a variable, "brazecall", to build up a /users/track request
// Everything from the incoming webhook is accessible via the special variable "payload". As such, you can template in desired values in your /users/track request with JS dot notation, such as payload.x.y.z
let brazecall = {
"attributes": [
{
"external_id": payload.userId,
"_update_existing_only": true,
"subscription_groups" : [{
"subscription_group_id": "YOUR SUBSCRIPTION GROUP ID",
"subscription_state": "unsubscribed"
}]
}
]
};
// After the /users/track request is assigned to brazecall, you will want to explicitly return brazecall to create an output
return brazecall;
Desencadenar recorridos de seguimiento personalizados en Braze basándose en eventos call.analysis.available de Regal
Usa el evento call.analysis.available de Regal para identificar la razón principal por la que un cliente no convirtió y desencadenar un recorrido de seguimiento personalizado en Braze.
Por ejemplo:
- Cuando la objeción principal es el precio, envía un correo electrónico de seguimiento orientado al valor.
- Cuando la objeción principal es el momento, coloca al usuario en una secuencia de nurturing para reconsiderarlo más adelante.
- Cuando la objeción principal es la confianza, envía testimonios, calificaciones o garantías de cumplimiento.
- Cuando
needs_human_agentes verdadero, notifica a un equipo de ventas o soporte y suprime la mensajería automatizada adicional.
La siguiente carga útil de ejemplo muestra un evento call.analysis.available en Regal.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{
"traits": {
"phone": "+1XXXXXXXXXX",
"email": "[email protected]"
},
"name": "call.analysis.available",
"brand": "circle-bank",
"contact_email": "[email protected]",
"contact_phone": "+1XXXXXXXXXX",
"created_at": "1754079836",
"entity_type": "event",
"event_id": "9f5d8dbb2973b0e2359c6fd34111111",
"event_type": "regal_voice_event",
"external_id": "41dd1aa2-1111-f011-a2d5-00505611111",
"original_timestamp": "1754079835",
"profile_id": "62653af1111111173af128291e92",
"properties": {
"agent_email": "[email protected]",
"call_analysis": {
"purchase_intent": "medium",
"primary_objection": "price",
"secondary_objection": "needs_to_compare",
"product_interest": "Life Insurance",
"follow_up_required": true,
"follow_up_email_text": "Thanks for speaking with us today. I know cost is top of mind, so I wanted to send over a simple summary of the life insurance options we discussed and what may fit your budget.",
"recommended_next_action": "send_value_oriented_follow_up",
"needs_human_agent": false,
"customer_sentiment_label": "interested_but_hesitant"
},
"contact_phone": "+1XXXXXXXXXX",
"incoming_sip_headers": {
"Via": "SIP/2.0/UDP srv1.example.com;branch=z9hG4bK776asdhds",
"From": "<sip:[email protected]>;tag=1928301774",
"Call-ID": "a84b4c76e66710"
},
"is_ai_agent": true,
"outgoing_sip_headers": {
"Via": "SIP/2.0/TCP srv2.example.com;branch=z9hG4bKgsdh7723",
"To": "<sip:[email protected]>",
"User-Agent": "RegalVoiceAI/1.0"
},
"task_id": "WT7f3ea47fa6e6055aa847f0a62111111"
},
"originalTimestamp": "1754079835",
"source": "Regal Voice"
}
Usa una transformación de datos para mapear los campos de call_analysis (como primary_objection y needs_human_agent) a eventos personalizados o atributos de perfil de Braze. Luego construye la lógica de Canvas o Campaign en Braze que se ramifique según esos valores.
Actualizar atributos de perfil con enlaces de transcripción de eventos call.transcript.available
Usa el evento call.transcript.available para enviar un enlace a la transcripción completa de la llamada a Braze. Mapea la URL de la transcripción a un atributo del perfil de usuario de Braze con la transformación de datos para que tu equipo pueda acceder y revisar las conversaciones desde el perfil de usuario.
La siguiente carga útil de ejemplo muestra un evento call.transcript.available en Regal.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
{
"userId": "123",
"traits": {
"phone": "+15555550123",
"email": "[email protected]"
},
"name": "call.transcript.available",
"properties": {
"agent_email": "[email protected]",
"task_id": "WT953358e8822dd9333fc38dfbac25e1e1",
"call_summary": "The agent Yuri explained insurance options to Alex and he said he'll need to think about it before moving forward Agent politely ended the call.",
"contact_name": "Alex Smith",
"contact_phone": "+15555550123",
"is_voicemail": false,
"moments_count": 18,
"recording_id": "RE0118052841b7299d0630d1dff610c1fb",
"recording_link": "https://api.twilio.com/2010-04-01/Accounts/ACxxx/Recordings/xxx.mp3",
"recording_duration": 78.75987,
"request_timestamp": 1657799128,
"response_timestamp": 1657799136,
"sentiments": {
"contact_sentiment": 70,
"agent_sentiment": 75,
"agent_sentiment_reason": "Yuri was polite and attentive, effectively gathering information and providing a resource, which contributed to a positive interaction.",
"contact_sentiment_reason": "Alex was satisfied with the information provided but may have wanted more assistance regarding insurance options."
},
"trackers": [
{
"tracker_id": "4be87957-9140-4451-894a-bdbaed1f2460",
"tracker_name": "Refinance"
},
{
"tracker_id": "eb2577c6-5e23-4c65-9e04-5cc5d49eee7e",
"tracker_name": "High Intent"
}
],
"transcript": "[handling agent]: Hi Alex, this is Yuri with BrightCover Insurance. I'll be going over some insurance options with you today. [contact]: Sounds good. [handling agent]: Before we start, I'm going to transfer you to a specialist for a moment. One sec. [transfer agent]: Hi Alex, this is Lee. Just verifying a few details before sending you back to Yuri. [contact]: Okay. [handling agent]: Thanks, Alex. Based on what you shared, here are some plan options... [contact]: I'll need to think about it. [handling agent]: Totally understandable. Feel free to reach out anytime. Have a great day! END OF TRANSCRIPT",
"transcript_is_truncated": false,
"transcript_url": "https://app.regalvoice.com/transcripts/WT953358e8822dd9333fc38dfbac25e1e1"
},
"originalTimestamp": "1657843308",
"eventSource": "Regal Voice",
"eventId": "f49a3cf9cb1336683bd5f19dwe4c61147"
}