diff --git a/App_Code/modExtensiones.vb b/App_Code/modExtensiones.vb
index 1831a63a6..a650d3ebc 100644
--- a/App_Code/modExtensiones.vb
+++ b/App_Code/modExtensiones.vb
@@ -25,6 +25,7 @@ Imports iText.Html2pdf
Imports iText.Html2pdf.Resolver.Font
Imports iText.Layout.Properties
Imports Newtonsoft.Json
+Imports Stimulsoft.Base.Json.Linq
Namespace Extensiones
#Region "E X T E N S I O N E S"
@@ -153,6 +154,8 @@ Namespace Extensiones
Public Const MinFecha As Date = #1/1/1900#
Public Const MaxFecha As Date = #1/1/9999#
Public Const GlobalRowVersion As Integer = 555555
+ Public Const WhatsAppToken As String = "EAAQvTBdnkp4BO51Hmf5PD48NaY3ZC830gUS7WVNNoZAampZCK256UQ68OZCVCcPZCZCMmtW4xZA0PtP8HLRz6ZASufOgqk4A0lOpCi4ZBtWR5ZCpiMZCr9e0PpwUx4lZBW0spGZBM1DcOHQE5DnTmeJ1RISBnzI1i8RbRClLk2xbvNTu4elEXoSaofd96bW2mQ66ddLprSAZDZD"
+
#Region "PropiedadesEncriptación"
Private _Key() As Byte = {}
@@ -628,21 +631,14 @@ Namespace Extensiones
Return String.Format("
{0}{3}", Time, Tipo, Ico, Mensaje, Link, If(tonewpage, "target=""_blank""", ""))
End Function
- Public Function EnviarNotificacionWhatsApp(NumeroTelefono As String, Mensaje As String, Optional NombrePlantilla As String = "", Optional Token As String = "") As Boolean
+ Public Function EnviarNotificacionWhatsApp(NumeroTelefono As String, Mensaje As String, Optional NombrePlantilla As String = "") As Boolean
Dim RetornoObj As String = "{}"
Dim Retorno As Boolean = False
- Dim Str As String = ""
-
- If String.IsNullOrEmpty(Token) Then
- Str = My.Computer.FileSystem.ReadAllText($"c:\temp\WSToken.txt")
- Else
- Str = Token
- End If
Try
- Dim TokenAutorizacion As String = $"Bearer {Str}"
+ Dim TokenAutorizacion As String = $"Bearer {WhatsAppToken}"
Using httpClient = New HttpClient()
- Using request = New HttpRequestMessage(HttpMethod.Post, New Uri("https://graph.facebook.com/v20.0/400260286507131/messages"))
+ Using request = New HttpRequestMessage(HttpMethod.Post, New Uri("https://graph.facebook.com/v20.0/425866980604901/messages"))
request.Headers.Add("Authorization", TokenAutorizacion)
Dim json = New Newtonsoft.Json.Linq.JObject()
@@ -687,6 +683,78 @@ Namespace Extensiones
Return Retorno
End Function
+ Public Function EnviarNotificacionBienvendiaWhatsApp(NumeroTelefono As String, NombreUsuario As String, Mensaje As String) As Boolean
+ Dim RetornoObj As String = "{}"
+ Dim Retorno As Boolean = False
+
+ Try
+ Dim TokenAutorizacion As String = $"Bearer {WhatsAppToken}"
+ Using httpClient = New HttpClient()
+ Using request = New HttpRequestMessage(HttpMethod.Post, New Uri("https://graph.facebook.com/v20.0/425866980604901/messages"))
+
+ request.Headers.Add("Authorization", TokenAutorizacion)
+ Dim json = New Newtonsoft.Json.Linq.JObject()
+ json.Add(New Newtonsoft.Json.Linq.JProperty("messaging_product", "whatsapp"))
+ json.Add(New Newtonsoft.Json.Linq.JProperty("to", NumeroTelefono))
+
+ json.Add(New Newtonsoft.Json.Linq.JProperty("type", "template"))
+
+ Dim plantilla As New Newtonsoft.Json.Linq.JObject(
+ New Newtonsoft.Json.Linq.JProperty("name", "bienvenida"),
+ New Newtonsoft.Json.Linq.JProperty("language",
+ New Newtonsoft.Json.Linq.JObject(
+ New Newtonsoft.Json.Linq.JProperty("code", "es_MX")
+ )
+ ),
+ New Newtonsoft.Json.Linq.JProperty("components",
+ New Newtonsoft.Json.Linq.JArray(
+ New Newtonsoft.Json.Linq.JObject(
+ New Newtonsoft.Json.Linq.JProperty("type", "header"),
+ New Newtonsoft.Json.Linq.JProperty("parameters",
+ New Newtonsoft.Json.Linq.JArray(
+ New Newtonsoft.Json.Linq.JObject(
+ New Newtonsoft.Json.Linq.JProperty("type", "text"),
+ New Newtonsoft.Json.Linq.JProperty("text", NombreUsuario)
+ )
+ )
+ )
+ ),
+ New Newtonsoft.Json.Linq.JObject(
+ New Newtonsoft.Json.Linq.JProperty("type", "body"),
+ New Newtonsoft.Json.Linq.JProperty("parameters",
+ New Newtonsoft.Json.Linq.JArray(
+ New Newtonsoft.Json.Linq.JObject(
+ New Newtonsoft.Json.Linq.JProperty("type", "text"),
+ New Newtonsoft.Json.Linq.JProperty("text", Mensaje)
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+
+ json.Add(New Newtonsoft.Json.Linq.JProperty("template", plantilla))
+
+ Using content = New StringContent(json.ToString, Encoding.UTF8, "application/json")
+ request.Content = content
+ Dim response = httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).Result
+
+ If response.StatusCode = Net.HttpStatusCode.OK Then
+ RetornoObj = response.Content.ReadAsStringAsync().Result
+ Retorno = True
+ End If
+ End Using
+
+ End Using
+
+ End Using
+ Catch ex As Exception
+ RetornoObj = New Newtonsoft.Json.Linq.JObject(New Newtonsoft.Json.Linq.JProperty("Error", ex.ToString())).ToString()
+ GuardaLog("Ocurrió un error al enviar la informacion por whatsapp" & ex.Message)
+ End Try
+ Return Retorno
+ End Function
#End Region
diff --git a/Sistemas/SessionesActivas.aspx b/Sistemas/SessionesActivas.aspx
index 312a880fb..580cd16d9 100644
--- a/Sistemas/SessionesActivas.aspx
+++ b/Sistemas/SessionesActivas.aspx
@@ -129,7 +129,6 @@
-
diff --git a/Sistemas/SessionesActivas.aspx.vb b/Sistemas/SessionesActivas.aspx.vb
index 2b0a81488..36c3c06e8 100644
--- a/Sistemas/SessionesActivas.aspx.vb
+++ b/Sistemas/SessionesActivas.aspx.vb
@@ -193,9 +193,8 @@ Partial Class SessionesActivas
Dim mensaje = TxtMensaje.Text.Trim() + "
Liga"
- 'TokenPermanente
- Dim Token = "EAAQvTBdnkp4BO51Hmf5PD48NaY3ZC830gUS7WVNNoZAampZCK256UQ68OZCVCcPZCZCMmtW4xZA0PtP8HLRz6ZASufOgqk4A0lOpCi4ZBtWR5ZCpiMZCr9e0PpwUx4lZBW0spGZBM1DcOHQE5DnTmeJ1RISBnzI1i8RbRClLk2xbvNTu4elEXoSaofd96bW2mQ66ddLprSAZDZD"
- EnviarNotificacionWhatsApp("6621143532", mensaje, Token:=Token)
+
+ EnviarNotificacionWhatsApp("6621143532", mensaje)
ClsSisNotificaciones.EnviarAlerta("Aviso", mensaje, RCveUsuario, Tipo:=TipoNotificacion.ToastInformacionB)
diff --git a/Sistemas/UsuarioDetalle.aspx b/Sistemas/UsuarioDetalle.aspx
index 06a85cab7..251d0e29b 100644
--- a/Sistemas/UsuarioDetalle.aspx
+++ b/Sistemas/UsuarioDetalle.aspx
@@ -1249,7 +1249,7 @@
-
+
+
+
+
+
+
+ Notificaciones
+
+
+
+
+
+
+
+ | Celular: |
+
+
+ |
+
+
+ | |
+
+
+
+
+
@@ -3194,7 +3225,6 @@
-
diff --git a/Sistemas/UsuarioDetalle.aspx.vb b/Sistemas/UsuarioDetalle.aspx.vb
index ab86e0424..ad57bdcea 100644
--- a/Sistemas/UsuarioDetalle.aspx.vb
+++ b/Sistemas/UsuarioDetalle.aspx.vb
@@ -2,6 +2,7 @@
Option Strict On
Imports System.Data
+Imports System.Net.Http
Imports Extensiones
Imports Microsoft.Reporting.WebForms
@@ -611,6 +612,7 @@ Partial Class Sistemas_UsuarioDetalle
TxtPorcentajeMaximoAutorizacion.Text = ObjUsuario.DtResultados.Rows(0)("PorcentajeMaximoAutorizacion").ToString().ToDecimal().FormatoNumero(2)
TxtDiasVencidos.Text = ObjUsuario.DtResultados.Rows(0)("DiasMaximoAutorizacion").ToString()
+ TxtTelefono.Text = ObjUsuario.DtResultados.Rows(0)("Celular").ToString()
Else
Alert("El Usuario Solicitado no existe, Revise su búsqueda.", TipoMensaje.MsgAdvertencia)
BtnGuardar.Enabled = False
@@ -858,7 +860,7 @@ Partial Class Sistemas_UsuarioDetalle
'REGISTRA O ACTUALIZA LOS DATOS GENERALES DEL USUARIO
If CveUsuario = -1 Then
- CveUsuario = ObjUsuarios.AddUsuario(TxtUsuario.Text.Trim, Encripta(ContraseñaPredeterminada), TxtNombre.Text.Trim, DdlRol.SelectedValue.ToEntero, TxtCorreo.Text.Trim, DdlPersonal.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, ChkCambiarContraseña.Checked, UsuarioActual.CveUsuario, DdlEmpresa.SelectedValue.ToEntero, DdlSubProyectos.SelectedValue.ToEntero, CveAlmacenAsignado:=DdlAlmacenGeneral.SelectedValue.ToEntero, AsignarSubProyecto:=ChkAsignarSubProyecto.Checked, AsignarOC:=ChkAsignarOC.Checked, DescuentoAutorizado:=TxtDescuentoAutorizado.Text.ToDouble, CodigoAcceso:=CodigoAcceso, LimiteCreditoAutorizado:=TxtLimiteAutorizado.Text.ToDecimal(), PorcentajeMaximoAutorizacion:=TxtPorcentajeMaximoAutorizacion.Text.ToDecimal(), DiasMaximoAutorizacion:=TxtDiasVencidos.Text.ToEntero())
+ CveUsuario = ObjUsuarios.AddUsuario(TxtUsuario.Text.Trim, Encripta(ContraseñaPredeterminada), TxtNombre.Text.Trim, DdlRol.SelectedValue.ToEntero, TxtCorreo.Text.Trim, DdlPersonal.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, ChkCambiarContraseña.Checked, UsuarioActual.CveUsuario, DdlEmpresa.SelectedValue.ToEntero, DdlSubProyectos.SelectedValue.ToEntero, CveAlmacenAsignado:=DdlAlmacenGeneral.SelectedValue.ToEntero, AsignarSubProyecto:=ChkAsignarSubProyecto.Checked, AsignarOC:=ChkAsignarOC.Checked, DescuentoAutorizado:=TxtDescuentoAutorizado.Text.ToDouble, CodigoAcceso:=CodigoAcceso, LimiteCreditoAutorizado:=TxtLimiteAutorizado.Text.ToDecimal(), PorcentajeMaximoAutorizacion:=TxtPorcentajeMaximoAutorizacion.Text.ToDecimal(), DiasMaximoAutorizacion:=TxtDiasVencidos.Text.ToEntero(), Celular:=TxtTelefono.Text.Trim())
EsNuevoUsuario = True
If CveUsuario = -1 Then
TieneError = True
@@ -870,7 +872,7 @@ Partial Class Sistemas_UsuarioDetalle
End If
Next
Else
- If Not ObjUsuarios.UpdateUsuario(TxtUsuario.Text.Trim, TxtNombre.Text.Trim, DdlRol.SelectedValue.ToEntero, TxtCorreo.Text.Trim, DdlPersonal.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, ChkCambiarContraseña.Checked, ChkEstatus.Checked, DdlEmpresa.SelectedValue.ToEntero, CveUsuario, DdlAlmacenGeneral.SelectedValue.ToEntero, DdlSubProyectos.SelectedValue.ToEntero, UsuarioActual.CveUsuario, AsignarSubProyecto:=ChkAsignarSubProyecto.Checked, AsignarOC:=ChkAsignarOC.Checked, DescuentoAutorizado:=TxtDescuentoAutorizado.Text.ToDouble, CodigoAcceso:=CodigoAcceso, LimiteCreditoAutorizado:=TxtLimiteAutorizado.Text.ToDecimal(), PorcentajeMaximoAutorizacion:=TxtPorcentajeMaximoAutorizacion.Text.ToDecimal(), DiasMaximoAutorizacion:=TxtDiasVencidos.Text.ToEntero()) Then
+ If Not ObjUsuarios.UpdateUsuario(TxtUsuario.Text.Trim, TxtNombre.Text.Trim, DdlRol.SelectedValue.ToEntero, TxtCorreo.Text.Trim, DdlPersonal.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, ChkCambiarContraseña.Checked, ChkEstatus.Checked, DdlEmpresa.SelectedValue.ToEntero, CveUsuario, DdlAlmacenGeneral.SelectedValue.ToEntero, DdlSubProyectos.SelectedValue.ToEntero, UsuarioActual.CveUsuario, AsignarSubProyecto:=ChkAsignarSubProyecto.Checked, AsignarOC:=ChkAsignarOC.Checked, DescuentoAutorizado:=TxtDescuentoAutorizado.Text.ToDouble, CodigoAcceso:=CodigoAcceso, LimiteCreditoAutorizado:=TxtLimiteAutorizado.Text.ToDecimal(), PorcentajeMaximoAutorizacion:=TxtPorcentajeMaximoAutorizacion.Text.ToDecimal(), DiasMaximoAutorizacion:=TxtDiasVencidos.Text.ToEntero(), Celular:=TxtTelefono.Text.Trim()) Then
TieneError = True
End If
@@ -5013,4 +5015,82 @@ Partial Class Sistemas_UsuarioDetalle
params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", "")))
ImprimirPDF("Empresas/Grales/Formatos/BitacoraLogin.rdlc", DtDatos, params, String.Format("BitacoraRegistro-{0}", NowADS().ToDateTime.ToShortDateString))
End Sub
+
+ Protected Sub BtnEnviarMensaje_Click(sender As Object, e As EventArgs)
+ EnviarNotificacionBienvendiaWhatsApp($"52{TxtTelefono.Text}", TxtNombre.Text, "\nFavor de responder el mensaje")
+ Alert("El mensaje se envio correctamente")
+ End Sub
+
+ 'Public Function EnviarNotificacionBienvendiaWhatsApp(NumeroTelefono As String, NombreUsuario As String, Mensaje As String) As Boolean
+ ' Dim RetornoObj As String = "{}"
+ ' Dim Retorno As Boolean = False
+
+ ' Try
+ ' Dim TokenAutorizacion As String = $"Bearer {WhatsAppToken}"
+ ' Using httpClient = New HttpClient()
+ ' Using request = New HttpRequestMessage(HttpMethod.Post, New Uri("https://graph.facebook.com/v20.0/425866980604901/messages"))
+
+ ' request.Headers.Add("Authorization", TokenAutorizacion)
+ ' Dim json = New Newtonsoft.Json.Linq.JObject()
+ ' json.Add(New Newtonsoft.Json.Linq.JProperty("messaging_product", "whatsapp"))
+ ' json.Add(New Newtonsoft.Json.Linq.JProperty("to", NumeroTelefono))
+
+ ' json.Add(New Newtonsoft.Json.Linq.JProperty("type", "template"))
+
+ ' Dim plantilla As New Newtonsoft.Json.Linq.JObject(
+ ' New Newtonsoft.Json.Linq.JProperty("name", "bienvenida"),
+ ' New Newtonsoft.Json.Linq.JProperty("language",
+ ' New Newtonsoft.Json.Linq.JObject(
+ ' New Newtonsoft.Json.Linq.JProperty("code", "es_MX")
+ ' )
+ ' ),
+ ' New Newtonsoft.Json.Linq.JProperty("components",
+ ' New Newtonsoft.Json.Linq.JArray(
+ ' New Newtonsoft.Json.Linq.JObject(
+ ' New Newtonsoft.Json.Linq.JProperty("type", "header"),
+ ' New Newtonsoft.Json.Linq.JProperty("parameters",
+ ' New Newtonsoft.Json.Linq.JArray(
+ ' New Newtonsoft.Json.Linq.JObject(
+ ' New Newtonsoft.Json.Linq.JProperty("type", "text"),
+ ' New Newtonsoft.Json.Linq.JProperty("text", NombreUsuario)
+ ' )
+ ' )
+ ' )
+ ' ),
+ ' New Newtonsoft.Json.Linq.JObject(
+ ' New Newtonsoft.Json.Linq.JProperty("type", "body"),
+ ' New Newtonsoft.Json.Linq.JProperty("parameters",
+ ' New Newtonsoft.Json.Linq.JArray(
+ ' New Newtonsoft.Json.Linq.JObject(
+ ' New Newtonsoft.Json.Linq.JProperty("type", "text"),
+ ' New Newtonsoft.Json.Linq.JProperty("text", Mensaje)
+ ' )
+ ' )
+ ' )
+ ' )
+ ' )
+ ' )
+ ' )
+
+ ' json.Add(New Newtonsoft.Json.Linq.JProperty("template", plantilla))
+
+ ' Using content = New StringContent(json.ToString, Encoding.UTF8, "application/json")
+ ' request.Content = content
+ ' Dim response = httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).Result
+
+ ' If response.StatusCode = Net.HttpStatusCode.OK Then
+ ' RetornoObj = response.Content.ReadAsStringAsync().Result
+ ' Retorno = True
+ ' End If
+ ' End Using
+
+ ' End Using
+
+ ' End Using
+ ' Catch ex As Exception
+ ' RetornoObj = New Newtonsoft.Json.Linq.JObject(New Newtonsoft.Json.Linq.JProperty("Error", ex.ToString())).ToString()
+ ' GuardaLog("Ocurrió un error al enviar la informacion por whatsapp" & ex.Message)
+ ' End Try
+ ' Return Retorno
+ 'End Function
End Class