Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 39 additions & 18 deletions ros_scripts/sendSMS.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
:global sendSMS do={
:global sendSMSHlink do={
# Send SMS messages via Huawei LTE modem API (tested with E3372)
# global vars:
# lteIP - lte modem ip address (api)
# phone - sms destination phone number
# sms - sms text message
# modemModel - HUAWEI-E3372 or MTC-827F or HUAWEI-E3372H
# usage example
# :global sendSMS
# :put [$sendSMS lteIP="192.168.8.1" phone="+35912345678" sms="test sms via lte api"]
# :global sendSMSHlink
# :put [$sendSMSHlink lteIP="192.168.8.1" phone="+35912345678" sms="test sms via lte api" modemModel="MTC-827F"]
#

:local getBetween do={
Expand Down Expand Up @@ -36,22 +37,42 @@
:return $result;
}

# get SessionID and Token via LTE modem API
:local urlSesTokInfo "http://$lteIP/api/webserver/SesTokInfo";
:local api [/tool fetch $urlSesTokInfo output=user as-value];
:local apiData ($api->"data");
:local apiHead "";

# pars SessionID and Token from API session data
:local apiSessionID [$getBetween inputString=$apiData betweenStart="<SesInfo>" betweenEnd="</SesInfo>"];
:local apiToken [$getBetween inputString=$apiData betweenStart="<TokInfo>" betweenEnd="</TokInfo>"];
:if ($modemModel = "MTC-827F" or $modemModel = "HUAWEI-E3372H") do={
# get SessionID and Token via LTE modem API
:local urlTokInfo "http://$lteIP/api/webserver/token";
:local api [/tool fetch $urlTokInfo output=user as-value];
:local apiData ($api->"data");

# header and data config
:local apiHead "Content-Type:application/x-www-form-urlencoded,Cookie: $apiSessionID,__RequestVerificationToken:$apiToken";
:local sendData "<?xml version=\"1.0\" encoding=\"UTF-8\"?><request><Index>-1</Index><Phones><Phone>$phone</Phone></Phones><Sca></Sca><Content>$sms</Content><Length>-1</Length><Reserved>1</Reserved><Date>-1</Date></request>";
# pars Token from API session data
:local apiToken [$getBetween inputString=$apiData betweenStart="<token>" betweenEnd="</token>"];

# send SMS via LTE modem API with fetch
/tool fetch http-method=post output=user \
http-header-field=$apiHead \
url="http://$lteIP/api/sms/send-sms" \
http-data=$sendData;
# header and data config
:set apiHead "Content-Type:application/x-www-form-urlencoded,__RequestVerificationToken:$apiToken";

} else={
:if ($modemModel = "HUAWEI-E3372") do={
# get SessionID and Token via LTE modem API
:local urlSesTokInfo "http://$lteIP/api/webserver/SesTokInfo";
:local api [/tool fetch $urlSesTokInfo output=user as-value];
:local apiData ($api->"data");

# pars SessionID and Token from API session data
:local apiSessionID [$getBetween inputString=$apiData betweenStart="<SesInfo>" betweenEnd="</SesInfo>"];
:local apiToken [$getBetween inputString=$apiData betweenStart="<TokInfo>" betweenEnd="</TokInfo>"];

# header and data config
:set apiHead "Content-Type:application/x-www-form-urlencoded,Cookie: $apiSessionID,__RequestVerificationToken:$apiToken";
}
}

:if ([:len $apiHead] >0) do={
:local sendData "<?xml version=\"1.0\" encoding=\"UTF-8\"?><request><Index>-1</Index><Phones><Phone>$phone</Phone></Phones><Sca></Sca><Content>$sms</Content><Length>-1</Length><Reserved>1</Reserved><Date>-1</Date></request>";

# send SMS via LTE modem API with fetch
/tool fetch http-method=post output=user http-header-field=$apiHead url="http://$lteIP/api/sms/send-sms" http-data=$sendData;
} else={
:put "wrong model modem, only: HUAWEI-E3372, MTC-827F, HUAWEI-E3372H";
}
}