Hola, chicos,
¡Buen día!

En esta publicación demostraré cómo integrar la base de datos con el ryver y enviar mensajes usando CLR (C#), que es el principal competidor de Slack, en el que ya he demostrado cómo hacer esta misma integración en el post. SQL Server – Cómo integrar la base de datos con Slack y enviar mensajes usando CLR (C#).

Si no sabes o no sabes cómo utilizar el CLR en SQL Server, descubre cómo accediendo al post Introducción a SQL CLR (Common Language Runtime) en SQL Server.

¿Qué es Ryver?

Para aquellos que no lo saben, el ryver es uno de los comunicadores corporativos más famosos y utilizados en todo el mundo, el principal competidor de Slack y pretende sustituir la comunicación por correo electrónico con foros privados y públicos (dentro del equipo) centrados en determinados equipos y/o temas. Puedes crear grupos públicos, donde todo tu equipo puede interactuar y colaborar, y grupos privados para cada sector, donde solo los del grupo pueden ver los mensajes.

Ryver te permite responder correos electrónicos desde la propia herramienta, enviar y compartir archivos (sin límites de almacenamiento), enviar mensajes privados y mucho más, todo gratis (no hay versiones premium, ni anuncios ni funciones pagas).

¿Dónde y cómo puedo utilizar Ryver en mi empresa?

Esta característica es especialmente útil para crear equipos en tu empresa y generar alertas y seguimiento por equipo, donde cada equipo solo recibe alertas relacionadas con sus actividades. Además, puede utilizar grupos abiertos para enviar boletines y notificaciones que sean relevantes para toda la empresa. Todo ello, sin coste alguno y podrás recibirlo por correo electrónico, visualizarlo en la web y en tu smartphone.

Otra forma interesante de utilizar Ryver es enviar el seguimiento de los objetivos de ventas al sector comercial, de modo que los gerentes regionales y locales puedan monitorear el desempeño del equipo de ventas en tiempo real, sin tener que consultar y abrir informes, estén donde estén, incluso fuera de la empresa.

Si su empresa adopta Ryver, el departamento de recursos humanos puede utilizar el servicio para enviar mensajes y boletines a los empleados. Enviar mensajes navideños, un mensaje especial por el cumpleaños del empleado, etc.

De todos modos, la ventaja de Ryver es que se puede enviar de varias formas diferentes (correo electrónico, web, teléfono inteligente), esté donde esté, dentro o fuera de la empresa y representa una gran revolución en la forma en que las personas interactúan con la información.

Cómo agregar usuarios a Ryver

El primer paso para crear la integración es crear su cuenta Ryver, accediendo a este enlace. Una vez creado, recibirá un correo electrónico para iniciar sesión en su cuenta.

Después de crear su cuenta, el siguiente paso es crear un usuario que su aplicación o herramienta utilizará para enviar mensajes. Este usuario debe estar presente en todos los grupos, de lo contrario no será posible enviar mensajes a este grupo.

Pantalla de inicio de Ryver

Para agregar nuevos usuarios, haga clic en su nombre en la esquina inferior izquierda y seleccione la opción "Configuración de administrador".

En la pantalla que se abrirá, haz clic en el botón “Invitar usuario” y se abrirá una nueva ventana, donde ingresarás los correos electrónicos de las personas que deseas invitar a tu cuenta Ryver. Te recomiendo que agregues un usuario exclusivamente para enviar mensajes, pero si quieres puedes usar tu propio nombre de usuario.

Para crear algunos ejemplos, crearé un foro gratuito y algunos equipos privados, de la siguiente manera:

Cómo integrar la base de datos con Ryver

Una vez que ya hayas creado tu cuenta en Ryver y hayas registrado el usuario que usarás para enviar mensajes a los equipos, pasemos a la parte interesante: Crear el código .NET (C#) que integrará la base de datos de SQL Server con la API de Ryver.

Como requisito previo para utilizar este procedimiento, deberá crear la clase Devolución, disponible en la publicación SQL Server: cómo enviar advertencias y mensajes de error a la base de datos usando CLR (C#) para usar el método Devolución.Error y así, enviar mensajes de error, si se producen. También puedes optar por comentar el código y eliminar llamadas a este método (y también comentar usando Bibliotecas.Model), pero no lo recomiendo, ya que no sabrás cuándo ocurrió un error en tu llamada al SP para enviar mensajes a Ryver.

Cómo identificar la URL:

Cómo identificar el nombre de usuario:

Cómo identificar el ID del foro o de la sala privada:

Cómo agregar un usuario a un grupo:

Código fuente del procedimiento almacenado:

using System;
using System.Data.SqlTypes;
using System.IO;
using System.Net;
using System.Text;
using Bibliotecas.Model;

public partial class StoredProcedures
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void stpEnvia_Mensagem_Ryver(SqlString Ds_Tipo, SqlInt64 Nr_Time, SqlString Ds_Mensagem)
    {

        const string urlRyver = "nome_do_seu_time";
        const string usuario = "usuario_ryver";
        const string senha = "senha_ryver";
        
        var dsTipo = Ds_Tipo.Value.ToLower();
        if (dsTipo != "forums" && dsTipo != "workrooms")
            Retorno.Erro("O valor do parâmetro 'Ds_Tipo' não está entre as opções possíveis (workrooms / forums)");


        try
        {
            
            var dsScript = "{\"body\": \"" + Ds_Mensagem.Value + "\"}";

            var url = $"https://{urlRyver}.ryver.com/api/1/odata.svc/{dsTipo}({Nr_Time.Value})/Chat.PostMessage()";
            var request = (HttpWebRequest) WebRequest.Create(url);
            
            request.Method = "POST";

            var svcCredentials = Convert.ToBase64String(Encoding.UTF8.GetBytes(usuario + ":" + senha));
            request.Headers.Add("Authorization", "Basic " + svcCredentials);

            request.UserAgent = "curl/7.45.0";
            request.ContentType = "application/json";
            request.Accept = "application/json";

            var buffer = Encoding.GetEncoding("UTF-8").GetBytes(dsScript);
            using (var reqstr = request.GetRequestStream())
            {

                reqstr.Write(buffer, 0, buffer.Length);

                using (var response = request.GetResponse())
                {

                    using (var dataStream = response.GetResponseStream())
                    {

                        if (dataStream == null) return;

                        using (var reader = new StreamReader(dataStream))
                        {
                            var responseFromServer = reader.ReadToEnd();
                            Retorno.Mensagem(responseFromServer);
                        }
                    }

                }

            }

        }
        catch (Exception e)
        {
            Retorno.Erro("Erro : " + e.Message);
        }

    }

};

Ejemplos de uso para grupo abierto

-- Enviando mensagem para o grupo aberto "Grupo Livre"
EXEC CLR.dbo.stpEnvia_Mensagem_Ryver 
    @Ds_Tipo = N'forums', -- nvarchar(max)
    @Nr_Time = 1094440, -- bigint
    @Ds_Mensagem = N'Teste de Mensagem para o fórum \"Forum Livre\"' -- nvarchar(max)

Resultado

Ejemplos de uso para grupo privado

-- Enviando mensagem para o grupo privado "TI"
EXEC CLR.dbo.stpEnvia_Mensagem_Ryver 
    @Ds_Tipo = N'workrooms', -- nvarchar(max)
    @Nr_Time = 1094441, -- bigint
    @Ds_Mensagem = N'Teste de Mensagem para o grupo privado \"TI\"' -- nvarchar(max)

Resultado

Resultado en el celular

¡Eso es todo, amigos!
Espero que te haya gustado esta publicación.
Un abrazo y hasta la próxima.

servidor sql clr .net dotnet framework c# integración csharp cómo crear base de datos integración base de datos cómo enviar mensajes cómo enviar mensajes notificaciones notificaciones de grupos privados dm Ryver

servidor sql clr .net dotnet framework c# integración csharp cómo crear base de datos integración base de datos cómo enviar mensajes cómo enviar mensajes notificaciones notificaciones de grupos privados dm Ryver