Cómo enviar la API de WhatsApp usando C#

Introducción

En este artículo, crearemos ejemplos simples para enviar mensajes a través de la API de WhatsApp usando c#.

Inicialmente, debe asegurarse de que la última versión de la biblioteca RestSharp : 108.0.1 esté lista y porque usaremos esta biblioteca en este artículo para enviar mensajes a Ultramsg Gateway.

Ejemplo rápido para la API de WhatsApp usando C#

using System;
using RestSharp;
using System.Threading.Tasks;

namespace test
{
    class Program
    {
        static async Task Main(string[] args)
        {
           
            string instanceId = "instance950"; // your instanceId
            string token = "yourtoken";         //instance Token
            string mobile = "14155552671";      
            string message = "WhatsApp API on UltraMsg.com works good";
            var url = "https://api.ultramsg.com/" + instanceId  +  "/messages/chat";
            var client = new RestClient(url);
            var request = new RestRequest(url, Method.Post);
            request.AddHeader("content-type", "application/x-www-form-urlencoded");
            request.AddParameter("token", token);
            request.AddParameter("to", mobile);
            request.AddParameter("body", message);


            RestResponse response = await client.ExecuteAsync(request);
            var output = response.Content;
            Console.WriteLine(output);
        }
    }
}

Cuando se ejecuta el código anterior, y si el mensaje se envía con éxito, la respuesta será así:

{"sent":"true","message":"ok","id":497}

Enviar imagen

using System;
using RestSharp;
using System.Threading.Tasks;

namespace test
{
    class Program
    {
        static async Task Main(string[] args)
        {
           
            string instanceId = "instance950"; // your instanceId
            string token = "yourtoken";         //instance Token
            string mobile = "14155552671";      
        
            var url = "https://api.ultramsg.com/" + instanceId  + "/messages/image";
            var client = new RestClient(url);
            var request = new RestRequest(url, Method.Post);
            request.AddHeader("content-type", "application/x-www-form-urlencoded");
            request.AddParameter("token", token);
            request.AddParameter("to", mobile);
            request.AddParameter("image", "https://file-example.s3-accelerate.amazonaws.com/images/test.jpg");
            request.AddParameter("caption", "caption text");

            RestResponse response = await client.ExecuteAsync(request);
            var output = response.Content;
            Console.WriteLine(output);
        }
    }
}

Enviar documento

using System;
using RestSharp;
using System.Threading.Tasks;

namespace test
{
    class Program
    {
        static async Task Main(string[] args)
        {
           
            string instanceId = "instance950"; // your instanceId
            string token = "yourtoken";         //instance Token
            string mobile = "14155552671";      
        
            var url = "https://api.ultramsg.com/" + instanceId  + "/messages/document";
            var client = new RestClient(url);
            var request = new RestRequest(url, Method.Post);
            request.AddHeader("content-type", "application/x-www-form-urlencoded");
            request.AddParameter("token", token);
            request.AddParameter("to", mobile);
            request.AddParameter("filename", "test.pdf");
            request.AddParameter("document", "https://file-example.s3-accelerate.amazonaws.com/documents/cv.pdf");

            RestResponse response = await client.ExecuteAsync(request);
            var output = response.Content;
            Console.WriteLine(output);
        }
    }
}

Enviar sonido

using System;
using RestSharp;
using System.Threading.Tasks;

namespace test
{
    class Program
    {
        static async Task Main(string[] args)
        {
           
            string instanceId = "instance950"; // your instanceId
            string token = "yourtoken";         //instance Token
            string mobile = "14155552671";    
        
            var url = "https://api.ultramsg.com/" + instanceId  + "/messages/audio";
            var client = new RestClient(url);
            var request = new RestRequest(url, Method.Post);
            request.AddHeader("content-type", "application/x-www-form-urlencoded");
            request.AddParameter("token", token);
            request.AddParameter("to", mobile);
            request.AddParameter("audio", "https://file-example.s3-accelerate.amazonaws.com/audio/2.mp3");

            RestResponse response = await client.ExecuteAsync(request);
            var output = response.Content;
            Console.WriteLine(output);
        }
    }
}

Enviar voz

using System;
using RestSharp;
using System.Threading.Tasks;

namespace test
{
    class Program
    {
        static async Task Main(string[] args)
        {
           
            string instanceId = "instance950"; // your instanceId
            string token = "yourtoken";         //instance Token
            string mobile = "14155552671";    
        
            var url = "https://api.ultramsg.com/" + instanceId  + "/messages/voice";
            var client = new RestClient(url);
            var request = new RestRequest(url, Method.Post);
            request.AddHeader("content-type", "application/x-www-form-urlencoded");
            request.AddParameter("token", token);
            request.AddParameter("to", mobile);
            request.AddParameter("audio", "https://file-example.s3-accelerate.amazonaws.com/voice/oog_example.ogg");

            RestResponse response = await client.ExecuteAsync(request);
            var output = response.Content;
            Console.WriteLine(output);
        }
    }
}

Enviar vídeo

using System;
using RestSharp;
using System.Threading.Tasks;

namespace test
{
    class Program
    {
        static async Task Main(string[] args)
        {
           
            string instanceId = "instance950"; // your instanceId
            string token = "yourtoken";         //instance Token
            string mobile = "14155552671";      
        
            var url = "https://api.ultramsg.com/" + instanceId  + "/messages/video";
            var client = new RestClient(url);
            var request = new RestRequest(url, Method.Post);
            request.AddHeader("content-type", "application/x-www-form-urlencoded");
            request.AddParameter("token", token);
            request.AddParameter("to", mobile);
            request.AddParameter("video", "https://file-example.s3-accelerate.amazonaws.com/video/test.mp4");

            RestResponse response = await client.ExecuteAsync(request);
            var output = response.Content;
            Console.WriteLine(output);
        }
    }
}

using System;
using RestSharp;
using System.Threading.Tasks;

namespace test
{
    class Program
    {
        static async Task Main(string[] args)
        {
           
            string instanceId = "instance950"; // your instanceId
            string token = "yourtoken";         //instance Token
            string mobile = "14155552671";    
        
            var url = "https://api.ultramsg.com/" + instanceId  + "/messages/link";
            var client = new RestClient(url);
            var request = new RestRequest(url, Method.Post);
            request.AddHeader("content-type", "application/x-www-form-urlencoded");
            request.AddParameter("token", token);
            request.AddParameter("to", mobile);
            request.AddParameter("link", "https://en.wikipedia.org/wiki/COVID-19");

            RestResponse response = await client.ExecuteAsync(request);
            var output = response.Content;
            Console.WriteLine(output);
        }
    }
}

Enviar contacto

using System;
using RestSharp;
using System.Threading.Tasks;

namespace test
{
    class Program
    {
        static async Task Main(string[] args)
        {
           
            string instanceId = "instance950"; // your instanceId
            string token = "yourtoken";         //instance Token
            string mobile = "14155552671";    
        
            var url = "https://api.ultramsg.com/" + instanceId  + "/messages/contact";
            var client = new RestClient(url);
            var request = new RestRequest(url, Method.Post);
            request.AddHeader("content-type", "application/x-www-form-urlencoded");
            request.AddParameter("token", token);
            request.AddParameter("to", mobile);
            request.AddParameter("contact", "[email protected]");

            RestResponse response = await client.ExecuteAsync(request);
            var output = response.Content;
            Console.WriteLine(output);
        }
    }
}

Enviar ubicación

using System;
using RestSharp;
using System.Threading.Tasks;

namespace test
{
    class Program
    {
        static async Task Main(string[] args)
        {
           
            string instanceId = "instance950"; // your instanceId
            string token = "yourtoken";         //instance Token
            string mobile = "14155552671";  
        
            var url = "https://api.ultramsg.com/" + instanceId  + "/messages/location";
            var client = new RestClient(url);
            var request = new RestRequest(url, Method.Post);
            request.AddHeader("content-type", "application/x-www-form-urlencoded");
            request.AddParameter("token", token);
            request.AddParameter("to", mobile);
            request.AddParameter("address", "ABC company \n Sixth floor , office 38");
            request.AddParameter("lat", "25.197197");
            request.AddParameter("lng", "55.2721877");

            RestResponse response = await client.ExecuteAsync(request);
            var output = response.Content;
            Console.WriteLine(output);
        }
    }
}

Enviar tarjeta virtual

using System;
using RestSharp;
using System.Threading.Tasks;

namespace test
{
    class Program
    {
        static async Task Main(string[] args)
        {
           
            string instanceId = "instance950"; // your instanceId
            string token = "yourtoken";         //instance Token
            string mobile = "14155552671";     
        
            var url = "https://api.ultramsg.com/" + instanceId  + "/messages/vcard";
            var client = new RestClient(url);
            var request = new RestRequest(url, Method.Post);
            request.AddHeader("content-type", "application/x-www-form-urlencoded");
            request.AddParameter("token", token);
            request.AddParameter("to", mobile);
            request.AddParameter("vcard", " BEGIN:VCARD\nVERSION:3.0\nN:lastname;firstname\nFN:firstname lastname\nTEL;TYPE=CELL;waid=14000000001:14000000002\nNICKNAME:nickname\nBDAY:01.01.1987\nX-GENDER:M\nNOTE:note\nADR;TYPE=home:;;;;;;\nADR;TYPE=work_:;;;;;;\nEND:VCARD");
            RestResponse response = await client.ExecuteAsync(request);
            var output = response.Content;
            Console.WriteLine(output);
        }
    }
}

Ejemplo para enviar una imagen como Base64 usando RestSharp

Para enviar imágenes y documentos desde una pc o servidor local, puedes convertir los archivos a formato base64 y enviarlos fácilmente a través del siguiente código:


using System;
using RestSharp;
using System.Threading.Tasks;
using System.IO;

namespace test
{
    class Program
    {
        static async Task Main(string[] args)
        {
           
            string instanceId = "instance950"; // your instanceId
            string token = "yourtoken";         //instance Token
            string mobile = "14155552671";   

            byte[] AsBytes = File.ReadAllBytes("test.jpeg");
            String AsBase64String = Convert.ToBase64String(AsBytes);
            var url = "https://api.ultramsg.com/" + instanceId  + "/messages/image";
            var client = new RestClient(url);
            var request = new RestRequest(url, Method.Post);
            request.AddHeader("content-type", "application/x-www-form-urlencoded");
            request.AddParameter("token", token);
            request.AddParameter("to", mobile);
            request.AddParameter("image", AsBase64String);
            RestResponse response = await client.ExecuteAsync(request);
            var output = response.Content;
            Console.WriteLine(output);
        }
    }
}

Ejemplo para enviar un documento como Base64 usando RestSharp

using System;
using RestSharp;
using System.Threading.Tasks;
using System.IO;

namespace test
{
    class Program
    {
        static async Task Main(string[] args)
        {
           
            string instanceId = "instance950"; // your instanceId
            string token = "yourtoken";         //instance Token
            string mobile = "14155552671";   

            byte[] AsBytes = File.ReadAllBytes("test.pdf");
            String AsBase64String = Convert.ToBase64String(AsBytes);
            var url = "https://api.ultramsg.com/" + instanceId  + "/messages/document";
            var client = new RestClient(url);
            var request = new RestRequest(url, Method.Post);
            request.AddHeader("content-type", "application/x-www-form-urlencoded");
            request.AddParameter("token", token);
            request.AddParameter("to", mobile);
            request.AddParameter("filename", "WhatsApp-API.pdf");
            request.AddParameter("document", AsBase64String);
            RestResponse response = await client.ExecuteAsync(request);
            var output = response.Content;
            Console.WriteLine(output);
        }
    }
}

API de WhatsApp usando C# con WebClient

No se recomienda para trabajos nuevos, pero es extremadamente fácil, si necesita realizar una solicitud http sincrónicamente,WebClient todavía se puede utilizar.

using System;
using System.Collections.Specialized;
using System.Net;
using System.Text;

public class Program
{
    public static void Main()
    {
        using (var wb = new WebClient())
        {
            var data = new NameValueCollection();
            data["token"] = "95041eyo9eqixrsi";
            data["body"] = "WhatsApp API on UltraMsg.com works good";
            data["to"] = "14155552671";

            var response =
                wb
                    .UploadValues("https://api.ultramsg.com/instance950/messages/chat",
                    "POST",
                    data);
            string responseInString = Encoding.UTF8.GetString(response);
            Console.WriteLine (responseInString);
        }

        ///////////
    }
}

Ejemplo para enviar documentos como Base64 usando c# y WebClient

using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.IO;
using System.Net;
using System.Text;
using System.Web;

public class Program
{
    public static void Main()
    {
        using (var wb = new WebClient())
        {
            byte[] AsBytes = File.ReadAllBytes("1.pdf");
            String AsBase64String = Convert.ToBase64String(AsBytes);
            var data = new NameValueCollection();
            data["token"] = "95041eyo9eqixrsi";
            data["to"] = "14155552671";
            data["document"] = AsBase64String;
            data["filename"] = "a.pdf";
            var response =
                wb
                    .UploadValues("https://api.ultramsg.com/instance950/messages/document",
                    "POST",
                    data);
            string responseInString = Encoding.UTF8.GetString(response);
            Console.WriteLine (responseInString);
        }

        ///////////
    }
}

finalmente, puede ver la documentación completa de la API de Whatsapp y las preguntas frecuentes .