Code Monkey home page Code Monkey logo

chatbot-webhook's Introduction

Serverless Cliengo Chatbot Webhooks

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

Local development

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

Ngrok webhooks en local

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

Configure Webhooks for a Chatbot

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:

Luego ingresa a http://localhost:3000/dev/chatbotConfig para actualizar el global_fulfillment_url de tu chatbot.

Probar un Chatbot con webhooks

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:

image

Y en el chat se ve así:

image

Deployment con Serverless

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/...

Local development alternative (not recommended)

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).

chatbot-webhook's People

Contributors

smartcrash avatar yepelinux avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.