Está en la página 1de 95

GUIA CREACIÓN CHATBOT INTELIGENTE CON WATSON ASSISTANT

Esta guía se compone de 10 partes.

• Primera parte: Instalación del servicio Watson Assistant y creación del asistente.
• Segunda parte: Integración del Watson Assistant con página web.
• Tercera parte: Instalación aplicación Node-RED en la nube.
• Cuarta parte: Creación de un Bot en Telegram.
• Quinta parte: Watson Assistant como motor de un Bot de Telegram.
• Sexta parte: Creacion Intensiones Iniciar y Detener.
• Séptima parte: Instalación del servicio Watson IoT Internet of things Platform.
• Octava parte: Configuración Node-RED Nube para enviar comandos a Watson IoT
• Novena parte: Configuración Node-RED Local para recibir comandos desde Watson IoT
• Décima parte: Visualización en Bot estados desde el Node-RED Local.
PRIMERA PARTE: INSTALACIÓN DEL SERVICIO WATSON ASSISTANT Y CREACIÓN DEL ASISTENTE

1. En nuestra cuenta de IBM Cloud dirigirse al buscador y escribir en el buscador Watson Assistant y luego seleccionar
dicho servicio.

2. Seleccionar como ubicación Dallas y elegir el plan Lite


3. Elegir el plan Lite

4. El nombre del servicio se puede cambiar o dejar el que aparece por defecto

5. Aceptar términos y seleccionar Crear

6. Una vez creado el servicio, seleccionar Iniciar Watson Assistant


Nota: En este punto IBM le brindará un paso a paso de cómo crear su asistente utilizando su más reciente versión, sin
embargo, si bien de esta forma la creación del asistente es más sencilla, no se le puede entrenar ni personalizar de
forma óptima, por lo que en esta guía se usará la versión anterior

7. Se va a la sección “Manage” (símbolo de persona en la esquina superior derecha)

8. Aquí se despliega un menú con opciones, en este punto seleccionamos “Switch to classic experience” para crear
nuestro asistente usando la versión clásica

9. Se confirma que se desea pasar a la versión clásica


10. Ahora que se está en la versión clásica se procede a crear el asistente, para esto se selecciona “Create assistant”

11. Se le asigna un nombre al asistente, por ejemplo: Asistente Curso, Asistente Robot etc y se da clic en “Create assistant”

12. Una vez se tiene creado el asistente, se procede a crearle su módulo de diálogo seleccionando “Add dialog skill”
13. Se procede a asignarle un nombre al módulo de diálogo, por ejemplo “Dar soporte”, “Ayuda soporte” etc así como
definir el idioma que se usará.

14. Ahora que hemos creado el módulo de diálogo, accedemos a él.


15. Se va a usar unas intenciones que IBM tiene en su catálogo de contenido.

16. Dentro del catálogo de contenido, las intenciones que nos interesan para este ejemplo están en la categoría general,
de forma que hacemos clic en esta categoría para ver el listado de intenciones que maneja.

17. Una vez se ha identificado que dentro de esta categoría hay intenciones que son de nuestro interés, se procede a
agregar la categoría (no es posible seleccionar intenciones particulares, se debe agregar toda la categoría y eliminar
aquellas indeseadas).
18. Una vez agregada la categoría aparecerá una notificación, ahora se procede a volver a la sección anterior.

19. Volver a la sección de intenciones para ver las intenciones recientemente importadas.

20. Ahora que estamos en la sección de intenciones, debemos seleccionar todas aquellas que deseamos eliminar y hacer
clic en delete.
21. Se confirma que se desean eliminar las intenciones seleccionadas.

22. Como se puede observar, en este ejemplo solo se dejan dos intenciones de la categoría que acabamos de importar
del catálogo: General Ending y General Greetings, los cuales son las intenciones de saludar y despedirse del bot. Sin
embargo, se debe recordar que estas intenciones son genéricas, por lo que se aconseja personalizarlas con las
expresiones propias del país o de la región. Para esto accedemos a la primera intención.

23. Se procede a agregar los ejemplos que se consideren pertinentes para mejorar la interpretación del asistente. En este
caso para la despedida se pueden agregar diferentes palabras y frases, por ejemplo: chao, hasta luego, muchas gracias
etc
24. A continuacion se procede a ir a la sección de diálogos para programar las respuestas que el asistente le dará al
usuario al acceder a cada intención.

25. Una vez se está en la sección de Dialog, se procede a crear un nodo haciendo clic en “Add node”

Nota: Por defecto se tendrán dos respuestas preprogramadas: Bienvenido, la cual tiene la función de saludar cuando se
accede al chatbot, y En otras cosas, la cual responde cuando el texto ingresado por el usuario no ingresó a ningún otro
nodo de diálogo, es decir, cuando se ingresó algo que el asistente no logró interpretar.
26. A continuacion se va a programar el nodo de diálogo de las “General Endings”.

27. Escribir la respuesta que se desea que el Bot publique.


28. A continuacion se invita a editar la intensión General Greating adicionando más saludos.

29. Posteriormente en Dialogo colocar el dialogo General Greatings y editar la respuesta que deseamos que el bot publique.

30. Se invita a crear más intensiones por ejemplo: Intensión de fechas, de lugares y posteriormente adicionarlas al Dialogo
con la respectiva respuesta del Bot.
SEGUNDA PARTE: INTEGRACIÓN DEL WATSON ASSISTANT CON PÁGINA WEB.

1. Watson Assistant cuenta con diferentes herramientas que pueden ser integradas directamente con la plataforma de
IBM, una de ellas es el acceso al asistente por medio de una página web. Para incorporarla hay que ir a la lista de
asistentes.

2. En la lista seleccionar el respectivo asistente, en nuestro caso “Asistente Proceso Industrial”

3. Una vez nos encontramos en el asistente, a la derecha encontraremos una sección destinada a las integraciones
disponibles, aquí seleccionaremos “Integrate web chat”.
4. Ahora se procede a darle un nombre a esta integración, en este caso se le deja el nombre que viene por defecto y se
le da a Crear

5. Una vez creado, se tendrán diferentes pestañas que permitirán cambiar la configuración del asistente web, en la
primera pestaña le asignamos un nombre al asistente, en nuestro caso le asignamos “Asistente Proceso Industrial”,
posteriormente le asignamos los colores que tendrá y pasamos ahora a la sección de Launcher.

Nota: A la derecha tendremos una previsualización del asistente, por lo que se aconseja ir ajustando los colores e
interactuar con la previsualización para probarlos.
6. En esta sección podremos ajustar el mensaje emergente que tendrá el asistente para que el usuario decida acceder a
él. En este caso para una página abierta en computador se asignó el mensaje “¡Hola!, soy tu asistente virtual, espero
poder ayudarte”, se previsualiza a la derecha cómo se verá y se selecciona la pestaña del acceso por dispositivo móvil.

7. Para los dispositivos móviles se tienen que usar mensajes más cortos, por lo que en este caso se deja como ““¡Hola!,
soy tu asistente virtual”, posteriormente se pasa a la pestaña “Home screen”
8. En esta sección se ajusta lo que verá el usuario al abrir el asistente, donde se ajusta un saludo y 3 sugerencias para
el usuario. En nuestro caso se dejó de la siguiente forma:

9. En este punto ya se configuró lo que deseamos, por lo que finalmente se pasa a la última ventana, la cual tendrá el
código que podremos poner en una página web para agregar este asistente, se copia y finalmente se guarda todo.
10. Si posteriormente deseamos hacer alguna modificación, encontraremos el web chat en la misma zona de integraciones
a la que accedimos al principio.

11. En caso de que no se cuente con una página web para poner este asistente, de forma alternativa se puede tener un
link de acceso al asistente al cual se puede acceder desde cualquier parte del mundo. Para obtener este link debemos
acceder a la misma sección donde están las integraciones, pero en su lugar seleccionar la opción “Preview”
12. Y en esta sección podremos copiar el link de acceso.
TERCERA PARTE: INSTALACIÓN APLICACIÓN NODE-RED EN LA NUBE

1. Abrir nuestra cuenta de IBM Cloud si tiene inconvenientes al abrir IBM recomienda usar el explorador Firefox. Estando
en IBM Cloud dirigirse al buscador y escribir Node-RED.

2. En la interfaz que se abre dar clic en la pestaña Create.


3. Escribir un nombre personalizado para esta aplicación que estamos creando. El nombre tiene que ser único para no
generar conflicto con otros usuarios que ya hayan creado una Aplicación en Node-RED de esta forma se aconseja esta
sintaxis.
Ejemplo: Node-Red-Nube-XXX-YY (En donde XXX es el nombre del estudiante, YY es un numero de dos dígitos)

4. En Región escoger la como región Dallas y en Grupo Default. Luego clic en Crear.
Nota: No escoger Washington ya que se han tenido problemas cuando se escoge un servidor allá.
5. Cuando el servicio termine de cargar dar clic en Deploy your app.

6. En Deployment Automation seleccionar Servicio Kubernetes.


7. Dar clic en Nuevo.

8. En la ventana que se abre dar clic en Aceptar.

9. A continuación dar clic en crear nuevo.


10. Se abre otra pestaña y seleccionamos la opción gratuito.

11. Se da clic en crear.


12. Automáticamente se empieza a crear el cluster. Esperar unos minutos.

13. La forma de saber si ya se terminó el proceso es si en la pestaña anterior aparece en el campo nombre de cluster:
mycluster-free.
14. A continuacion en el campo regio de registro de conenedor seleccionemos Franfurt (Nos ha dado buenos resultados) ,
luego en región del cluster Franfurt , verificar que nombre del cluster dice mycluster-free y finalmente Siguiente.

15. Posteriormente en Region tambien seleccionemos Frankfurt y luego Crear.


16. A continuacion debe aparecer una pantalla como la siguiente figura:

17. Después de unos minutos en el campo de Delivery Pipelines debe aparecer en Esta en curso, en este caso “En curso”
apareció abajo, pero tambien puede aparecer arriba.

Nota: este proceso puede demorar hasta 10 minutos, para saber si ya termino se puede ir actualizando la página, en
vez de en curso debe decir Éxito.
18. Refrescamos la página y en la URL de aplicación debe aparecer un enlace, esto indica que el Servicio de Node-Red
en la nube ya se creó exitosamente.

19. Dar clic en la URL de aplicación y verificar que sale la siguiente imagen.
20. Dar clic en Next.

21. Crear un nuevo usuario y contraseña para Node-RED Nube (Ojo estas credenciales mejor anotarlas en Block de notas)
luego Next
22. Clic en Next

23. Luego clic en Finish

24. Luego damos clic en Go to Node-RED.


Nota: Si no aparece esta ventana de varias veces a refrescar en el navegador, si no funciona use otro Navegador.
25. Digitar el usuario y contraseña recién creados.
26. Y finalmente ya tenemos creado el Node-RED en la nube.

27. Se recomienda guardar esta página en Favoritos, ya que se usará frecuentemente.


CUARTA PARTE: CREACION DE UN CHATBOT EN TELEGRAM

1. Abrir Telegram desde el PC o desde el celular.

2. En el buscador de Telegram escribir BotFather.

3. Al interior del chat con BotFather dar clic en Start.

4. Dar clic en newbot.

5. Escribir el nombre que se le va a colocar al Bot. (En mi caso coloque el nombre profebot)
6. Luego BotFather pregunta por el nombre del usuario, que obligatoriamente debe comenzar con el simbolo @ en mi
caso coloque @profeIoTbot

7. Enseguida BotFather mostrara un Token, este Token se debe Copiar y Pegar en un bloc de notas. Se utilizará más
adelante.

8. A continuación, en el buscador de Telegram escribir Manybot.


9. Dar clic en Start

10. Luego dar clic en addbot.

11. Pegar el Token copiado anteriormente.

12. Ya se tiene un Bot en Telegram creado.


QUINTA PARTE: WATSON ASSISTANT COMO MOTOR DE UN BOT DE TELEGRAM

1. Agregar los nodos de Telegram, para esto dirigirse a la parte derecha en el menú y luego dar clic en Manage palette.

2. Aparece por defecto estos nodos.


4. Posteriormente escribir Telegram en el instalador, seleccionar node-red-contrib-telegrambot y dar clic en Install.

5. Dar clic en Install

6. Aparecerá un mensaje indicando que se instalaron estos nodos.


7. Se puede verificar que ya están los nodos de Telegram.

8. Ir a los Nodos de Telegram y arrastrar el nodo Receiver.

9. Dar doble clic en el nodo anteriormente arrastrado y en la parte derecha debe aparecer un menú para editar el nodo.

10. Dar clic en el lápiz de Editar.


11. Colocar en Bot-Name el nombre tal cual se creó el Bot, (En mi caso profebot) y pegar el Token previamente guardado
en el campo Token, posteriormente Add.

12. Luego dar clic en Done


13. Dirigirse a Function y arrastrar el node Function

14. Quedando de la siguiente forma

15. Las dos salidas del Telegram Receiver las vamos a unir con el nodo Function
16. Dar doble clic en el nodo Function y debe aparecer una ventana como en la imagen inferior.

17. En este nodo Function es en donde vamos a recibir los mensajes que escriba el usuario para posteriormente mandarlos
al Asistente de IBM que acabamos de crear. La propuesta es que el Bot funcione como intermediario de un proceso
industrial, como puede ser apagar y prender una Banda transportadora IoT, para que dé la sensación de que el usuario
final habla con esta banda. La información de los nodos en Node-RED trabajan con la siguiente estructura:

• El contenido de la salida de todos los nodos en Node-RED queda almacenado en el siguiente objeto:
msg.payload
• A su vez al interior de este objeto hay una variable en donde se almacena el contenido del nodo, esta variable
se llama: msg.payload.content

Adicionalmente, el Nodo de Telegram Receiver cuenta con un chatId, el cual es un código que indica qué usuario está
mandando el mensaje, el cual usaremos para mandarle la respuesta a dicho usuario con ese mismo chatId.

De esta forma en el código que se va a utilizar a continuación se va a revisar tanto la variable que almacena el contenido
del Nodo Telegram Receiver y el chatId, almacenando el contenido en el mensaje del Nodo Function.

• La variable salida de contenido del Nodo Telegram Receiver es msg.payload.content


• La variable que contiene el chatId del Nodo Telegram Receiver es msg.payload.chatId
• La variable salida del Nodo Function que almacena el mensaje es msg.payload
• La variable salida del Nodo Function que almacena el chatId es msg.chatId

El código interno base es el que se muestra a continuación, la sugerencia es copiar y pegar este código en el Nodo
Function, seguir con la práctica y verificar el funcionamiento al final de esta guia, luego si, una vez probada esta guia
revisar códigos, editarlos y hacer cambios al para futuras prácticas.

msg.chatId = msg.payload.chatId;
msg.payload = msg.payload.content;
return msg;
18. De esta manera copiar el código en el node Function y posteriormente dar clic en Done.

19. Ahora se arrastra un nodo “assistant V2” de la sección IBM Watson. Este nodo se conectará con el asistente
previamente creado y funcionará como intermediario, donde los mensajes que le ingresen será el texto que escribiría
el usuario y la salida del nodo contendrá la respuesta que daría el asistente.
20. Una vez se tiene el nodo conectado, se procede a hacer la conexión con el asistente creado, para esto debemos
dirigirnos a la lista de asistentes en la plataforma de Watson Assistant.

21. En la lista de asistentes ubicamos el que acabamos de crear, en este caso “Asistente Proceso Industrial”,
posteriormente accedemos a los ajustes del mismo.
22. En la sección de ajustes podremos encontrar los datos que nos permitirán conectarnos con el asistente, en este caso
debemos copiar el Assistant ID y el API key, para posteriormente pegarlos en el NodeRED, en la configuración del
nodo Assistant V2.
23. Ahora que tenemos el nodo del asistente correctamente configurado, se procede a agregar un nodo function a la salida
del asistente.

24. Este nodo function tendrá la función de recuperar la respuesta del asistente, la cual se encuentra en
msg.payload.output.generic[0].text, así mismo, ya que deseamos transmitirle la respuesta al usuario de Telegram que
interactuó con el chatbot, también recuperamos el chatId y así poder mandarle la respuesta al mismo usuario.

Para esto se usó el siguiente código (se recomiendo copiarlo y pegarlo de esta guía):

msg.payload = {
chatId : msg.chatId,
type : "message",
content : msg.payload.output.generic[0].text
}
return msg;
25. Ahora se arrastra un nodo sender de Telegram y se conecta a la salida de la función para enviar la respuesta al usuario.

26. En el nodo Telegram sender solo debemos seleccionar el bot previamente configurado en el nodo Telegram receiver.

27. Hasta este momento tenemos la configuración para recibir un mensaje del usuario de Telegram, el cual se envía al
asistente y, al recibir la respuesta, enviarla al usuario.
SEXTA PARTE: CREACION INTENSIONES ARRANCAR Y DETENER

1. Regresar de nuevo a Watson Assistant para crear dos nuevas intensiones con el objetivo de por ejemplo arrancar y
parar una maquina (O dar el comando de arranque y parada para que inicie un software etc)

2. Le asignamos un nombre a la intención, este será el nombre con el que se referirá a esta intención al programar las
interacciones, adicionalmente se le puede dar una descripción a la intención. En este caso creamos la intención Iniciar.
3. Se procede a poner un posible texto que podría ingresar el usuario para acceder a esta intención. En este caso para
la intención de iniciar el proceso el usuario podría ingresar “quiero iniciar el proceso” , “por favor arrancar la maquina” ,
“start” etc

4. Una vez ingresado el primer texto de ejemplo, aparecerá una lista con todos los ejemplos que se ingresen, mientras
más ejemplos se tengan, es más probable que la inteligencia del asistente interprete correctamente que el usuario
desea ejecutar dicha acción.
5. Dar clic en la flecha para atrás.

6. Una vez se está en la sección de Dialog, se procede a crear un nodo haciendo clic en “Add node”
7. Se le asigna un nombre al nodo de diálogo, en este caso Iniciar. Posteriormente se le asigna una condición para que
se active este nodo, en este caso se desea que el diálogo se active cuando se acceda a la intención Iniciar, por lo que
se pone un numeral (este símbolo significa intención) y se selecciona la respectiva intención.

8. Finalmente se procede a escribir la respuesta que dará el asistente cuando se acceda a este nodo de diálogo, en este
caso, será la respuesta que le dará al usuario cuando desee iniciar el proceso industrial.

Nota: Esta respuesta será importante para la programación en Node-Red Nube en los próximos pasos, se aconseja que la
respuesta sea, por ejemplo:

Comando de arranque recibido.


9. En este momento podemos probar si el asistente está detectando correctamente la intención Iniciar y si está dando la
respuesta que le acabamos de programar. Para esto vamos a hacer clic en “Try it”

10. Una vez se haya seleccionado Try it aparecerá un chat con el que podremos probar en cualquier momento el
funcionamiento del asistente. Aquí observamos el saludo que se tiene programado por defecto y procedemos a escribir
un mensaje que podría ingresar un usuario que desea Iniciar el proceso industrial, en este caso “Quiero prender la
máquina”.

Al haber ingresado el texto podremos observar la intención que el asistente detectó, en este caso detectó
correctamente la intención Iniciar y dio la respectiva respuesta.

Nota: en caso de que se haya equivocado en la detección de la intención, se puede desplegar el menú de intenciones con
la flecha hacia abajo para seleccionar la intención correcta y que la Inteligencia Artificial aprenda del error.
11. Ahora que ya vimos el proceso completo para crear una intención y programarle su respectiva respuesta, se procede
a hacer el mismo procedimiento para las demás intenciones, en este caso procedemos con la intención de detener el
proceso industrial. Para esto volvemos a la sección de intenciones y hacemos clic en “Create intent”

12. Se le asigna el nombre a la intención, se le da una descripción y se le escriben los ejemplos.

13. Se va a la sección de Diálogos y se le crea el nodo para esta intención, asignándole la respectiva respuesta.
Nota: Esta respuesta será importante para la programación en Node-Red Nube en los próximos pasos, se aconseja
que la respuesta sea, por ejemplo:

Comando de parada recibido.


SEPTIMA PARTE: INSTALACIÓN DEL SERVICIO WATSON IOT INTERNET OF THINGS PLATFORM.

1. En nuestra cuenta de IBM Cloud dirigirse al buscador y escribir en el buscador Internet y luego seleccionar el servicio
Internet of things Plattform.

2. En ubicación escoger Dallas.


3. El nombre del servicio se puede personalizar, por ejemplo : Watson-IoT-Assistant

4. Posteriormente se aceptan condiciones y lego clic en Crear.

5. Verificar si se abre una ventana como la de la imagen inferior, y luego dar clic en Launch.
6. Dirigirse a la parte superior derecha y dar clic en Iniciar Sesión.

7. Se abrirá una página en donde deberá colocar el email con la que abrió IBM Cloud y luego continuar.

8. Posterior al inicio dar clic en la parte superior derecha y dar clic en donde dice ID y luego clic en la parte de color azul.

9. Debe salir una ventana como la que se muestra a continuación, Lo primero que hay que hacer es crear un dispositivo
en Watson IoT para conectar el Watson Assistant.
10. Colocar la siguiente informacion:

Tipo de dispositivo: IoT


ID de dispositivo: Watson_Assistant_01

Luego clic en siguiente.

11. Clic en Siguiente.

12. Clic en siguiente.


13. Clic en Finalizar.

14. Copiar la informacion de seguridad en el bloc de notas.

15. Dar clic en atrás.


16. Verificar que ya está creado.
OCTAVA PARTE: CONFIGURACIÓN NODE-RED NUBE PARA ENVIAR COMANDOS A WATSON IOT

1. Regresar al Node-Red Nube, hasta este momento tenemos la configuración de Watson Assistant como motor del Bot
de Telegram. A continuación se creara un flujo para que el Watson Assistant tambien envíen comandos hacia el Watson
IoT, para esto arrastrar un nodo Funtion.

2. Esta función recuperará la salida del asistente y la almacenará en msg.payload a la salida de la función. Para esto se
usó el siguiente código:

var texto_asistente = msg.payload.output.generic[0].text


msg.payload = texto_asistente;
return msg;

3. Ahora se procede a crear un nodo switch para realizar las distintas acciones según lo ingresado por el asistente
4. En este nodo se deben colocar los mensajes definidos en el asistente para realizar cada acción.

5. A continuacion arrastrar un nodo Trigger.


6. Configurarlo de la siguiente forma.

7. Realizar lo mismo para ambas salidas del swich. El flujo debe estar quedando de esta forma.

8. A continuacion se arrastra un nodo Funtion para enviar estos datos en formato Json (Que es lo que eneitnede el
Watson IoT)

msg.payload = {
d:{
"cmd_arranque":msg.payload
}
}
return msg;
9. Arrastramos otro nodo Funtion cuyo codigo es el siguiente.

msg.payload = {
d:{
"cmd_parada":msg.payload
}
}
return msg;

10. Verificar que el lujo este quedando de esta forma:


11. A continuacion ir a menú hamburguesa y luego manage palete.

12. Escribir Watson-iot e instalar.


13. Ahora se arrastra un nodo output Watson IoT al flujo que tenemos actualmente.

14. Dar clic conectar como dispositivo, register y luego clic en el lápiz.
15. Colocar la informacion tal cual como esta en el bloc de notas.

16. Dar clic en Add-


17. Colocamos un nombre y luego Done.

18. Dar clic en Deploy y verificar que dice Conected.

19. Dirigirse a Watson IoT y verificar que el Device está conectado.


20. A continuación, desde el Bot escribir, por ejemplo: Por favor arrancar la maquina y verificar que el bot responde.

21. Tambien verificar que ese estado ya llego a Watson IoT.

22. Realizar la misma operación en el Bot con la frase: Por favor apagar maquina
23. Verificar que en Watson tambien llegaron los comandos.
NOVENA PARTE: CONFIGURACIÓN NODE-RED LOCAL PARA RECIBIR COMANDOS DESDE WATSON IOT

1. Previamente ya se creó una clave para la escritura de datos hacia el Watson IoT, a continuacion se creara una segunda
clave de lectura para que otro dispositivo pueda leer datos desde Watson IoT, para realizar esto en Watson IoT dar
clic en Aplicaciones.

2. En la parte superior derecha dar clic en Generar Clave API

3. A continuacion en Descripcion escribir “Clave API para PLC lea Tags desde Watson IoT” y luego dar clic en Siguiente.
4. En Rol escoger: Device Application y luego generar clave.

5. Una vez se haya generado la Clave API se recomienda pegar tanto la clave API como la señal de autenticación al bloc
de notas en donde se está pegando todas las claves.
6. Dirigirse a Docker y ejecutarel contenedor Node-Red Local
Nota: En este paso se tuvo que haber creado Node-RED como un contenedor, revise la Guía Contenedores por si no
lo ha hecho.

7. En Node-Red Local dirigirse a Manage Palette.

8. Escribir ibmiot seleccionar node-red-contrib-scx-ibmiotapp y luego dar clic en Instalar.

9. Verificar que los nodos están instalados como se muestra en la imagen inferior.
10. Arrastrar el nodo ibmiot in.

11. Dar doble clic a este nodo y en el campo de Autenticacion seleccionar API Key

12. Dar clic en el lápiz.


13. En nombre colocar, por ejemplo, “API PLC Lectura” y los dos siguientes campos son los campos que se había copiado
anteriormente al crear la API.

14. Dar clic en Add


15. Luego colocar la siguiente informacion:
Device Type: IoT Para hacer esto hay que quitar el chulito y borrar el signo mas, y ahí si escribir el nombre.
Device ID: SCADA_IoT_01 Se escribe este dispositivo ya que el PLC va a leer datos desde el SCADA IoT
Name: From SCADA_IoT_01

16. Verificar que la red está quedando de la siguiente forma:


17. Dar clic en Deploy y verificar que dice connected.

18. Arrastrar un nodo Switch.

19. Dar doble clic al nodo Switch y configurarlo de la siguiente manera.


20. Arrastrar un segundo nodo swich y configurarlo de la siguiente manera.

21. El diseño debe estar quedando de la siguiente manera

22. A continuación, se va a arrastrar un nodo Function.


23. Configurarlo de la siguiente manera:

var valor = msg.payload.d.cmd_arranque;

msg.payload = valor;

return msg;

24. Un segundo nodo Function. Y configurarlo de la siguiente manera.

var valor = msg.payload.d.cmd_parada;

msg.payload = valor;

return msg;
25. El diseño debe estar quedando de la siguiente manera.

26. Finalmente colocar dos nodos debug.

27. Verificar si está llegando la señal ya en maquina local. Por ejemplo, con arrancar maquina el nodo debug 1 tiene que
mostrar un True y luego False.

28. Ese comando arranque parada es el que ira conectado bien sea a una lógica de PLC, o algun Software, o algun otro
Hardware etc.
PARTE 10: VISUALIZACION EN WATSON ASSISTAN DE ESTADOS DE NODE RED LOCAL.

1. Para que Watson Assistant pueda leer datos desde un equipo externo es necesario crear una intensión, en donde le
preguntemos por ejemplo cual es el estado de la maquina y el bot responde con la palabra clave “estado” , en detalle
esto se muestra a continuacion:

2. Se procede a crear la intención para preguntar por el estado del proceso industrial de la misma forma.

3. Se entrena con preguntas como: Cual es el estado de la máquina, como esta la maquina etc
4. Se procede a crear el respectivo nodo de diálogo para esta intención, sin embargo, a diferencia de las anteriores
intenciones, aquí se desea leer un valor del proceso industrial y según este valor dar una respuesta diferente, cuando
esto suceda se debe ajustar la respuesta en formato JSON. Para esto se hace clic en los 3 puntos y se selecciona
“Open JSON editor”

5. Una vez abierto el editor se puede observar la estructura de la respuesta que se manda en formato JSON, lo que
haremos será crearle una respuesta de texto vacía en la sección “values” y le crearemos una nueva categoría que
usaremos para todas las variables que vayamos a leer del proceso industrial, en este caso la llamamos
“acción_especial” y, finalmente, en este caso particular le asignaremos el valor “estado”, este nombre se usará para
indicar cuando deseamos leer el estado del proceso industrial.

Nota: Si se quieren leer más valores del proceso industrial, se deberá realizar el mismo procedimiento, manteniendo el
nombre de la categoría y modificando el valor asignado para cada caso, por ejemplo:
"accion_especial": "elementos_procesados"
"accion_especial": "tiempo_ejecucion"
"accion_especial": "estado_sensor"

Para mayor comodidad se aconseja copiar y pegar el siguiente texto en el editor:

{
"output": {
"generic": [
{
"values": [
{
"text": ""
}
],
"response_type": "text",
"selection_policy": "sequential"
}
],
"accion_especial": "estado"
}
}
6. Una vez creada esta intensión el siguiente paso es crear un dispositivo IoT para que el Node-Red Local pueda escribir
los datos, para esto dar clic en añadir dispositivo.

7. Colocar la siguiente informacion:

Tipo de dispositivo: IoT


ID de dispositivo: PLC_IoT_01

Luego clic en siguiente.


8. En este campo se puede colocar informacion en detalle del PLC, pero por el momento dar clic en Siguiente

9. También clic en Siguiente.

10. Y clic en Finalizar.


11. Verificar que sale una imagen como la imagen inferior.

12. En este paso es necesario copiar esta informacion en un bloc de notas.

13. Dar clic en Atrás


14. Se puede verificar que ya está creado el dispositivo IoT en la plataforma IBM Watson IoT Plattform.

15. En Node-Red local elegir la variable que quieren publicar hacia Watson Assistant, por ejemplo, Status_Maquina. Para
realizar esto arrastrar un nodo Inject.

16. Configurarlo de esta forma, esto significa que si damos un clic envía un verdadero.
17. Arrastrar de nuevo otro nodo Inject y configurarlo para enviar un False.

18. A continuacion arrastrar un nodo Funtion

19. El código de esta Funtion es el siguiente:

msg.payload = {

d: {

"Estado_Proceso": msg.payload

return msg;
20. Como siguiente paso es ir a Menu Hamburguesa e instalar la paleta watson-iot

21. Arrastrar Watson-iot out

22. Editar ese nodo.


23. Colocar la informacion según como se copió en el bloc de notas.

24. Verificar que quedo de la siguiente forma.


25. Se le puede colocar un nombre a este nodo y finalmente clic en Done.

26. El flujo en Node-Red Local debe estar quedando de esta forma.


27. En este caso tambien se debe crear una clave de lectura para que Watson Assistant pueda leer esos datos tambien
se debe crear una llave, para esto ir a Aplicaciones.

28. En la parte superior derecha dar clic en Generar Clave API

29. A continuacion en Descripción escribir “Clave API para SCADA IoT lea Tags desde Watson IoT” y luego dar clic en
Siguiente.
30. En Role escoger: Device Application y luego generar clave.

31. Una vez se haya generado la Clave API se recomienda pegar tanto la clave API como la señal de autenticación al bloc
de notas en donde se está pegando todas las claves.

32. Dirigirse a Node-RED Nube e instalar ibmiotapp


33. Arrastrar ibmiot in

34. Editar la API

35. Colocar los respectivos campos de acuerdo con la información del API respectiva de cada uno.
36. Luego clic en Add.

37. Luego colocar la siguiente informacion:


Device Type: IoT Para hacer esto hay que quitar el chulito y borrar el signo mas, y ahí si escribir el nombre.
Device ID: PLC_IoT_01 Se escribe este dispositivo ya que el SCADA IoT va a leer datos desde el PLC IoT
Name: From PLC_IoT_01
38. A continuacion arrastrar nodo Switch.

39. Se ajusta la configuración del nodo switch para que siempre le de paso a la variable deseada, en nuestro caso solo
deseamos leer la variable “Estado_Proceso”, la cual nos indicará si el proceso está iniciado o detenido, por lo que se
recibe únicamente el mensaje “msg.payload.d.Estado_Proceso”. Como se comentó previamente, si se desean leer
más variables, se deben crear más nodos switch que den paso a cada mensaje deseado.

40. A la salida del nodo switch procedemos a crear una función que al recibir el estado de la variable actualice una variable
global del NodeRED Nube.
41. La función se programa para almacenar el valor del mensaje recibido en una variable Flow que pueda ser leída
posteriormente por otro nodo del NodeRED Nube, en este caso “Estado_Proceso”. De esta forma se irá actualizando
la variable deseada mediante el siguiente código:

var valor = msg.payload.d.Estado_Proceso;


msg.payload = { "Estado_Proceso" : valor};
flow.set('Estado_Proceso',valor);
return msg;

42. Ahora que tenemos una variable Flow con el dato que deseamos leer actualizado, procedemos a crear un nodo switch
a la salida del nodo “Assistant V2”, este nodo tendrá la función de detectar cuando el asistente requiera leer un dato
para responderle al usuario.

43. La configuración de este nodo switch se ajustará para detectar el mensaje de respuesta que se programó en el
Asistente para la Intensión verificar estado. La respuesta configurada fue “estado”, por lo que el switch tendrá
únicamente una salida, la cual se activará cuando el mensaje contenga este nombre.
44. Se procede a crear un nodo function a la salida del switch (una función para cada salida), esta función tendrá como
objetivo ajustar la respuesta que se le dará al usuario según el estado de la variable leída.

45. Se programa la función para leer a la variable Flow que contiene el valor actualizado que deseamos interpretar. En
nuestro caso se lee la variable “Estado_Proceso” y ajustamos la respuesta que se le dará al usuario según el estado
de la variable, de forma que, si el estado es True, se le dirá al usuario que “El proceso industrial está iniciado” y, en
caso de que el estado sea false, se le dirá que "El proceso industrial está detenido". Independientemente de la
respuesta, se debe almacenar en “msg.payload.output.generic[0].text”, ya que esa es la estructura de respuesta que
tiene el asistente.

var valor = flow.get('Estado_Proceso');


if (valor == true){
msg.payload.output.generic[0].text = "El proceso industrial está iniciado";
}
if (valor == false){
msg.payload.output.generic[0].text = "El proceso industrial está detenido";
}
return msg;
46. Finalmente, se conecta la salida de este nodo a la entrada de la función que realiza la conversión de los mensajes, la
cual nombramos “Salida Telegram”, para que este mensaje ajustado sea enviado al Telegram y le responda al usuario.

También podría gustarte