#include-once
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.12.0
UDF Version: 1.1 Beta
Author: alex33
thanks Garrett
функция _SMS_Status не работает. Я её не доделал...
Script Function:
UDF for alfa-sms.ru.
#ce ----------------------------------------------------------------------------
#include <Array.au3>
Global $oError, $oHTTP, $oSC
Global $sUserAgent = 'Mozilla/5.0 (Windows NT 6.1; rv:27.0) Gecko/20100101 Firefox/27.0'
Global $GetAllResponseHeaders, $Status, $StatusText, $sHTML
Global $SMS_URL = "http://smpp.alfa-sms.ru:8080/smw/aisms"
Global $aSendErrorsText[0], $aSendResults[0], $aStatusResults[0][0]
Func _SMS_Send($user = "", $pass = "", $message = "", $target = "", $sender = "NULL")
__CreateNewObjects()
Local $send_dt = StringFormat("%s%s%s%s%s%s%s", @YEAR, @MON, @MDAY, @HOUR, @MIN, @SEC, "016+")
Local $sSendStr = ""
Local $oNodes
$user = __encodeURIComponent($user)
$pass = __encodeURIComponent($pass)
$message = __encodeURIComponent($message)
$target = __encodeURIComponent($target)
$sender = __encodeURIComponent($sender)
$send_dt = __encodeURIComponent($send_dt)
$sSendStr = StringFormat("action=post_sms&user=%s&pass=%s&message=%s&target=%s&sender=%s&send_dt=%s", $user, $pass, $message, $target, $sender, $send_dt)
ConsoleWrite($sSendStr&@CRLF)
__MakeDefaultRequest("POST", $SMS_URL, $sSendStr)
$sHTML = $oHTTP.responseXML
$sHTML.setProperty('SelectionLanguage', 'XPath')
$sNodes = $sHTML.selectNodes('/output/errors/error')
If IsObj($sNodes) Then
For $oNode In $sNodes
_ArrayAdd($aSendErrorsText, String($oNode.text))
Next
EndIf
;_ArrayDisplay($aSendErrorsText)
$sNodes = $sHTML.selectNodes('/output/result/sms')
If IsObj($sNodes) Then
For $oNode In $sNodes
_ArrayAdd($aSendResults, String($oNode.getAttribute('id')))
Next
EndIf
SetExtended(UBound($aSendErrorsText))
If UBound($aSendResults) < 1 Then Return SetError(-2)
;_ArrayDisplay($aSendResults)
;~ Return 1
Return $aSendResults
EndFunc
Func _SMS_Status($user = "", $pass = "", $sms_id = 0)
__CreateNewObjects()
Local $sSendStr = ""
Local $oNodes
$user = __encodeURIComponent($user)
$pass = __encodeURIComponent($pass)
$sms_id = __encodeURIComponent($sms_id)
$sSendStr = StringFormat("action=status&user=%s&pass=%s&sms_id=%s", $user, $pass, $sms_id)
ConsoleWrite($sSendStr&@CRLF)
__MakeDefaultRequest("POST", $SMS_URL, $sSendStr)
$sHTML = $oHTTP.responseXML
$sHTML.setProperty('SelectionLanguage', 'XPath')
$sNodes = $sHTML.selectNodes('/output/MESSAGES/MESSAGE')
;If IsObj($sNodes) Then
For $oNode In $sNodes
If Not IsObj($oNode.selectNodes('SMSSTC_CODE')) Or Not IsObj($oNode.selectNodes('SMS_SENT')) Then ContinueLoop
If $oNode.getAttribute('SMS_ID') <> $sms_id Then ContinueLoop
_ArrayAdd($aStatusResults, $oNodes.selectNodes('SMSSTC_CODE').item(0).text, 0)
_ArrayAdd($aStatusResults, $oNode.selectNodes('SMS_SENT').item(0).text, 1)
Next
;EndIf
If UBound($aStatusResults) < 1 Then Return SetError(-2)
;_ArrayDisplay($aStatusResults)
;~ Return 1
Return $aStatusResults
EndFunc
Func __CreateNewObjects()
$oError = 0
$oHTTP = 0
$oSC = 0
$sHTML = 0
$oNodes = 0
$oHTTP = ObjCreate("MSXML2.XMLHTTP")
$oSC = ObjCreate("ScriptControl")
If Not IsObj($oHTTP) Or Not IsObj($oSC) Then
Return SetError(1, 0, 0)
EndIf
$oSC.Language = "JavaScript"
Return 1
EndFunc
Func __SMS_ErrorFunc()
ConsoleWrite('COM Error' & @TAB & $oError.description&@CRLF)
EndFunc ;==>__SMS_ErrorFunc
Func __encodeURIComponent($sTxt1)
If Not IsObj($oSC) Then __CreateNewObjects()
$sTxt1 = SpecialEncode($sTxt1)
Return StringReplace($oSC.Eval('encodeURIComponent("' & $sTxt1 & '");'), "%20", "+")
EndFunc ;==>__encodeURIComponent
Func __decodeURIComponent($sTxt2)
If Not IsObj($oSC) Then __CreateNewObjects()
$sTxt2 = SpecialEncode($sTxt2)
Return StringReplace($oSC.Eval('decodeURIComponent("' & $sTxt2 & '");'), "+", "%20")
EndFunc ;==>__decodeURIComponent
Func SpecialEncode($sTxt3)
$sTxt3 = StringReplace($sTxt3, '\', '\\')
$sTxt3 = StringReplace($sTxt3, @TAB, '\t"')
$sTxt3 = StringReplace($sTxt3, @CRLF, '\r\n"')
$sTxt3 = StringReplace($sTxt3, @CR, '\r"')
$sTxt3 = StringReplace($sTxt3, @LF, '\n"')
$sTxt3 = StringReplace($sTxt3, '"', '\"')
Return $sTxt3
EndFunc ;==>SpecialEncode
Func __MakeDefaultRequest($_method = "GET", $_url = "", $_str = "")
If Not IsObj($oSC) Then __CreateNewObjects()
$oError = ObjEvent('AutoIt.Error', 'ErrorFunc')
$oHTTP.Open($_method, $_url, False, '', '')
If $_method = "POST" Then $oHTTP.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
$oHTTP.SetRequestHeader('User-Agent', $sUserAgent)
$oHTTP.SetRequestHeader('Cache-Controle', 'no-cach')
$oHTTP.SetRequestHeader('Accept', 'text/xml,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
$oHTTP.SetRequestHeader('Accept-Language', 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3')
;$oHTTP.SetRequestHeader('Accept-Encoding', 'gzip, deflate');
;$oHTTP.SetRequestHeader('Connection', 'keep-alive');
$oHTTP.Send($_str)
$Status = $oHTTP.Status
$StatusText = $oHTTP.StatusText
$GetAllResponseHeaders = $oHTTP.GetAllResponseHeaders()
$oError = 0
EndFunc