Creará un chatbot muy simple que le pedirá al usuario que elija un animal, y luego el chatbot le pedirá un libro web, que luego proporcionará una API para recuperar un «hecho divertido» sobre el animal a través del cat-facts
API. La web actualizará la variable de memoria que realiza un seguimiento de cuántas veces el usuario ha solicitado un dato curioso.
El objetivo del tutorial es mostrarle cómo la web lee los datos de la aplicación del chatbot y mostrarle el formato de los datos que deben devolverse al chatbot.
Como beneficio adicional, mostraremos cómo implementar un script de Python en SAP BTP. Agradecimientos especiales a Yohei Fukuhara de su blog Cree una API REST simple de Flask utilizando Foundry Cloud.
IMPORTANTE: El enfoque de este tutorial es la respuesta que una aplicación (API) debe devolver para trabajar con SAP Conversational AI. Los requisitos para Python en SAP BTP cambian de vez en cuando, p. Ej. cuota, tiempo de ejecución, por lo que se recomienda que consulte la documentación sobre cómo implementar scripts de Python: Desarrollo de Python en un entorno Cloud Foundry
Paso 1: crea un chatbot simple
Crea un bot que le pida al usuario que seleccione un animal para obtener un dato divertido.
Crea un nuevo bot y llámalo
webhookdemo
. Utilice los siguientes valores:Nombre del campo Valor 1. ¿Qué quieres que haga tu chatbot? Tomando acciones 2. Habilidades predefinidas Dadá 3. Crea tu bot - Nombre:
webhookdemo
- Suelte: Bot para probar la creación de libros web
- Idioma: inglés
4. Política de datos Impersonal y No vulnerable 5. Visibilidad del bot Público Hacer clic Crear un bot.
- Nombre:
Sa Tren pestaña, crea un secreto llamado
ask
y agregue la expresión Estoy interesado en.Dado que solo define un secreto, este secreto siempre se activará cuando el usuario escriba un mensaje.
Sa Tren pestaña, cree una entidad restringida llamada
animal
y agregue 4 valores válidos: gato, caballo, Caracol, perro.Sa Construcción pestaña, crea una habilidad llamada respondery ábralo.
Sobre Disparadores, establezca la condición en:
If @ask is-present
.Sobre Requisitos, especificar
#animal as animal
.Expanda el requisito y haga clic en Nuevas respuestas: si falta #animal, agregue el siguiente mensaje de texto y luego haga clic en Salvar y atrás:
Type an animal and I will get you a fun fact about it. But I am only familiar with certain animals.
Hecho
Inicie sesión para responder la pregunta
Paso 2: prueba el bot sin libro web
Primero, abra el Examen pestaña y prueba el bot. No importa el tipo que escribas
ask
.Ingresar
dog
y reconocerá elanimal
entidad también.Ahora abierto Chatea con tu bot.
Si ingresa algo que no se adapte a los animales, se muestra un mensaje corto y le pide que ingrese un animal.
Entra uno de los animales. Ahora se cumple el requisito, pero no especificó una respuesta, por lo que es predeterminado No responde lanzado.
Hecho
Inicie sesión para responder la pregunta
Paso 3: crea un proyecto de Python
En el explorador de archivos, cree una nueva carpeta para el proyecto y llámelo
chatbot-webhook
.Abra VS Code.
Asegúrese de tener instalada la extensión de Microsoft para Python, así como Python y Flask y los paquetes de la aplicación.
Vamos Archivo> Agregar carpeta al espacio de trabajoy seleccione la carpeta del proyecto.
Dentro de la carpeta, cree los archivos del asistente para el proyecto.
manifest.yml
Debe cambiar el nombre de host a continuación por un nombre único. El resto del tutorial toma el nombre de host a continuación, pero en todas partes necesita cambiarlo (por ejemplo, URL a API).
applications: - name: dbw-catfacts memory: 128M command: python chatbot-webhook-test.py
Procfile
web: python chatbot-webhook.py
requirements.txt
Este archivo contiene dependencias en nuestro proyecto: Frasco para crear puntos finales y aplicaciones para llamar a otras API desde nuestra aplicación.
Flask requests
runtime.txt
Asegúrese de utilizar una versión que actualmente sea compatible con SAP BTP. En el momento de escribir este tutorial (diciembre de 2020), la versión siguiente funcionaba.
python-3.8.5
static
(carpeta)Crea la carpeta
static
. Descarga SAP Chat AI icono y ponerlo en la carpeta.
Tu proyecto debería verse así:
Hecho
Inicie sesión para responder la pregunta
Paso 4: escriba los puntos finales de Python
Ahora escribiremos la parte principal de la aplicación, que crea los puntos finales.
En su proyecto, cree un nuevo archivo llamado
chatbot-webhook.py
.Agregue el siguiente código, que agrega dependencias y crea un punto final predeterminado, que devuelve una buena página HTML con una imagen interesante, para que pueda asegurarse de que la implementación sea exitosa.
from flask import Flask, request, jsonify import os import json import datetime import requests app = Flask(__name__) cf_port = os.getenv("PORT") # Only get method by default @app.route('/') def hello(): return '<h1>SAP Conversational AI</h1><body>The animal facts webhook for use in SAP Conversational AI chatbots.<br><img src="static/283370-pictogram-purple.svg" width=260px></body>' if __name__ == '__main__': if cf_port is None: app.run(host='0.0.0.0', port=5000, debug=True) else: app.run(host='0.0.0.0', port=int(cf_port), debug=True)
Guarda el archivo.
Si lo desea, puede probar esto en VS Code a través del
.py
archivo: haciendo clic derecho en el archivo y seleccionando Ejecute el archivo Python en la terminal o haga clic en la flecha verde en la esquina superior derecha. Encontrarás lo siguiente:Luego, puede abrir un navegador en el punto final predeterminado.
Agregue el siguiente código al punto final principal inmediatamente después del predeterminado, y antes del
if __name__ == '__main__':
línea.Este punto final toma los datos del chatbot, hace la llamada a la API para obtener el dato divertido y luego envía el siguiente mensaje al chatbot.
@app.route('/bot', methods=['POST']) def bot(): # Get the request body, and determine the dog and memory try: bot_data = json.loads(request.get_data()) animal = bot_data['conversation']['memory']['animal']['raw'] memory = bot_data['conversation']['memory'] except: animal = "dog" memory = json.loads("{}") # Get the fun fact url = "https://cat-fact.herokuapp.com/facts/random?animal_type=" + animal + "&amount=1" r = requests.get(url) fact_data = json.loads(r.content) # Increment the # of times this has been called if 'funfacts' in memory: memory['funfacts'] += 1 else: memory['funfacts'] = 1 # Return message to display (replies) and update memory return jsonify( status=200, replies=[ { 'type': 'text', 'content': fact_data['text'] } ], conversation={ 'memory': memory } )
Guarda el archivo.
Puede probar esto abriendo Postman y llamando al punto final
localhost:5000/bot
(con CORREO método y sin cuerpo).Pruébelo nuevamente, pero esta vez ejecute el siguiente cuerpo (sin procesar), para simular como si el chatbot estuviera enviando la solicitud:
{ "conversation": { "memory": { "animal" : {"raw" : "snail"}, "funfacts": 1 } } }
Ahora, la llamada a la API usa el animal del cuerpo (es decir, un caracol) y hace el
funfacts
variables en la memoria.
Hecho
Inicie sesión para responder la pregunta
Paso 5: enviar la secuencia de comandos de Python a SAP BTP
CLI utilizó Cloud Foundry para implementar el script en SAP BTP.
Necesitará su punto final de SAP BTP Cloud Foundry y el nombre de la organización, que verá cuando abra su subcuenta. Visión general página.
Abra un símbolo del sistema en la carpeta que contiene su proyecto de Python y configure la URL de la API de Foundry Cloud.
cf api https://api.cf.eu10.hana.ondemand.com
Inicie sesión ingresando el siguiente comando e ingresando sus credenciales:
cf login
Elija su organización de CF
Ahora presiona la aplicación y llámala
catfacts
:cf push catfacts
Esto debería llevar alrededor de un minuto y mucha salida en la pantalla de comandos. Cuando termine, ahora debería usar la aplicación. Vaya a su espacio Cloud Foundry, debajo Solicitud.
Si hace clic en la aplicación, obtendrá el enlace del punto final.
Y si hace clic en el enlace (y lo abre en el navegador), habrá terminado GET
llamar al punto final predeterminado.
Hecho
Inicie sesión para responder la pregunta
Paso 6: apunte un chatbot a la web
Ahora que ha implementado su libro web, vamos a vincularlo al chatbot.
Sa Construcción pestaña, abra la
answer
habilidad.Sa Comportamiento pestaña, haga clic en Agregar nuevo grupo de mensajesy luego haga clic en Conectar servicio externo> Llamar a Webhook.
Para la URL, ingrese el nombre de su punto final con
/bot
al final. Asegúrate de que el método CORREO.Por ejemplo, el mío es:
https://catfacts-quiet-klipspringer-kx.cfapps.eu10.hana.ondemand.com/bot
Hacer clic Salvar.
Hacer clic Actualizar chat> Editar memoria, y luego configure el Campo de memoria no admitido a
animal
.Hacer clic Agregar nuevo grupo de mensajes.
Este grupo de mensajes está destinado a mostrar un mensaje cuando el usuario ha solicitado 3 o más hechos divertidos. Nuestro navegador web realiza un seguimiento del número de llamadas y luego pasa los resultados a través de la memoria.
Hecho
Inicie sesión para responder la pregunta
Paso 7: prueba el chatbot
Abra una conversación con el bot, ingresando Hola. El mensaje se muestra cuando falta un animal.
Luego entra en un animal, y se estimula la red y se muestra un dato divertido.
Introduzca un animal 2 veces más: debe ser un gato, un perro, un caracol o un caballo. El mensaje adicional se muestra cuando el usuario solicita repetidamente datos divertidos.
Haga clic en el amarillo I icono para ver el JSON de la conversación. Desplácese hacia abajo y verá que la web tiene un valor agregado para funfacts
.
Mostró la forma de restaurar la información en la memoria desde el libro web, por lo que realizó un seguimiento a través de variables de memoria personalizadas
_memory.funfacts
cuántas veces el usuario actual ha pedido un dato divertido.Podrías usar la variable incorporada en su lugar
_skill_occurences
Mantenga un registro de la cantidad de veces que ha realizado elanswer
habilidad.Para obtener información sobre las variables integradas, consulte Datos de tiempo de ejecución accesibles.
Hecho
Inicie sesión para responder la pregunta