Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   SMS API απο .Net σε VBA (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/5516-sms-application-programming-interface-apo-net-se-visual-basic-applications.html)

γιώργοςΚ 16-04-20 14:51

SMS API απο .Net σε VBA
 
1 Συνημμένο(α)
Φίλοι μου γειά σας,

Πιστεύω ότι το θέμα μου απασχολεί πάρα πολλούς σχεδιαστές εφαρμογών και εάν και εφόσον βρούμε κάποια λύση αυτό θα βοηθήσει όλους.

Απο κάποιο provider μου έχει σταλεί ένας κώδικας .Net μέσω του οποίου μπορει κάποιος εφόσον δημιουργήσει λογαριασμό στην εν λόγο υπηρεσία να στέλνει μαζικά ή ένα-προς ένα αυτόματα SMS μεσω της Access. Προσπάθησα να προσαρμόσω τον κώδικα για να δουλέυει σε VBA αλλά κάπου έχω κολλήσει....Επισυνάπτω την βάση μου και θα εκτιμήσω εάν κάποιος μπορέσει να με βοηθήσει για να δημιουργήσουμε μια λειτουργική μονάδα σε VBA για να μπορεί τελικά να λειτουργεί.

Ευχαριστω εκ προτέρων

Παραθέτω επίσης αυτούσιο τον κωδικα ίσως και φανεί χρήσιμο

Dear George

I am sending you the api manual as well as a piece of vb code

‘’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Dim usr, psw, mobnu, title, message As String
usr = HttpUtility.UrlEncode("email@email.com")
psw = HttpUtility.UrlEncode("7fhd8y8erwe")
mobnu = HttpUtility.UrlEncode("35799999999")
title = HttpUtility.UrlEncode("Amlex")
message = HttpUtility.UrlEncode("Test API")

send_sms("http://api.microsms.net/sendapidirect.asp?usr=" & usr & "&psw=" & psw & "&dtype=1&title=" & title & "&mobnu=" & mobnu & "&message=" & message)
End Sub
Public Shared Function send_sms(pass_url As String)
Dim strurl As String
strurl = pass_url
Dim rtnvalue As String
Try


Dim s As HttpWebRequest
Dim enc As UTF8Encoding
Dim postdata As String
Dim postdatabytes As Byte()
s = HttpWebRequest.Create(strurl)
enc = New System.Text.UTF8Encoding()
Dim connection_guid, api_guid As String
connection_guid = System.Guid.NewGuid.ToString()
api_guid = "xxx_guid"
postdata = postdata & "&api_guid=" & api_guid
postdata = postdata & "&connection_guid=" & connection_guid


postdatabytes = enc.GetBytes(postdata)
s.Method = "POST"
s.ContentType = "application/x-www-form-urlencoded"
s.ContentLength = postdatabytes.Length

Try
Using stream = s.GetRequestStream()
stream.Write(postdatabytes, 0, postdatabytes.Length)
End Using
'' Dim result = s.GetResponse()
Dim httpWebResponse As System.Net.HttpWebResponse = s.GetResponse()

If httpWebResponse.StatusCode = System.Net.HttpStatusCode.OK Then

Dim responseReader As System.IO.StreamReader = New System.IO.StreamReader(httpWebResponse.GetResponse Stream())
rtnvalue = responseReader.ReadToEnd()

Else
rtnvalue = "no return"
End If
Catch ex As Exception
rtnvalue = ex.ToString
'' Log_error("Err0663", "error in 'sendsmsmessage()' " & strurl, ex.Message.ToString(), "", "")
End Try
Catch ex As Exception
'' Log_error("Err0664", "error in 'sendsmsmessage()' " & strurl, ex.Message.ToString(), "", "")
End Try
Return rtnvalue
End Function
‘’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’

vraxnakisg 16-04-20 18:18

1 Συνημμένο(α)
Καλησπέρα Γιώργο,

Χρόνια Πολλά, καλή Ανάσταση με υγεία και Ευτυχία.

Δες μια πρόταση.

Ευχαριστώ.

γιώργοςΚ 16-04-20 19:51

Παράθεση:

Αρχική Δημοσίευση από vraxnakisg (Μήνυμα 30888)
Καλησπέρα Γιώργο,

Χρόνια Πολλά, καλή Ανάσταση με υγεία και Ευτυχία.

Δες μια πρόταση.

Ευχαριστώ.

Καλησπέρα Γιώργο και πρώτα απο όλα σε ευχαριστω.

Θα κοιτάξω την βάση και αν υπάρχει κάποιο θεμα θα επανέλθω. Ευχομαι και ελπίζω μέσα σε όλο αυτό τον κυκεώνα να εισαι καλά εσυ και η οικογένεια σου..

Καλό Πάσχα (με ότι αυτό συνεπάγεται)

γιώργοςΚ 16-04-20 22:57

Γιώργο καλησπέρα πάλι,

Έχω κοιτάξει το παράδειγμα και δουλεύει μια χαρά, αφου εχω βαλει τους σχετικοϋς κωδικοϋς απο τον παροχέα. Ωστόσο, δουλεύει για αποστολή ενός μηνύματος καθε φορά. Το ιδανικό θα ήταν εάν απο τον πίνακα Patients παίρνει τα κινητά απευθείας και με Loop να στέλνει σε όλους αυτόματα το μήνυμα, αυτό είναι εφικτό?

Ευχαριστω πάλι και εκτιμω την βοήθεια

vraxnakisg 17-04-20 09:19

1 Συνημμένο(α)
Καλημέρα Γιώργο,

Δες μια πρόταση.

Καλό θα ήταν να κάνεις και έλεγχο αν ο αριθμός τηλεφώνου είναι σωστός σε μορφή και μήκος και αν έχεις περιορισμό στο μέγεθος του sms.

Να προσέξεις και τις τιμές που σου επιστρέφει το service.

Ευχαριστώ.

γιώργοςΚ 17-04-20 21:14

Καλησπέρα Γιώργο αλλά και σε όλους τους φίλους,

Γιώργο το παράδειγμα δουλεϋει μόνο που εφόσον σταλεί το μήνυμα στα κινητά, δεν εμφανίζονται οι χαρακτήρες (λέξεις, προτάσεις κλπ) παρά μόνο εμφανίζονται ερωτηματικά συνεχόμενα (??????). Ψάχνωντας να λύσω το πρόβλημα κατόρθωσα και μίλησα με κάποιο τεχνικό της υπηρεσίας και μου εξήγησε οτι το μηνυμα πρέπει να αποστέλνεται σε UTF8 encoding...

Παραθέτω και ενα μικρό παράδειγμα ενος αρχείου που μου δόθηκε

Παράδειγμα: Ελληνικά, απλό sms
Για να στείλουμε sms με ελληνικούς χαρακτήρες ακολουθείται η εξής
διαδικασία πριν καλέσουμε το παραπάνω url, προκειμένου να
μετατρέψουμε τους χαρακτήρες σε 7bit encoding :
$text = mb_convert_case($text, MB_CASE_UPPER, "UTF-8"); //μετατρέπουμε όλο το
κείμενο σε κεφαλαία
$text = urlencode($text); //κωδικοποίηση χαρακτήρων σε url encoding
$text = to7bit($text); // εφαρμόζουμε την παρακάτω συνάρτηση
function to7bit($text){
$text = str_replace('%CE%91', 'A', $text );
$text = str_replace('%CE%86', 'A', $text ); // Ά
$text = str_replace('%CE%92', 'B', $text );
$text = str_replace('%CE%93', '%13', $text ); // Γ
$text = str_replace('%CE%94', '%10', $text ); // Δ
$text = str_replace('%CE%95', 'E', $text );
$text = str_replace('%CE%88', 'E', $text ); // Έ
$text = str_replace('%CE%96', 'Z', $text );
$text = str_replace('%CE%97', 'H', $text );
$text = str_replace('%CE%89', 'H', $text );
$text = str_replace('%CE%98', '%19', $text ); // Θ
$text = str_replace('%CE%99', 'I', $text );
$text = str_replace('%CE%8A', 'I', $text );
$text = str_replace('%CE%AA', 'I', $text ); // Ϊ
$text = str_replace('%CE%90', 'I', $text );// ΐ
$text = str_replace('%CE%9A', 'K', $text );
9
www.smsbox.gr HTTP API v1.7
$text = str_replace('%CE%9B', '%14', $text ); // Λ
$text = str_replace('%CE%9C', 'M', $text );
$text = str_replace('%CE%9D', 'N', $text );
$text = str_replace('%CE%9E', '%1A', $text );// Ξ
$text = str_replace('%CE%9F', 'O', $text );
$text = str_replace('%CE%8C', 'O', $text ); // Ό
$text = str_replace('%CE%A0', '%16', $text ); // Π
$text = str_replace('%CE%A1', 'P', $text );
$text = str_replace('%CE%A3', '%18', $text ); // Σ
$text = str_replace('%CE%A4', 'T', $text );
$text = str_replace('%CE%A5', 'Y', $text );
$text = str_replace('%CE%8E', 'Y', $text );
$text = str_replace('%CE%AB', 'Y', $text ); // Ϋ
$text = str_replace('%CE%B0', 'Y', $text ); // ΰ
$text = str_replace('%CE%A6', '%12', $text ); // Φ
$text = str_replace('%CE%A7', 'X', $text );
$text = str_replace('%CE%A8', '%17', $text );
$text = str_replace('%CE%A9', '%15', $text ); // Ω
$text = str_replace('%CE%8F', '%15', $text ); // Ώ
$text = str_replace('%E2%82%AC', '%80', $text ); // €
return $text;

Για να στείλουμε sms με ελληνικούς χαρακτήρες, υπάρχει και πιό απλός
τρόπος με τη χρήση της παραμέτρου coding=UTF8 κατά την κλήση*:
$from = urlencode("smsboxt");
$text = urlencode("για να δούμε ένα... παράδειγμα με τον απλό τρόπο");
$fp = fopen('http://www.smsbox.gr/httpapi/sendsms.php?
coding=UTF8&username=xxx&password=xxx&from='.
$from.'&to=306947992777&text='.$text, 'r');
$content = '';
while ($line = fread($fp, 1024)) { $content .= $line;
}
fclose($fp);
*Για να λειτουργήσει σωστά η κλίση με coding=UTF8, θα πρέπει το file
encoding του αρχείου php να είναι UTF-8.

vraxnakisg 18-04-20 03:57

1 Συνημμένο(α)
Καλημέρα σε όλους.

Για δες τώρα.

Ευχαριστώ.

γιώργοςΚ 18-04-20 07:01

2 Συνημμένο(α)
Καλημέρα Γιωργο, ευχαριστω για την προσπαθεια να με βοηθησεις και για τον χρόνο σου,

Δυστυχως ομως δεν επιλυθηκε το θεμα..Παλι λαμβανω ερωτη,ατικα στο κινητο....Εχω δοκιμασει και να διαφοροποιησω τη γραμμη του message=UCase(message) δηλααδη δοκιμασα μηπως και το προβλημα ειναι τα κεφαλαια κλπ, αλλα δυστυχως τα ιδια..

Θα μιλησω και σημερα με τον παροχεα να δω αν ειναι κατι αλλο.. Σε καθε περιπτωση σε ευχαριστω και ευχομαι Καλο Πάσχα σε εσενα και στην οικογένεια σου αλλα και σε όλους τους φίλους του φόρουμ

Tasos 18-04-20 10:45

Καλημέρα και Χρόνια πολλά σε όλους!

Δεν θα χρειαστεί κωδικοποίηση UTF-8 επειδή δεν αποστέλλεται κάποιο περιεχόμενο.

Λαμβάνοντας υπ' όψη ότι τα δεδομένα SMS εμπεριέχονται στη διεύθυνση (URL) και ότι ο διακομιστής SMS δεν μπορεί να τα διαχειριστεί τους χαρακτήρες Unicode ως απλό κείμενο , αυτό που πρέπει να γίνει είναι η κωδικοποίηση (Percent-decoding) των τμημάτων "title" και "message" ώστε να υπάρξει συμβατότητα στην αποκωδικοποίηση.


Προτείνω τα εξής:

Προσθήκη αναφορών :Microsoft Object HTML Library και Microsoft WinHTTP Services, Version x,x

Προσθήκη του παρακάτω κώδικα σε μια φόρμα:

Κώδικας:

Option Explicit
Option Compare Database

Private Function EncodeURL(strText As Variant)
    Dim oDoc As New HTMLDocument
    With oDoc.parentWindow
        .execScript "function encode(s) {return encodeURIComponent(s)}", "jscript"
        EncodeURL = .encode(strText)
    End With
    Set oDoc = Nothing
End Function

Public Function SendSMS(strUrl As String) As String
    Dim oweb As New WinHttp.WinHttpRequest
    oweb.Open "POST", strUrl, False
    oweb.send
    SendSMS = oweb.responseText
    Set oweb = Nothing
End Function

Private Sub BtnSendSMS_Click()
    Dim usr As String
    Dim psw As String
    Dim mobnu As String
    Dim title As String
    Dim message As String
    Dim strResult As String

    usr = "email@email.com"
    psw = "7fhd8y8erwe"
    mobnu = "35799999999"
    title = "Amlex"
    message = "Κάτι γραμμένο στα ελληνικά για δοκιμή"
   
    strResult = SendSMS( _
            "http://api.microsms.net/sendapidirect.asp?usr=" _
            & usr & "&psw=" & psw & "&dtype=1&title=" & EncodeURL(title) & _
            "&mobnu=" & mobnu & "&message=" & EncodeURL(message))
            MsgBox strResult, vbInformation, "SMS Result"
End Sub

Καλή συνέχεια και καλή Ανάσταση!

Τάσος

vraxnakisg 18-04-20 11:19

Καλήμερα σας,

Τάσο είσαι άψογος και πάντα σαφέστατος.

Καλή Ανάσταση σε όλους με υγειά και ευτυχία.

Ευχαριστώ.


Η ώρα είναι 06:13.

Ms-Office.gr - ©2000 - 2025, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2