Esta proyecto permite crear webhooks Serverless para Chatbots Cliengo usando AWS, Serverless.com y con Node.js.
Los JSON de request y response y la documentación completa del flujo de trabajo de Chatbots Cliengo está en: https://developers.cliengo.com/docs/new-message-webhook#response-json-example
Para levantar un server localmente emulando API Gateway y Lambda localmente se utiliza el módulo serverless-offline
. Ejecute el comando:
serverless plugin install -n serverless-offline
Agregará el complemento serverless-offline
a devDependencies
en el archivo package.json
y también lo agregará a plugins
en serverless.yml
.
Después de la instalación, puede iniciar el server local con:
serverless offline
Importante: Los cambios en el código se reflejan automáticamente, a excepción de cambios en el archivo serverless.yml
Con ngrok.com puede recibir webhooks de chatbot en su entorno local.
Una vez que tenga serverless offline
ejecutándose localmente, puede ejecutar el comando:
ngrok http 3000
Para simplificar la configuración de global_fulfillment_url
(es la url donde se recibirán los webhooks de un determinado chatbot) existe en este proyecto un endpoint para facilitar su configuración
Configure con los datos de su cuenta de Cliengo en el archivo handler.js
lo valores:
- API_KEY: cómo obtenerla?
- websiteId: Puedes encontrarlo en https://api.cliengo.com/1.0/websites (debes estar logueado con tu cuenta)
- global_fulfillment_url: la url de tu webhook
Luego ingresa a http://localhost:3000/dev/chatbotConfig para actualizar el global_fulfillment_url de tu chatbot.
Una vez configurado los webhooks ingresa a https://lw.stagecliengo.com/?websiteId=`websiteId` para probar tu chatbot y recibir un webhook por cada mensaje en tu server.
Como ejemplo, al recibir un webhook nuestro endpoint responde este JSON:
Y en el chat se ve así:
Este ejemplo está diseñado para funcionar con el panel de Serverless Framework que incluye funciones avanzadas como CI / CD, monitoreo, métricas, etc.
$ serverless login
$ serverless deploy
Para implementar sin el dashboard, deberá eliminar los campos org
y app
del serverless.yml
, y no tendrá que ejecutar sls login
antes de deployar.
Después de ejecutar la implementación, debería ver un resultado similar a:
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Creating Stack...
Serverless: Checking Stack create progress...
........
Serverless: Stack create finished...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service aws-node-rest-api.zip file to S3 (711.23 KB)...
Serverless: Validating template...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
.................................
Serverless: Stack update finished...
Service Information
service: aws-node-rest-api
stage: dev
region: us-east-1
stack: aws-node-rest-api-dev
resources: 12
api keys:
None
endpoints:
ANY - https://xxxxxxx.execute-api.us-east-1.amazonaws.com/dev/
functions:
api: aws-node-rest-api-dev-hello
layers:
None
Nota: En su forma actual, después de la implementación, su API es pública y cualquier persona puede invocarla. Para implementaciones de producción, es posible que desee configurar un autorizador. Para obtener detalles sobre cómo hacerlo, consulte [http event docs] (https://www.serverless.com/framework/docs/providers/aws/events/apigateway/).
Después del deploy exitoso, puede llamar a la aplicación a través de:
curl https://xxxxxxx.execute-api.us-east-1.amazonaws.com/dev/...
Alternativamente, también es posible invocar su función usando el siguiente comando:
serverless invoke local --function hello
Lo que debería resultar en una respuesta similar a la siguiente:
{
"message": "Hello Cliengo world!"
}
Para más información sobre las capacidades de serverless-offline
, consultar (https://github.com/dherault/serverless-offline).