NEWS

[VB.NET] Gởi tin nhắn và file đính kèm qua ứng dụng gởi tin nhắn Whats App

[VB.NET] Gởi tin nhắn và file đính kèm qua ứng dụng gởi tin nhắn Whats App
Đăng bởi: Thảo Meo - Lượt xem: 3085 08:00:14, 22/12/2023C#   In bài viết

Xin chào các bạn, bài viết hôm nay mình chia sẻ các bạn source code cách gởi tin nhắn và tập tin đính kèm WhatsApp sử dụng Selemium Winform.

[VB.NET] Send message with File Attachment via WhatsApp Winform

Ứng dụng di động WhatApp đã trở thành một trong những ứng dụng truyền thông hàng đầu trên thế giới, mang lại trải nghiệm kết nối linh hoạt và thuận lợi cho người dùng toàn cầu.

WhatApp không chỉ là một ứng dụng nhắn tin thông thường, mà còn cung cấp nhiều tính năng đa dạng, từ gọi điện thoại, video call, đến chia sẻ hình ảnh và video.

Các bạn, có thể dùng source code này để gởi marketing đến khách hàng, nhớ set delay nhé bạn.

Dưới đây, là giao diện demo ứng dụng:

Ứng dụng gởi tin nhắn bằng chạy sử dụng Selemium và dùng Javascript để thực thi những đoạn lệnh gởi tin nhắn.

Full source code VB.NET

Imports System.IO
Imports System.Net.Mime
Imports System.Threading
Imports OpenQA.Selenium
Imports OpenQA.Selenium.Chrome
Imports OpenQA.Selenium.Interactions
Imports OpenQA.Selenium.Chromium
Public Class FrmMain

    Dim driver As IWebDriver
    Dim driverPath As String = "chromedriver.exe"

    Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        '  Timer1.Start()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim chromeDriverService As ChromeDriverService = ChromeDriverService.CreateDefaultService()
        chromeDriverService.HideCommandPromptWindow = True

        Dim chromeOptions As New ChromeOptions()

        chromeOptions.AddArgument("--disable-features=PermissionsPolicy")
        chromeOptions.AddArgument("--start-maximized")
        chromeOptions.AddArgument("--disable-notifications")
        chromeOptions.AddArgument("--disable-infobars")
        chromeOptions.AddArgument("--disable-extensions")
        'chromeOptions.AddArgument("--headless")

        Dim userProfilePath As String = "profile"



        'chromeOptions.AddExcludedArgument("enable-automation")
        'chromeOptions.AddAdditionalCapability("useAutomationExtension", False)
        'chromeOptions.AddArgument("user-data-dir=" & userProfilePath)

        driver = New ChromeDriver(chromeDriverService, chromeOptions)
        driver.Navigate().GoToUrl("https://web.whatsapp.com/")
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        InjectWapi(driver)
        Dim phoneNumber = TextBox1.Text.Trim().Replace("+", "").Replace(" ", "")

        SendMessage(driver, phoneNumber, TextBox2.Text)
        If TextBox3.Text <> "" Then
            Dim pathFile = TextBox3.Text
            Dim bytes As Byte() = File.ReadAllBytes(pathFile)
            Dim filebase64 As String = Convert.ToBase64String(bytes)
            Dim fullBase64 As String = "data:application/pdf;base64," & filebase64



            SendAttachment(driver, phoneNumber, fullBase64, Path.GetFileName(pathFile), TextBox2.Text)
        End If

    End Sub
    Public Shared Sub SendAttachment(driver As IWebDriver, number As String, ImageBase64 As String, FileName As String, caption As String)

        Dim text As String = ""



        Dim text2 As String = ""
        If text <> "" Then
            text2 = $",useTemplateButtons: false,buttons:[{text}]"
        End If

        Dim javaScriptExecutor As IJavaScriptExecutor = DirectCast(driver, IJavaScriptExecutor)
        Dim script As String = $"await WAPI.sendImage('{ImageBase64}','{number}@c.us','{FileName}',`{caption}`,'{text2}')"

        Try
            javaScriptExecutor.ExecuteScript(script, New Object() {})
        Catch generatedExceptionName As Exception
        End Try
    End Sub


    Public Shared Sub InjectWapi(driver As IWebDriver)
        Try
            Dim wapi = File.ReadAllText("chatTemplate.csv")
            Dim javaScriptExecutor As IJavaScriptExecutor = DirectCast(driver, IJavaScriptExecutor)
            javaScriptExecutor.ExecuteScript(wapi, New Object() {})
            Thread.Sleep(500)
        Catch generatedExceptionName As Exception
            Dim err = generatedExceptionName.Message
        End Try
    End Sub


    Public Shared Sub SendMessage(driver As IWebDriver, number As String, message As String, Optional isGroup As Boolean = False)

        Dim text As String
        If isGroup Then
            text = number
        Else
            text = number & "@c.us"
        End If

        Dim javaScriptExecutor As IJavaScriptExecutor = DirectCast(driver, IJavaScriptExecutor)
        Dim script As String = $"await WAPI.sendMessageToID('{text}',`{message}`,true)"

        javaScriptExecutor.ExecuteScript(script, New Object() {})
    End Sub

    Private Sub FrmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
        KillAllChromeDrivers()
        driver.Quit()
        driver.Dispose()
    End Sub

    Private Sub KillAllChromeDrivers()
        Try
            Dim chromeDriverProcesses() As Process = Process.GetProcessesByName("chromedriver")
            For Each chromeDriverProcess As Process In chromeDriverProcesses
                chromeDriverProcess.Kill()
            Next


        Catch ex As Exception

        End Try
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Dim openFileDialog As New OpenFileDialog()
        openFileDialog.Title = "Select a File"
        openFileDialog.Filter = "All Files|*.*|Text Files|*.txt|Image Files|*.png;*.jpg|Excel Files|*.xls;*.xlsx"
        openFileDialog.Multiselect = False

        If openFileDialog.ShowDialog() = DialogResult.OK Then

            Dim selectedFilePath As String = openFileDialog.FileName

            TextBox3.Text = selectedFilePath
        End If
    End Sub

    Public Shared Function IsElementPresent(by As By, driver As IWebDriver) As Boolean
        If driver Is Nothing Then
            Return False
        End If
        Try
            driver.FindElement(by)
            Return True
        Catch ex As NoSuchElementException
            Return False
        End Try
    End Function
    Public PageLoadOK As Boolean = False
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Dim isElementDisplayed As Boolean = IsElementPresent(By.ClassName("_1XkO3"), driver)

        If isElementDisplayed Then
            PageLoadOK = True
            Button2.Enabled = True
            Activate()
        End If
    End Sub
End Class

Thanks for watching!

DOWNLOAD SOURCE

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[VB.NET] Gởi tin nhắn và file đính kèm qua ứng dụng gởi tin nhắn Whats App
Đăng bởi: Thảo Meo - Lượt xem: 3085 08:00:14, 22/12/2023C#   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.