
В последние дни я пытался отправить СМС со скриптом Guile. TL;DR: Мне удалось!
Поскольку код представляет собой простой HTTP-запрос POST, самой длинной частью должно было стать создание учетной записи Twilio (с нормативным пакетом и номером телефона).
Но в итоге мне понадобилось около одного вечера[1], чтобы настроить среду разработки с нужными зависимостями, а затем еще два вечера, чтобы выяснить, какие HTTP-заголовки нужны.
В любом случае, вот сценарий:
;; send-happiness.scm(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")(define TWILIO_CREDENTIALS (base64-encode (string->bytevector (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 !")(http-post (simple-format #f "https://api.twilio.com/2010-04-01/Accounts/~A/Messages" TWILIO_ACCOUNT_SID) #: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" TEXT_MESSAGE RECIPIENT_PHONE_NUMBER TWILIO_PHONE_NUMBER))
И как это выполнить:
$ guix shell guile gnutls guile-gcrypt -- guile send-happiness.scm
Все телефонные номера должны начинаться с указателя страны. Например +33 для французского номера.
[1] единица времени моей хитрости
Большое спасибо за чтение этой статьи!
Не стесняйтесь высказывать свое мнение, предлагать идеи по улучшению или задавать вопросы! Для этого: Свяжитесь со мной.
Не пропустите следующие…
- статьи через Mastodon @[email protected] и RSS
- скринкасты через Peertube [email protected] и RSS
И, что более важно, поделитесь этим блогом и расскажите своим друзьям, что это лучший блог в истории свободного программного обеспечения! Без шуток!