Emacs Lisp: kdeconnect-sms-send or sending SMS straight from Emacs
kdeconnect is great program to connect various mobile devices and computers. It works well between mobile devices as well. Emacs as text editor functions as advanced programmable framework that allows users to do just anything with programming language Emacs Lisp allows. Example is that Emacs could be converted into SMS gateway for marketing purposes. Only the concepts are described here.
There are several ways how one can send SMS from computer to running and connected Replicant or LineageOS or Android or other similar devices. There are other mobile operating system that are free software and they may have different options to send SMS programmatically.
I am here presenting few solutions that I am using with success since quite a lot of time.
by using the Termux and Termux::API application version 0.31 as anything after that version is not working for reason that Termux developers submitted to Google terms for play store, and not to freedom, and disabled the functions for sending SMS after the version 0.31. The version 0.31 is still available in F-Droid archives and for purposes of SMS marketing it represents invaluable tool. Problem with this solution is that update to Termux::API has to be cancelled each time it arrives by F-Drodi, or otherwise the whole system would break.
other application is ShellMS, for which several examples are provided here below.
the third application is kdeconnect that may be more consistent with future updated, on the other hand does not give good error reporting. As long as device is connected and SMS credits are available, the application kdeconnect will do its job. The application is available on F-Droid on following link: https://f-droid.org/en/packages/org.kde.kdeconnect_tp
;;; Mixture of these functions only show that
;;; I am not yet clear if I should quote Android
;;; shell commands with double quotes or single quotes.
defun termux/escape-double-quotes (s)
("Escapes double quotes"
"\"" "\\\\\"" s))
(replace-regexp-in-string
defun termux/escape-quotes (s)
("Escapes double and single quotes"
let* ((s (termux/escape-double-quotes s)))
(;;(s (termux/escape-single-quotes s)))
s))
defun termux/send-command (command)
("Sends command to connected Replicant device and returns the output string"
let* ((command (concat termux-ssh-command " -p " termux-ssh-port " " termux-ip " \"" command "\""))
(
(output (shell-command-to-string command))string-trim output)))
(output (
output))
;;; The below example shows how ShellMS application may be used to send SMS
;;; by using Replicant or Android or LineageOS or similar mobile operating systems
defun termux-sms-send (number text)
("Send SMS message by using ShellMS application"
let* ((text (termux/escape-quotes text))
(format "am startservice --user 0 -n com.android.shellms/.sendSMS -e contact %s -e msg \\\"%s\\\"" number text)))
(command ( (termux/send-command command)))
In some countries like Uganda, or Tanzania, Kenya, people are using different numbers, sometimes two or three numbers, as expenses to call somebody on other network may be high. So people use the network of the call or SMS receiver. Emacs Lisp could then decide which prefixes belong to which network and then could choose the device appropriate to send the SMS. That would save the money and easier bond with the clients who will not feel pressure to contact the initiator on the other network.
By using these principles of connecting various devices to computer, one could understand that such could be used for SMS or Gateway purposes. Emacs Lisp is not the only example, just any programming language could be used to send SMS to connected Replicant, or Android or LineageOS devices.
In my personal case, all CRM or Customer Relationship data is held and managed through Emacs and Emacs Lisp functions, rather than through a browser or browser based software. That allows me to make quick decisions or to inform clients, partners, family by using SMS, or by initiating calls through Termux functions. At my side every SMS is saved and later I may retrieve them for review of the conversation with the person.
SMS received and sent on mobile device is exported and then imported into my database for management of customers’ relations, which is named Central Files.
There exists the Emacs Lisp package kdeconnect in ELPA, but I have not used it, and I think that functions are defunct, it can be easily improved.
defun kdeconnect-sms-send (number text)
("Send SMS message by using KDEConnect application"
let* ((text (string-utils-escape-double-quotes text))
("c47e5d958b455603") ;; Moto E
(device "73fc592ea61a3a70") ;; Archos 101
(device format "kdeconnect-cli -d %s --send-sms \"%s\" --destination \"%s\"" device text number)))
(command (
(message command) (shell-command command)))
Emacs Lisp is quite capable to serve as SMS gateway. Just imagine people entering SMS over Internet or over various other devices, such SMS being saved on server temporarily, in the queue, and Emacs Lisp computers fetching SMS and forwarding it to various numbers. Through my SMS marketing activities, I have helped my client in 2008 to earn more than 500,000 euro.
Leave Your Comment or Contact GNU.Support
Contact GNU.Support now. There is a simple rule at GNU.Support: if we can help you, we do, whenever and wherever necessary, and it's the way we've been doing business since 2002, and the only way we know