Crafting happiness with Free Software & Hardware

Send an SMS with Guile and Twilio API

Guile Logo

These last days, I tried to send an SMS with a Guile script.
TL;DR: I succeeded!

Since the code is just a simple HTTP POST request, the longest part should have been the creation of the Twilio account (with a Regulatory Bundle and a phone number).

But in the end, it took me about one evening[1] to set up a development environment with the right dependencies, and then two more evenings to figure out which HTTP headers were needed.

Anyway, here is the script:

(use-modules (web client)
             (web http)
             (ice-9 receive)
             (ice-9 iconv)
             (gcrypt base64))

(define TWILIO_ACCOUNT_SID "your-account-sid")
(define TWILIO_ACCOUNT_TOKEN "your-account-token")
(define TWILIO_PHONE_NUMBER "your-twilio-phone-number")

    (simple-format #f "~A:~A" TWILIO_ACCOUNT_SID TWILIO_ACCOUNT_TOKEN) "utf-8"))

(define RECIPIENT_PHONE_NUMBER "a-phone-number")
(define TEXT_MESSAGE "Wish you so much happyness !")

 #:headers `((content-type . (application/x-www-form-urlencoded (charset . "utf-8"))
             (authorization . (basic . ,TWILIO_CREDENTIALS)))
 #:body (simple-format #f "Body=~A&To=~A&From=~A"

And how to execute it :

$ guix shell guile gnutls guile-gcrypt -- guile my-first-app.scm

All phone numbers must start with the country indicator. For example +33 for a French number.

[1] the time unit of my Guile tinkering

Thank you very much for reading this article!

Don't hesitate to give me your opinion, suggest an idea for improvement, or ask a question! To do so : contact me.

Don't miss out on the next ones...

  1. articles via Mastodon and RSS
  2. screencasts via Peertube and RSS

And more importantly, share this blog and tell your friends it's the best blog in the history of Free Software! No kidding!

#fun #guile #english