Novedades de Twnel – Diciembre 2020

by | Dec 14, 2020 | Plataforma | 0 comments

Durante el último mes hemos agregado y mejorado varios aspectos de la plataforma y en particular del bot spec.

  • Nuevos APIS de la plataforma
  • Extensión del Twnel chatbot spec soportando filtros Jinja
  • Nuevos Input Types
  • Mejoras a input types existentes

Nuevos APIS de la plataforma

list_superbots

Devuelve superbots activos que indican tanto la identificación como el nombre del chatbot. La identificación es útil para activar un bot usando el endpoint trigger_chatbot

trigger_chatbot

Al proporcionar un chatbot_id válido, esta API activa el chatbot para un contacto.

Esto puede ser muy útil en caso que un agente necesite que un usuario ejecute un flujo que no esta disponible para ella por defecto.

Soporte de integración total con aplicaciones de terceros a través de enlaces profundos (deep link).

Útil para abrir conversaciones y enviar mensajes desde otras aplicaciones.

Este servicio amplía la funcionalidad de enlace profundo para la instalación y redirige al usuario a una sala de chat de la empresa con un mensaje de inicio.

Se incluye una bandera para controlar si se debe completar el campo de texto o también enviar el mensaje automáticamente.

  • La acción controla qué tipo de enlace generar.
  • Solo se admite mensaje  start_chat para incluir como mensaje inicial para un nuevo chat con una empresa. La longitud máxima es 1792 caracteres
  • Se generará un enlace único. No se necesita ningún teléfono dada la singularidad del enlace
  • Enviar controles de parámetro si solo se debe completar el campo de texto o también enviar el mensaje automáticamente
  • El parámetro de teléfono se puede especificar para vincular el enlace a un usuario en particular (el cliente lo valida)

Cliente móvil

El cliente utilizará el enlace profundo para enviar el mensaje a la empresa en nombre del usuario. Si llega el parámetro de teléfono, el cliente verifica si hay una coincidencia entre el parámetro de teléfono de enlace profundo y el propietario de la cuenta. Si el parámetro de envío es “falso”, el cliente completará el campo de texto; si es “verdadero”, llenará el campo de texto y enviará el mensaje automáticamente.

Extensión del Twnel chatbot spec soportando filtros Jinja

Estos filtros pueden ser muy útiles, pues ayudan a simplificar varias tareas. Veamos unos ejemplos:

Filtros para formatear datos

Formatear un valor como moneda

Por ejemplo, si queremos que el valor en la variable de session se formate con el signo $ antes del valor, podemos usar:

{{ variables.session.precio | currency('en_US.UTF-8')}}
Formatear un objeto JSON com un JSON string

Esto es particularmente muy útil cuando un API retorna un objeto JSON para crear un input type tipo radio o checkbox. Sin este filtro, es necesario crear una función similar a esta:

"create_radio_options": {
"runtime": "js",
	"version": "5",
	"code": "function create_radio_options(input) { var data = input['data']; var options = []; for (key in data) { options.push({ 'id': key, 'label': data[key] }); } return JSON.stringify(options); }",
	input": {
		"data": "object"
	},
	"output": {
		"type": "string",
		"values": [],
		"sample": "[{"id": "0","label": "Bogotá"}]"
	}
}

Y una transición y su respectiva acción de tipo call_function similar a esta:

"create_region_options": {
	"type": "call_function",
	"vars": {},
	"eval": {
	"function": "create_radio_options",
		"input": {
			"data": "{{ transition.search_region.output.answer }}"
		}
	}
}

Con el filtro “{{transition_lista_de_ciudades.output.answer.data | to_json_str}}”
La acción seleccione_ciudad con input type radio, por ejemplo, se reduce a:

"seleccione_ciudad": {
	"type": "send_message",
	"vars": {},
	"messages": [
		"Por favor selecciona una tienda:"
	],
	"input": {
		"method": "keyboard",
		"type": "radio",
		"data": "{{transition_lista_de_ciudades.output.answer.data | to_json_str}}"
	}
}

Esto reduce el número de transiciones y acciones y evita crear una función.
Como se puede ver en la acción seleccione_ciudad se usa el valor retornado por un API y se le aplica este filtro y ya.   

Filtros para generar valores aleatorios

Para generar un número aleatorio entre 0 y 100, se puede usar:

{{ range(100) | random }}

Usándolo en un mensaje quedaría:

"su_numero": {
	"type": "send_message",
	"vars": {},
	"messages": [
		{
			“Su número es: {{ range(100) | random }},
		}
	]
}

Cambiando el range se define el rango de valores posibles.

Para obtener un número aleatorio entre 0 y 100 pero en intervalos de 10:

{{ range(100) | random(step=10 }}

Para obtener un item aleatorio de una lista:
{{ [‘a’,’b’,’c’]|random }}

Para obtener una lista aleatoria a partir de otra lista:

{{ [‘a’,’b’,’c’]|shuffle }} produce esto [‘c’,’a’,’b’] o [‘b’,’c’,’a’] u otra combinación 

New Input types 

Recientemente hemos creado estos nuevos input types en el bot spec:

Checkbox

Es similar a la de radio, pero permite que el usuario seleccione más de una opción. En un flujo se veria asi:

Barcode

Este input type es muy poderoso. Permite escanear códigos de barras y códigos QR directamente desde dentro de un flujo de un chatbot. Un ejemplo seria:

"scan_barcode": {
	"type": "send_message",
	"vars": {},
	"messages": [
		"Por favor escanee un producto"
	],
	"input": {
	"method": "keyboard",
		"type": "barcode",
		"geotag": true,
		"display": "vertical",
		"data": [
			{
				"response": "Your Barcode was sent!"
			}
		]
	}
}

El atributo geotag, permite simultáneamente obtener la ubicación del usuario al momento de escanear un código.

Este video muestra un chatbot en acción para agregar productos al carro de compras en un supermercado leyendo códigos de barras de los productos. 

Mejoras a input types actuales

Al igual que con el input type barcode, hemos agregado el atributo (opcional) de geolocalización para todos los input type media (imagen, video, audio, PDF)

Para el input type media – image, desde ahora se puede escoger de donde se permite enviar la imagen. 

{
    "type": "send_message",
    "input": {
        "method": "keyboard",
        "type": "media",
        "geotag": true/false,
        "data": [
            { "media_type": "image" },
            { "picker": "camera/gallery/all" },
            { "facing": "back/front" }
        ]
    }
}

Se puede seleccionar si el usuario debe usar la cámara o accesar la galería de imágenes en su teléfono o cualquiera de las dos.

En el caso de que cámara sea una opción, se puede limitar qué cámara se puede usar: back o front

Te notificaremos cuando publiquemos
nuevos artículos, casos de uso,
podcasts y webinars.

Copy link
Powered by Social Snap