
Compartir:
Benjamin Aronov es desarrollador de Vonage. Es un constructor de comunidades con experiencia en Ruby on Rails. Benjamin disfruta de las playas de Tel Aviv, a la que llama hogar. Su base en Tel Aviv le permite conocer y aprender de algunos de los mejores fundadores de startups del mundo. Fuera de la tecnología, a Benjamin le encanta viajar por el mundo en busca del perfecto pain au chocolat.
Cómo recibir una respuesta sugerida RCS en Ruby on Rails
Tiempo de lectura: 3 minutos
Servicios de Comunicaciones Enriquecidas (RCS) ayudan a mejorar la experiencia del usuario con botones de respuesta interactivos y amigables. Anteriormente, aprendimos a enviar mensajes de respuesta RCS y seguir su estado utilizando Ruby on Rails. Pero también necesitamos aceptar respuestas de alguna manera, para leer qué opción seleccionan nuestros usuarios. En este artículo, te mostraremos exactamente cómo configurarlo.
En este tutorial aprenderás a recibir un mensaje de respuesta sugerida RCS mediante la implementación de un endpoint webhook en Ruby on Rails.
TL;DR Saltar adelante y encontrar todo el código de inicio rápido en GitHub.
RCS chat interaction with Vonage RoR bot demonstrating conversational capabilities by asking about ice cream flavor preferences
Requisitos previos
Debes haber completado el Cómo enviar respuestas sugeridas RCS con Ruby on Rails que requiere:
Ruby on Rails instalado en su máquina
Una Account ngrok e instalada en su máquina
Un número virtual de Vonage
Un agente registrado de RBM
Un número de teléfono con capacidades RCS para pruebas
¿Cómo funciona Inbound RCS?
Puede que te estés preguntando cómo llega una respuesta RCS desde el teléfono de un usuario a tu aplicación Rails. Al igual que con los SMS, Vonage maneja la interacción con la red móvil. Luego, reenviará esa información en un webhook de entrada que definas en tu aplicación de Vonage. En este tutorial utilizaremos ngrok para gestionar el webhook entrante a nuestra aplicación Rails.
Diagram illustrating the inbound RCS process, where a user sends a message through the Vonage platform, which then forwards the message to an application via a webhook.
Cómo exponer una aplicación Ruby on Rails con ngrok
Puede utilizar ngrok para exponer de forma segura su servidor local públicamente a través de HTTP. Así que ahora, en una pestaña separada de tu servidor rails, abre un túnel ngrok en el puerto 3000.
ngrok http 3000Asegúrese de añadir su URL ngrok como config.host en tu archivo development.rb archivo. Utilizaremos la variable de entorno dinámica VONAGE_SERVIDOR_HOSTNAMEpara que no tengas que actualizarla continuamente en cada ejecución. cómo empezar a usar ngrok en Rails.
# config/environments/development.rb
Rails.application.configure do
config.hosts << ENV['VONAGE_SERVER_HOSTNAME']Si no has creado un archivo .env anteriormente, asegúrate de hacerlo en la raíz de tu aplicación y agrega tus credenciales de Vonage y la URL de ngrok:
VONAGE_APPLICATION_ID='XXXX'
VONAGE_PRIVATE_KEY='./private.key'
VONAGE_SERVER_HOSTNAME='XXXXXX.ngrok.app>> Mantén seguras tus credenciales
>> Nunca envíe archivos .env a su repositorio. Asegúrese de que .env está en su .gitignore.
Para obtener más ayuda, consulte trabajar con variables de entorno en Ruby.
Cómo conectar tu agente de RCS a tu aplicación de Vonage
Una vez que ngrok se esté ejecutando, editaremos nuestra aplicación Vonage (de la sección artículo anterior) en el panel de control para añadir la URL de ngrok en nuestros webhooks y vincularla a nuestro Agente RCS.
En primer lugar, vincule su Agente RCS haciendo clic en el botón "Vincular cuentas externas" pestaña:
Dashboard view showing the Vonage-Rails-Quickstart application linked to the Vonage RoR RCS external account, with voice and message capabilities enabled.
Ahora, actualice la URL de entrada en las capacidades de Mensajes. Añada su URL ngrok seguida de /rcs_de_entrada.
Screenshot of the Messages settings in the Vonage dashboard showing configuration for inbound and status webhook URLs used for RCS communication.
Una vez que pulse guardar ngrok ahora túnel peticiones hechas a la /inbound_rcs a tu aplicación Rails. Pero hay un pequeño problema: nuestra aplicación Rails aún no tiene ese endpoint.
Cómo manejar un RCS WebHooks entrante en Rails
Ahora que Vonage reenvía una carga útil RCS a /inbound_rcs, vamos a actualizar nuestra aplicación mediante la creación de una ruta para manejarlo.
Rails.application.routes.draw do
post '/inbound_rcs', to: 'inbound_rcs#create', as: :inbound_rcs
....remaining routes...Cuando se haya enviado una respuesta RCS a tu número virtual de Vonage, Vonage notificará a tu aplicación mediante el envío de un webhook. Una carga útil típica para un mensaje JSON de respuesta RCS entrante se verá así:
{
"channel": "rcs",
"message_uuid": "aaaaaaaa-bbbb-4ccc-8ddd-0123456789ab",
"to": "Vonage",
"from": "447700900001",
"timestamp": "2025-02-03T12:14:25Z",
"context_status": "none",
"message_type": "reply",
"reply": {
"id": "reply_option_1",
"title": "9am"
}
} Cómo almacenar mensajes de respuesta RCS desde Rails
Ahora que tenemos toda la información requerida basada en nuestro modelo RCS como se definió previamente, podemos crear alguna lógica para almacenar nuestras respuestas RCS entrantes. También enviaremos una respuesta a nuestro usuario para hacerle saber que hemos recibido su respuesta. Vamos a generar un nuevo controlador para manejar esto.
rails g controller InboundRcs createDentro de nuestro controlador, tendremos un simple comando crear que analiza el webhook e introduce un RCS en nuestra base de datos. Notarás que tomamos el marca de tiempo, tipo_mensaje (que será respuesta), y el respuesta objeto JSON.
# app/controllers/inbound_rcs_controller.rb
class InboundRcsController < ApplicationController
skip_before_action :verify_authenticity_token
def create
rcs = RcsMessage.create(
message_uuid: params[:message_uuid],
from: params[:from],
to: params[:to],
timestamp: params[:timestamp],
message_type: params[:message_type],
reply: params[:reply]
)
# send reply to user
reply(rcs)
head :ok
end
Para demostrar que hemos recibido la respuesta RCS, enviaremos un texto de confirmación al remitente.
def reply(rcs)
selection = rcs.reply["title"]
message = vonage.messaging.rcs(
type: "text",
message: "#{selection} is a great choice!"
)
vonage.messaging.send(
from: ENV["RCS_SENDER_ID"],
to: rcs.from,
**message
)
endEl método de respuesta depende del cliente de Vonage, por lo que tendremos que inicializarlo como hicimos en el artículo anterior.
def vonage
Vonage::Client.new(
application_id: ENV["VONAGE_APPLICATION_ID"],
private_key: ENV["VONAGE_PRIVATE_KEY"]
)
endPuede ver cómo encaja todo el código en el archivo completo inbound_rcs_controller.rb completo.
Conclusión
Felicitaciones. Has construido con éxito una aplicación RCS de Ruby on Rails que puede recibir mensajes de respuesta RCS entrantes utilizando un webhook de Vonage. Y por lo tanto, has completado la parte de las respuestas sugeridas RCS del tutorial de Ruby on Rails. Seguiremos añadiendo más funciones de RCS y luego funciones de WhatsApp en futuros tutoriales.
Si tienes alguna pregunta o quieres solicitar una funcionalidad para la aplicación Quickstart, únete a la conversación en la Comunidad Slack o comunícate en X (antes Twitter). ¡Nos encantaría escuchar lo que construyes a continuación!
Compartir:
Benjamin Aronov es desarrollador de Vonage. Es un constructor de comunidades con experiencia en Ruby on Rails. Benjamin disfruta de las playas de Tel Aviv, a la que llama hogar. Su base en Tel Aviv le permite conocer y aprender de algunos de los mejores fundadores de startups del mundo. Fuera de la tecnología, a Benjamin le encanta viajar por el mundo en busca del perfecto pain au chocolat.