UBports Robot Logo UBports Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    Execute a command when an SMS is received?

    Scheduled Pinned Locked Moved OS
    10 Posts 4 Posters 1.6k Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
      Reply
      • Reply as topic
      Log in to reply
      This topic has been deleted. Only users with topic management privileges can see it.
      • Q Offline
        Quaigon_Jim
        last edited by

        I'd like to send a notification to my desktop and laptop when I receive a text message. Is this possible?

        Or more properly: what happens in the OS when an SMS is received and where would I find more information about this?

        Thanks

        1 Reply Last reply Reply Quote 0
        • dobeyD Offline
          dobey
          last edited by

          Currently, no, it is not possible. Someone had started looking at implementing support for KDE Connect, but I'm not sure how far they got.

          1 Reply Last reply Reply Quote 0
          • G Offline
            guru
            last edited by

            Something which comes into my thinking: the SMS is stored into a table on a sqllite database and if this allows triggers to fire...

            Q 1 Reply Last reply Reply Quote 2
            • Q Offline
              Quaigon_Jim @guru
              last edited by Quaigon_Jim

              @guru Thanks, I managed to hack something together, but had to install inotify-tools:

              #!/bin/bash
              
              # location of databse storing text messages (table is "text_events")
              DB="/home/phablet/.local/share/history-service/history.sqlite"
              
              # location of scripts to run when a text is received
              SCRIPTDIR="/home/phablet/bin/text.d"
              
              function check {
              
              # current time in seconds since epoch
              CURRENTTIME=$(date +%s)
              
              # get senderid (phone number) and timestamp from most recent entry in text_events table of $DB at time of modification
              SENDERID=$(sqlite3 $DB "SELECT senderid FROM text_events ORDER BY timestamp DESC LIMIT 1;")
              
              # timestamp converted to seconds since epoch
              TIMESTAMP=$(date -d$(sqlite3 $DB "SELECT timestamp FROM text_events ORDER BY timestamp DESC LIMIT 1;") +%s)
              
              # calculate difference between when text was received and $CURRENTTIME
              DIFFERENCE=$(expr $CURRENTTIME - $TIMESTAMP)
              
              if [ $DIFFERENCE -lt 2 ] && [ $SENDERID != "self" ]
              then
              # run all scripts in #SCRIPTDIR
                      run-parts $SCRIPTDIR
              else
                      :
              fi
              }
              
              # monitor $DB for changes and execute the above function if it is modified
              while inotifywait -e modify $DB; do check; done
              
              

              There are probably much better ways of going about this but it works for now 🙂

              Any pointers appreciated.

              EDIT: Terrible code updated a bit

              G 1 Reply Last reply Reply Quote 0
              • G Offline
                guru @Quaigon_Jim
                last edited by

                Check if sqllite supports triggers. If so you could attach a trigger to any table XYZ and any INSERT into that table will fire your own written piece of software.

                Q 1 Reply Last reply Reply Quote 1
                • AlainW94A Offline
                  AlainW94
                  last edited by

                  You could also monitor the system dbus, sms appears in clear text on it.

                  Sorry I can't copy paste from terminal , maybe a bug.

                  sudo dbus-monitor --system "type='signal', interface='org.ofono.MessageManager'"
                  

                  Meizu Pro 5, Meizu Pro 5, Meizu Pro 5, Meizu Pro 5 (Yes I have 4 of them)
                  Never forget that they are much more ideas inside two heads than in one...

                  G Q 2 Replies Last reply Reply Quote 1
                  • Q Offline
                    Quaigon_Jim @guru
                    last edited by Quaigon_Jim

                    @guru

                    Looks like triggers are supported but only UPDATE/INSERT/DELETE/SELECT are allowed in the trigger body (trying to use .shell gives a syntax error).

                    Relevant Stackoverflow thread

                    Close but no cigar 😕

                    1 Reply Last reply Reply Quote 0
                    • G Offline
                      guru @AlainW94
                      last edited by

                      Thanks, this is really cool. I did a test sending Testing dbus to my UBphone:

                      $ sudo dbus-monitor --system "type='signal', interface='org.ofono.MessageManager'"
                      [sudo] password for phablet: 
                      ...
                         string "Testing dbus"
                         array [
                            dict entry(
                               string "LocalSentTime"
                               variant             string "2020-01-12T20:26:33+0100"
                            )
                            dict entry(
                               string "SentTime"
                               variant             string "2020-01-12T20:26:33+0100"
                            )
                            dict entry(
                               string "Sender"
                               variant             string "+49170xxxxxxxx"
                            )
                         ]
                      ^C
                      
                      1 Reply Last reply Reply Quote 1
                      • Q Offline
                        Quaigon_Jim @AlainW94
                        last edited by

                        @AlainW94 Thanks, this looks promising.

                        1 Reply Last reply Reply Quote 0
                        • AlainW94A Offline
                          AlainW94
                          last edited by

                          Happy to help ! 👍

                          Meizu Pro 5, Meizu Pro 5, Meizu Pro 5, Meizu Pro 5 (Yes I have 4 of them)
                          Never forget that they are much more ideas inside two heads than in one...

                          1 Reply Last reply Reply Quote 1

                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                          With your input, this post could be even better 💗

                          Register Login
                          • First post
                            Last post