Back

Step by Step Guide to Building a SimpleTexting API Integration in Ruby

Aug 14, 20246 minute read

Hey there, fellow Ruby enthusiast! Ready to add some texting superpowers to your app? Let's dive into building a SimpleTexting API integration that'll have you sending SMS messages like a pro in no time.

Introduction

SimpleTexting's API is a nifty tool that lets you programmatically send and manage SMS messages. We're going to harness this power in our Ruby app, giving it the ability to reach out and touch someone's phone (figuratively, of course).

Prerequisites

Before we jump in, make sure you've got:

  • Ruby 2.7+ installed (because we're not savages)
  • A SimpleTexting API key (grab one from your account dashboard)
  • A burning desire to send texts programmatically (optional, but recommended)

Setting Up the Project

First things first, let's create a new Ruby file and install the gems we'll need:

touch simple_texting_integration.rb gem install httparty json

We're using HTTParty because, let's face it, nobody wants to deal with Net::HTTP directly.

Configuring the API Client

Now, let's set up our API client. Open simple_texting_integration.rb and add this code:

require 'httparty' require 'json' class SimpleTextingClient include HTTParty base_uri 'https://api.simpletexting.com/v2' def initialize(api_key) @options = { headers: { 'Authorization' => "Bearer #{api_key}" } } end # We'll add more methods here soon! end

Implementing Core Functionality

Let's add some methods to send SMS messages and manage contacts:

class SimpleTextingClient # ... previous code ... def send_sms(phone_number, message) post('/messages', body: { phoneNumber: phone_number, text: message }.to_json) end def get_message_status(message_id) get("/messages/#{message_id}") end def add_contact(phone_number, list_id) post('/contacts', body: { phoneNumber: phone_number, listIds: [list_id] }.to_json) end private def get(path) self.class.get(path, @options) end def post(path, body) self.class.post(path, @options.merge(body: body)) end end

Error Handling and Best Practices

Always expect the unexpected. Let's add some error handling:

def handle_response(response) case response.code when 200..299 JSON.parse(response.body) when 429 raise "Rate limit exceeded. Try again in #{response.headers['Retry-After']} seconds." else raise "API error: #{response.code} - #{response.message}" end end

Don't forget to wrap your API calls with this method!

Testing the Integration

Time to take our creation for a spin:

client = SimpleTextingClient.new('your_api_key_here') # Send a message response = client.send_sms('1234567890', 'Hello from Ruby!') message_id = handle_response(response)['id'] # Check message status status = handle_response(client.get_message_status(message_id)) puts "Message status: #{status['status']}" # Add a contact list_id = 'your_list_id_here' handle_response(client.add_contact('1234567890', list_id))

Advanced Features

Feeling adventurous? Try implementing scheduled messages or webhook handling. I'll leave that as a fun exercise for you (because I'm nice like that).

Conclusion

And there you have it! You've just built a SimpleTexting API integration in Ruby. You're now armed with the power to send SMS messages, manage contacts, and generally be a texting wizard.

Remember, with great power comes great responsibility. Use your newfound SMS capabilities wisely, and may your messages always be delivered on time and error-free!

Sample Code Repository

For the complete code and some extra goodies, check out this GitHub repo: SimpleTexting Ruby Integration.

Now go forth and text, you magnificent Ruby developer!