Alexa y Kubernetes. Adaptador de persistencia para MongoDB (III)
Guarda toda la información de tu Alexa skill en MongoDB
- ¿Qué es el adaptador de persistencia para MongoDB?
- Instalación
- Uso y primeros pasos
- Uso con TypeScript
- Abrrir Issues
- License
- Conclusion
El paquete ASK SDK MongoDB Persistence Adapter contiene la implementación del adaptador de persistencia del paquete del Core del SDK ask-sdk-core
basado en AWS SDK.
Adaptador de persistencia para MongoDB
¿Qué es el adaptador de persistencia para MongoDB?
ASK SDK v2 para Node.js es un kit de desarrollo de Alexa CustomSkill de código abierto. ASK SDK v2 para Node.js nos facilita el desarrollo de Skill muy atractivas, ya que nos permite dedicar más tiempo a implementar funciones y menos a escribir código básico. Junto con ello trae diferentes interfaces que podemos implementar para crear nuestros propios objectos custom. Este es el ejemplo del adaptador de persistencia para MongoDB y el que viene por defecto de DynamoDB.
Instalación
El paquete ASK SDK MongoDB Persistence Adapter es un paquete adicional para el SDK principal ask-sdk-core
y, por lo tanto, tenemos una peer dependency del paquete SDK principal. Desde dentro de nuestro proyecto de NPM, ejecutamos los siguientes comandos en la terminal para instalarlos:
npm install --save ask-sdk-mongodb-persistence-adapter
Uso y primeros pasos
Podéis encontrar toda la documentación aquí.
Cómo crear una instancia de MongoDBPersistenceAdapter
y PartitionKeyGenerator
:
- Pasar la conexión URL de MongoDB como parámetro:
let { MongoDBPersistenceAdapter } = require('ask-sdk-mongodb-persistence-adapter');
let options = {
collectionName: 'myCollection',
mongoURI: 'mongodb+srv://<username>:<password>@<cluster>.mongodb.net/',
partitionKeyGenerator: (requestEnvelope) => {
const userId = Alexa.getUserId(requestEnvelope);
return userId.substr(userId.lastIndexOf(".") + 1);
}
}
let adapter = new MongoDBPersistenceAdapter(options);
- Pasando [MongoClient] (https://mongodb.github.io/node-mongodb-native/3.6/api/MongoClient.html) como parámetro. Usando esto, debemos agregar el paquete npm
mongodb
.:
let { MongoDBPersistenceAdapter } = require('ask-sdk-mongodb-persistence-adapter');
let { MongoClient } = require('mongodb');
let mongoClient = new MongoClient('mongodb+srv://<username>:<password>@<cluster>.mongodb.net/')
let options = {
collectionName: 'myCollection',
mongoDBClient: mongoClient,
partitionKeyGenerator: (requestEnvelope) => {
const userId = Alexa.getUserId(requestEnvelope);
return userId.substr(userId.lastIndexOf(".") + 1);
}
}
let adapter = new MongoDBPersistenceAdapter(options);
Finalmente tenemos que agregar este nuevo adaptador al objeto SkillBuilders
con el método withPersistenceAdapter
:
exports.handler = Alexa.SkillBuilders.custom()
.addRequestHandlers(
LaunchRequestHandler,
HelloWorldIntentHandler,
HelpIntentHandler,
CancelAndStopIntentHandler,
FallbackIntentHandler,
SessionEndedRequestHandler,
IntentReflectorHandler)
.addErrorHandlers(
ErrorHandler)
.withPersistenceAdapter(adapter)
.lambda();
Consulte la especificación completa de MongoDBPersistenceAdapter
aquí.
Consulte la especificación completa de PartitionKeyGenerator
aquí.
Uso con TypeScript
El paquete ASK SDK MongoDB Persistence Adapter para Node.js incluye dinifition files de TypeScript para su uso en proyectos de TypeScript y para admitir herramientas que pueden leer archivos .d.ts. Nuestro objetivo es mantener estos dinifition files de TypeScript actualizados con cada release para cualquier API pública.
Requisitos previos
Antes de que podamos comenzar a usar estos dinifition files de TypeScript en nuestro proyecto, debemos aseguraranos de que nuestro proyecto cumpla con algunos de estos requisitos:
- TypeScript >= v2.x
- TypeScript definitions for node. Podemos usar npm para instalar esto escribiendo lo siguiente en una ventana de terminal:
npm install --save-dev @types/node
En Node.js
Para usar los dinifition files de TypeScript dentro de un proyecto Node.js, simplemente importamos ask-sdk-mongodb-persistence-adapter como se muestra a continuación:
En un archivo de TypeScript:
import * as Adapter from 'ask-sdk-mongodb-persistence-adapter';
En un archivo JavaScript:
const Adapter = require('ask-sdk-mongodb-persistence-adapter');
Abrrir Issues
Si habéis encotrad bugs, feature requests o simplemente tneéis preguntas, me gustaría conocerlo. Podéis encontrar los bugs existentes e intentad aseguraros de que vuestro bug no exista antes de abrir uno nuevo. Es útil si se incluye la versión del SDK, Node.js o el entorno del navegador y el sistema operativo que estais utilizando. Incluid también un stack trace y como reproducirlo cuando corresponda.
License
Este adaptador se distribuye bajo la licencia Apache, versión 2.0, consultad LICENCE para obtener más información.
Conclusion
Como se puede ver, con muy poco código se puede construir un adaptador de persistencia.
Espero que este proyecto de ejemplo te sea de utilidad.
Puede encontrar el código aquí
¡Eso es todo amigos!
Happy coding!