--Enviar mensaje de bienvenida whatsapp

This commit is contained in:
2024-10-09 19:15:00 -07:00
parent 8500107a31
commit 0a7ca48dc4
5 changed files with 194 additions and 18 deletions

View File

@@ -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("<li><a href=""{4}"" {5}>{0}<span class=""details""><span class=""label label-sm label-icon label-{1}""><i class=""{2}""></i></span>{3}</span></a></li>", 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

View File

@@ -129,7 +129,6 @@
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</asp:Content>
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">

View File

@@ -193,9 +193,8 @@ Partial Class SessionesActivas
Dim mensaje = TxtMensaje.Text.Trim() + "<br/> <a target='_blank' href='https://www.w3schools.com'>Liga</a>"
'TokenPermanente
Dim Token = "EAAQvTBdnkp4BO51Hmf5PD48NaY3ZC830gUS7WVNNoZAampZCK256UQ68OZCVCcPZCZCMmtW4xZA0PtP8HLRz6ZASufOgqk4A0lOpCi4ZBtWR5ZCpiMZCr9e0PpwUx4lZBW0spGZBM1DcOHQE5DnTmeJ1RISBnzI1i8RbRClLk2xbvNTu4elEXoSaofd96bW2mQ66ddLprSAZDZD"
EnviarNotificacionWhatsApp("6621143532", mensaje, Token:=Token)
EnviarNotificacionWhatsApp("6621143532", mensaje)
ClsSisNotificaciones.EnviarAlerta("Aviso", mensaje, RCveUsuario, Tipo:=TipoNotificacion.ToastInformacionB)

View File

@@ -1249,7 +1249,7 @@
</div>
</div>
<div class="col-md-7">
<div class="portlet light xspadding bordered" style="display:none!important">
<div class="portlet light xspadding bordered" style="display: none!important">
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-pin font-green"></i>
@@ -2622,6 +2622,37 @@
</div>
</div>
</div>
<div class="col-md-4">
<div class="portlet light xspadding bordered ">
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-pin font-green"></i>
<span class="caption-subject bold uppercase">Notificaciones</span>
</div>
<div class="actions">
<div class="btn-group">
</div>
</div>
<div class="tools">
<a href="javascript:;" class="collapse" data-original-title="" title=""></a>
<a href="javascript:;" class="fullscreen" data-original-title="" title=""></a>
</div>
</div>
<div class="portlet-body nomarginleftright form-horizontal form-row-sepe formnombottom ">
<table border="0">
<tr>
<td>Celular:</td>
<td>
<asp:TextBox ID="TxtTelefono" TextMode="Phone" CssClass="form-control input-sm" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td colspan="2"> <asp:Button ID="BtnEnviarMensaje" runat="server" Text="Enviar Notificación" class="btn btn-primary" OnClick="BtnEnviarMensaje_Click" /></td>
</tr>
</table>
</div>
</div>
</div>
</div>
</ContentTemplate>
<Triggers>
@@ -3194,7 +3225,6 @@
</asp:UpdatePanel>
</div>
</asp:Content>
<asp:Content ID="Content7" ContentPlaceHolderID="JS" runat="Server">
<script src="/Metronic/assets/global/plugins/jquery.pulsate.min.js"></script>

View File

@@ -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