# Interacciones NodeJS

Las interacciones de tipo NodeJS se ejecutan en un entorno seguro, completamente aislado del resto del API.

![Interacción de tipo NodeJS](https://89506997-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LU0Ag2EwZQW2nOaxa2G%2F-LUm9mLoozVyRa0yUvUX%2F-LUmAr6CTMS_zH8Tq8Hg%2FScreenshot%202018-12-28%20at%2001.19.48.png?alt=media\&token=370435c6-9e35-42c6-83f9-823d06f4846d)

Este tipo de interacción brinda una consola de escritura y edición de código Javascript ES6, en la cual vienen precargadas varias herramientas para interactuar con APIs externas:

### Librerías

| Librería NPM    | URL                                          | Descripción                                                                                                                 |
| --------------- | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Request         | <https://github.com/request/request>         | Request is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default. |
| Request Promise | <https://github.com/request/request-promise> | The simplified HTTP request client 'request' with Promise support. Powered by Bluebird.                                     |
| Lodash          | <https://github.com/lodash/lodash>           | A modern JavaScript utility library delivering modularity, performance, & extras                                            |

Además, tendremos acceso a las siguientes variables:

### Variables

| Nombre         | Tipo     | Descripción                                                                                                                                                                                                                                                                                                                                                         |
| -------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| session\_id    | string   | Hace referencia a la ID de la conversación actual                                                                                                                                                                                                                                                                                                                   |
| session        | Object   | Es el objeto que almacena las [variables de sesión](https://help.wannabot.io/es/article/variables-globales-y-variables-de-sesion/) y que tiene la siguiente estructura: `{ "customer": {"name", "surnames", "full_name", "email", "phone", "address", "image"} }`                                                                                                   |
| bot            | Object   | <p>Es el objeto que almacena información sobre el Bot sobre el que se está ejecutando la sesión, y que tiene la siguiente estructura:</p><p><code>{ "\_id", "bot\_type" }</code></p>                                                                                                                                                                                |
| user\_response | string   | (No disponible en modo debug) Respuesta del usuario al bot, sólo si la respuesta es a ésta interacción, es decir, si no proviene de otra interacción.                                                                                                                                                                                                               |
| global\_vars   | Object   | Es el objeto que almacena el contenido de las [variables globales](https://help.wannabot.io/es/article/variables-globales-y-variables-de-sesion/) que vamos almacenando durante la conversación. Se puede acceder al valor de cada variable global a través de: `global_vars[nameOfGlobalVar]` lo que devolverá un objeto con una estructura: `{ "text", "value" }` |
| agent          | Object   | Es el objeto que almacena los datos del [Agente](https://help.wannabot.io/es/article/agentes/) con el cual ha sido publicado el Bot con el cual el usuario está manteniendo la conversación.                                                                                                                                                                        |
| end            | Function | Es la función a la que hay que llamar una vez hayamos terminado de procesar nuestro código, o de lo contrario el resultado nunca será procesado.                                                                                                                                                                                                                    |

{% hint style="danger" %}
Es obligatorio la llamada de la función `end()` una vez hayamos terminado de procesar nuestro script de NodeJS, o de lo contrario la interacción generará un error de `timeout`
{% endhint %}
