ratatxt

module
v0.0.0-...-91e7bcc Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 27, 2022 License: MIT

README

Ratatxt

Enable SMS API on android devices.

Overview

Simple service that enables android devices to be use as SMS API to send and receive SMS. Uses MQTT(Message Queuing Telemetry Transport) to send command to devices and keeps connection from the server.

DO NOT USE IN PRODUCTION. MQTT broker is insecure and android client is unstable but you can use it for fun.

Features

  • Send and receive SMS
  • Deployable on local and cloud server

Requirements

  • Local or cloud server with Docker
  • Android device (Nougat 7.1 and below)

Setup

1. Run and install server using docker
docker run -p 8080:8080 -p 7100:7100 -p 1883:1883 kudarap/ratatxt

If you are running the server on cloud, open up the ports on public network.

2. Download and install android app

Warning: Only tested the app on Android Nougat 7.1

  • Download debug APK from https://github.com/kudarap/ratatxt-app and install to device.
  • Login your credentials on the app.
  • Select a device available.
  • Start receiver service to receive messages.
  • Start sender service to send messages.

Usage

Authentication
# sample authenticated request, replace the token with your own.
curl http://localhost:7100/devices -u 'ak_2ee7d151d5eb6c7bcbd35ec7f47a3bb8c1b61fc9:' 
Send message
curl http://localhost:7100/outbox \
    -u 'ak_2ee7d151d5eb6c7bcbd35ec7f47a3bb8c1b61fc9:' \
    -X POST -d '{
        "device_id": "c2g185v0eqtq26rmcnj0",
        "address": "09123456789",
        "text": "hello world"
    }'
Receive message

Go to console http://localhost:8080/webhooks and create a webhook. This will receive a POST request with the message payload.

Sample webhook payload:

{
  "webhook_id": "c2jtmu2h30sl6f6f83c0",
  "payload_url": "https://yourserver.com/webhooks-test",
  "secret": "mysecret123",
  "message": {
    "id": "c2mik6ih30sjldehe1p0",
    "user_id": "c2en1nv0eqtopabpvcrg",
    "device_id": "c2fslnn0eqtq26rmcn2g",
    "kind": 10,
    "status": 110,
    "address": "09123456789",
    "text": "hello world",
    "timestamp": 1621091609,
    "retry_count": 0,
    "created_at": "2021-05-26T00:47:22.067722715+08:00",
    "updated_at": "2021-05-26T00:47:22.067722715+08:00",
    "device": {
      "id": "c2fslnn0eqtq26rmcn2g",
      "user_id": "c2en1nv0eqtopabpvcrg",
      "name": "My device",
      "address": "09000000001",
      "status": 20,
      "last_active": null,
      "created_at": "2021-05-15T13:21:34.051937862Z",
      "updated_at": "2021-05-15T13:21:34.051937862Z"
    }
  }
}
Send pin code

This sample application that generates code with expiration and send to destination address.

# request
curl http://localhost:7100/smsguard \
    -u 'ak_2ee7d151d5eb6c7bcbd35ec7f47a3bb8c1b61fc9:' \
    -X POST -d '{
        "device_id": "c2g185v0eqtq26rmcnj0",
        "address": "09123456789",
        "duration_min": 5
    }'

# response
{
    "code": "XJE1K",
    "expiration": "2021-05-26T01:17:16.22595439+08:00"
}

To check the validity of the code.

# request
curl http://localhost:7100/smsguard/XJE1K \
  -u 'ak_2ee7d151d5eb6c7bcbd35ec7f47a3bb8c1b61fc9:' 
  
# response
{
    "is_valid": true
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL