Aplicación Simple Sinatra que actúa como un WebHOOK para un API.AI CHATBOT -- beginner campo con ruby campo con chat campo con sinatra camp codereview Relacionados El problema

Simple Sinatra app that acts as a webhook for an api.ai chatbot


1
vote

problema

Español

Estoy en el proceso de aprendizaje de rubí que nunca usé. He construido bastantes aplicaciones web en diferentes idiomas, pero esta es mi primera vez usando Ruby. Las cosas funcionan, disfruto escribiendo Ruby, pero siento que podría estar perdiendo algunos de sus modismos.

Esta es una aplicación simple de Sinatra que actúa como un sofocante para un API.AI CHATBOT. La corrección del código es probablemente irrelevante, me interesaría descubrir las posibilidades de hacer que el código sea más "rubí como".

¡Este es solo el código para el webhook, espero (?) Los métodos y clases importados son autoexplicativos.

  # frozen_string_literal: true require 'json' require 'sinatra' require 'sinatra/json' require './lib/helpers' require './lib/database' require './lib/config'  db_client = Database::Client.new wakeup_response = Config::WakeupResponse.new  post '/:bot/webhook' do |bot|   protected!    session_id = params.fetch('sessionId', nil)   if session_id.nil?     return [400, 'No sessionId present in payload.']   end    user = db_client.find_one(bot, session_id)   speech = infer_speech(params)    if user && (currently_active?(params) || reset_intent?(params))     db_client.update_one(       bot,       session_id,       lastContext: params.fetch('result', {}).fetch('contexts', [])     )   elsif user     speech = wakeup_response.get(bot)   else     db_client.insert_one(bot, session_id)   end    user = db_client.find_one(bot, params['sessionId'])    json(     speech: speech,     displayText: speech,     contextOut: user.fetch('lastContext', []),     source: Config.source_name   ) end  post '*' do   [404, json(error: 'Not found')] end  get '*' do   [404, "I'm a bot, so what?"] end   
Original en ingles

I'm in the process of learning Ruby which I never used. I've built quite a few web applications in different languages, but this is my first time using Ruby. Things work, I enjoy writing Ruby, but I feel I might be missing some of its idioms.

This is a simple Sinatra app that acts as a webhook for an api.ai chatbot. The correctness of the code is probably irrelevant, I'd be interested in finding out possibilities of making the code more "Ruby like".

This is just the code for the webhook, I hope (?) the imported methods and classes are self-explanatory.

# frozen_string_literal: true require 'json' require 'sinatra' require 'sinatra/json' require './lib/helpers' require './lib/database' require './lib/config'  db_client = Database::Client.new wakeup_response = Config::WakeupResponse.new  post '/:bot/webhook' do |bot|   protected!    session_id = params.fetch('sessionId', nil)   if session_id.nil?     return [400, 'No sessionId present in payload.']   end    user = db_client.find_one(bot, session_id)   speech = infer_speech(params)    if user && (currently_active?(params) || reset_intent?(params))     db_client.update_one(       bot,       session_id,       lastContext: params.fetch('result', {}).fetch('contexts', [])     )   elsif user     speech = wakeup_response.get(bot)   else     db_client.insert_one(bot, session_id)   end    user = db_client.find_one(bot, params['sessionId'])    json(     speech: speech,     displayText: speech,     contextOut: user.fetch('lastContext', []),     source: Config.source_name   ) end  post '*' do   [404, json(error: 'Not found')] end  get '*' do   [404, "I'm a bot, so what?"] end 
           

Lista de respuestas


Relacionados problema

2  Rubí idiomático si / si no en una ruta sinatra  ( Idiomatic ruby if else in a sinatra route ) 
Disculpas Si esta pregunta no se ajusta al formato aquí, parecía más apropiada aquí que así debido a la naturaleza más nebulosa de la pregunta. Creo que Min...

1  Aplicación Simple Sinatra que actúa como un WebHOOK para un API.AI CHATBOT  ( Simple sinatra app that acts as a webhook for an api ai chatbot ) 
Estoy en el proceso de aprendizaje de rubí que nunca usé. He construido bastantes aplicaciones web en diferentes idiomas, pero esta es mi primera vez usando R...

2  Mejora del procesamiento de JavaScript de Ruby Rogex  ( Improving javascript processing of ruby regex ) 
Tengo una aplicación web básica que básicamente sirve al mismo propósito que rubular.com , pero para gsub . Se ejecuta un simple JavaScript, que Post's to...

1  Asegúrese de que un hash de Sinatra siempre tenga un valor válido  ( Ensure that a sinatra hash always has a valid value ) 
Estoy tratando de asegurarme de que un hash de Sinatra siempre tenga un valor válido. ¿Hay una forma más concisa de escribir esto? Cell7 ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos