-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWSP_API.cs
More file actions
97 lines (81 loc) · 3.8 KB
/
WSP_API.cs
File metadata and controls
97 lines (81 loc) · 3.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using System;
using System.Threading.Tasks;
using System.IO;
using System.Net.Http;
using System.Net.Http.Headers;
using Newtonsoft.Json;
public class WSP_API
{
string IdInstance { get; set; }
string apiTokenInstance { get; set; }
public WSP_API(string IdInstance, string apiTokenInstance)
{
this.IdInstance = IdInstance;
this.apiTokenInstance = apiTokenInstance;
}
// Clase que define el formato JSON de los comandos para utilizar el API de Whatsapp
// This class recieves the JSON format for WSP_API command execution
public class Wsp_JSON
{
public int statusCode { get; set; }
public DateTime timestamp { get; set; }
public string path { get; set; }
public string message { get; set; }
}
public async Task SendWspMessage(HttpClient client, string numero, string mensaje)
{
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://api.greenapi.com/waInstance" + this.IdInstance + "/sendMessage/" + this.apiTokenInstance);
//request.Headers.Add("Authorization", "Bearer " + apiTokenInstance);
request.Content = new StringContent("{" +
"\"chatId\": \"" + numero + "@c.us\"," +
"\"message\": \"" + mensaje + "\"" +
"}");
string message_response = await SendApiRequest(client, request);
Console.WriteLine(message_response);
Wsp_JSON online_status = JsonConvert.DeserializeObject<Wsp_JSON>(message_response.ToString());
}
public async Task<string> UploadFile(HttpClient client, string filepath, string file_type)
{
//file_type = "image/jpeg" para imagenes y "application/pdf" para PDF
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://api.green-api.com/waInstance" + this.IdInstance + "/uploadFile/" + this.apiTokenInstance);
byte[] fileContent = File.ReadAllBytes(filepath);
request.Content = new ByteArrayContent(fileContent);
request.Content.Headers.ContentType = new MediaTypeHeaderValue(file_type);
string message_response = await SendApiRequest(client, request);
return message_response;
}
public async Task SendFile(HttpClient client, string numero, string image_url, string file_name, string file_format)
{
//Construye el HTTP request con el enlace y los headers tal como el comando CURL
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://api.green-api.com/waInstance" + this.IdInstance + "/sendFileByUrl/" + this.apiTokenInstance);
request.Content = new StringContent("{" +
"\"chatId\": \"" + numero + "@c.us\"," +
"\"urlFile\": \"" + image_url + "\"," +
"\"fileName\": \"" + file_name + "." + file_format + "\"" +
"}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
string message_response = await SendApiRequest(client, request);
Wsp_JSON online_status = JsonConvert.DeserializeObject<Wsp_JSON>(message_response.ToString());
}
public async Task<string> SendApiRequest(HttpClient client, HttpRequestMessage request)
{
string responseBody = "";
try
{
HttpResponseMessage response = await client.SendAsync(request);
//response.EnsureSuccessStatusCode();
responseBody = await response.Content.ReadAsStringAsync();
}
catch (HttpRequestException error)
{
Console.WriteLine("\nException Caught!");
Console.WriteLine("Message :{0} ", error.InnerException.Message);
}
return responseBody;
}
public string ReplaceURL(string url_response)
{
string mssg = url_response.Replace("{\"urlFile\":\"", "").Replace("\"}", "");
return mssg;
}
}