Atención al cliente por SMS

La disponibilidad general de los SMS los convierte en una solución versátil para la atención al cliente. Los números de teléfono pueden imprimirse, leerse en voz alta y colocarse en sitios web, lo que permite a cualquier persona, en línea o no, relacionarse con su empresa.

Ofrecer atención al cliente a través de SMS es una forma de proporcionar un sistema completo de comunicación bidireccional a cualquiera que tenga un teléfono conectado a una red móvil.

En este tutorial

Construirás un sistema de atención al cliente por SMS utilizando las API y las bibliotecas de Vonage.

Para ello:

Requisitos previos

Para que este tutorial funcione necesitarás:

Una aplicación web básica

Para este tutorial se parte de una aplicación web con una página. El usuario podrá hacer clic en un enlace para abrir su aplicación SMS y solicitar soporte. Tu aplicación recogerá los SMS entrantes y abrirá un nuevo ticket. Finalmente, la aplicación responderá con un nuevo SMS al usuario confirmando su número de ticket.

AppVonagePhoneAppVonagePhoneSMS 1WebhookSMS RequestSMS 2

Empieza por crear una aplicación básica.

rails new customer-support cd customer-support rake db:create db:migrate

La página estará en la raíz de nuestra aplicación y proporcionará un enlace a tu aplicación de SMS con algún texto pre-rellenado.

Añadir una primera página

rails g controller pages index

app/views/pages/index.html.erb

<h1>ACME Support</h1>

<p>
  <a href="sms://<%= ENV['VONAGE_NUMBER'] %>?body=Hi ACME, I'd like some help with: " class='button'>
    Get support via SMS
  </a>
</p>

Una vez hecho esto, se puede iniciar el servidor.

Arrancar el servidor

rails server

Comprar un número de teléfono

Antes de que la aplicación pueda recibir un SMS, debe alquilarse un número de teléfono de Vonage. Los Numbers de teléfono se pueden comprar en la sección salpicadero o directamente desde la línea de comandos con CLI de Vonage.

vonage numbers:buy US --number=15555555555 Number 15555555555 purchased.

Por último, se debe informar a Vonage el punto final de webhook al que realizar una solicitud HTTP cuando se reciba un SMS entrante. Esto se puede hacer utilizando la función salpicadero o el CLI de Vonage.

vonage number:sms 15555555555 http://[your.domain.com]/support Number updated

Nota: Asegúrate de que tu servidor esté funcionando y disponible públicamente antes de intentar configurar una nueva URL de devolución de llamada para webhooks. Cuando configures un nuevo webhook, Vonage realizará una llamada a tu servidor para confirmar que está disponible.

Procesar un SMS entrante

Cuando el cliente envíe su SMS, Vonage lo recibirá a través de la red del operador de telefonía móvil. Posteriormente, Vonage hará un webhook a tu aplicación.

Este webhook contendrá el texto original enviado, el número de teléfono del que procede el mensaje y algunos parámetros más. Para más detalles, consulte la página Mensaje entrante documentación.

Su aplicación debe procesar el webhook entrante, extraer el texto y el número, abrir un nuevo ticket o actualizar un ticket existente. Si se trata de la primera solicitud de un cliente, la aplicación debe enviarle un mensaje de confirmación con su número de ticket.

Para ello, se guarda el mensaje entrante y se abre un nuevo ticket si el número no tiene ya un ticket abierto.

Añadir un ticket y un modelo de mensaje

rails g controller support index rails g model Ticket number rails g model Message text ticket:references rake db:migrate

app/controllers/support_controller.rb

class SupportController < ApplicationController
  def index
    save_message
    send_response
    render nothing: true
  end

  private

  def ticket
    @ticket ||= Ticket.where(
      number: params[:msisdn]
    ).first_or_create
  end

  def save_message
    message = Message.create(
      text: params[:text],
      ticket: ticket
    )
  end

Enviar un SMS de respuesta con un número de ticket

Para enviar la confirmación al SMS del cliente, agrega el SDK del servidor de Vonage a tu proyecto.

Gemfile

gem 'vonage'
gem 'dotenv-rails'

Nota: Para inicializar el SDK del Servidor necesitará pasarle su Clave y secreto de la API. Le recomendamos encarecidamente que no almacene las credenciales de la API en el código, sino que utilice variables de entorno.

Con la biblioteca inicializada, la aplicación ya puede enviar un SMS. Envíe una respuesta sólo si éste fue el primer mensaje en este ticket.

def send_response
  return if ticket.messages.count > 1

  client = Vonage::Client.new
  result = client.sms.send(
    from: ENV['VONAGE_NUMBER'],
    to: ticket.number,
    text: "Dear customer, your support" \
          "request has been registered. " \
          "Your ticket number is #{ticket.id}. " \
          "We intend to get back to any " \
          "support requests within 24h."
  )
end

Conclusión

En este tutorial aprendiste a recibir un SMS desde el teléfono de un cliente y a enviarle una respuesta por SMS. Con estos fragmentos de código, ahora tienes una solución de soporte al cliente por SMS usando la SMS API de Vonage.

Obtener el código

Todo el código para este tutorial y más es disponible en GitHub.

Recursos