I'm having some trouble building a basic script that sends sms alerts stored on the flichub.
What javascript version is used in this environment for HBACE27-27526
Firmware: 4.2.14
I'm having some trouble building a basic script that sends sms alerts stored on the flichub.
What javascript version is used in this environment for HBACE27-27526
Firmware: 4.2.14
@gregor-vilkner yes! Can you tell me a bit more about your use cases?
@Emil fantastic! the other new sdk features will include twist support? we have lots of use cases where the twist would be dialed to coded manufacturing activities...
@gregor-vilkner we are working on upgrading the JS engine to the newer QuickJS which has ES2023 support. Currently we are doing internal testing and will probably release it in a few months together with other new features to the hub sdk.
@Emil a few "first flic-day" observations on this topic:
we're trying to integrate with a GraphQL api and need to turn all our beautiful queries into one-liners. is there no support for 'let', '``', multi-line text, and text substitutions?
let query = query q1{ heroes(name: ${someName}){ name father{ name } } }
;
is there any async await way of doing web requests without call-back hell? it's like going back to 1998...
no fetch?
no atob(), no jwt decoding
function isTokenExpired(token) {
if(token==null) return true;
const arrayToken = token.split('.');
const part2 = JSON.parse(new TextDecoder().decode(Duktape.dec('base64', arrayToken[1])));
return Math.floor(new Date().getTime() / 1000) >= part2.sub;
}
@flic-16 said in Which javascript version on SDK?:
Buffer.from
is a Node.js specific feature not present in any javascript/ecmascript standard.
You can use Duktape.enc('base64', 'some string')
instead to perform the Base64 encode.
Like this:
const EncodedAuth = Duktape.enc('base64', 'abcd123:Password!');
@Emil said in Which javascript version on SDK?:
old javascript version
Is it possible to have a javascript in this environment send an SMS to the smsburst API?
We have it working in other environments, but this one just doesnt seem to work.
const http = require('http');
// Basic authentication credentials
const encodedAuth = Buffer.from('abcd123:Password123!').toString('base64');
// Setting up the headers for the request
const headers = {
"Authorization": "Basic " + encodedAuth
};
// Message details
const message = encodeURIComponent("IVONNE: Testing from Flic SDK");
const to = encodeURIComponent("+16475551212");
const senderNumber = encodeURIComponent("18335551212");
const repliesToEmail = encodeURIComponent("email@example.com");
// Constructing the URL
const url = "https://api.transmitsms.com/send-sms.json?message=" + message + "&to=" + to + "&from=" + senderNumber + "&replies_to_email=" + repliesToEmail;
// Making the HTTP request
function sendSmsViaTransmitSms() {
console.log("Starting request to SMS Burst API...");
http.makeRequest({
url: url,
method: 'POST',
headers: headers
}, function(error, result) {
if (error) {
console.error("An error occurred during the HTTP request:", error);
} else {
console.log("Received response from SMS Burst API");
console.log("Response status code:", result.statusCode);
console.log("Response headers:", result.headers);
// Check if result.content exists and log it
if (typeof result.content !== 'undefined') {
console.log("Response body:", result.content);
} else {
console.log("Response body not available in this format");
}
}
});
}
// Execute the function to send the SMS
sendSmsViaTransmitSms();
Error is:
TypeError: undefined not callable (property 'from' of [object Function])
at [anon] (duk_js_call.c:2917) internal
at [anon] (root/basicBurstSMSTest/main.js:1)
at require (init.js:131)
at [anon] (init.js:139) preventsyield
at runInit () native strict preventsyield
at handlePacket (pipe_communication.js:48)
at readCallback (pipe_communication.js:93) preventsyield
@flic-16 currently we use https://duktape.org/ which implements a pretty old javascript version. We might upgrade in the future to an engine supporting a more modern javascript version.