python sending sms twilio

Sending SMS using Python and Twilio API – Tutorial

Send SMS using Python, we will create a simple GUI to send SMS using Python. We will use the Twilio API to send a message. Twilio is not a free service but they provide a trial account with some credit that we can use to demonstrate how powerful it is.

Python is a famous scripting language and we can write scripts to do whatever we want. Python has rich community support due to which we have a huge number of libraries and APIs available to achieve our tasks. This makes Python a versatile and popular language.

In order to get started, we need to make an account in Twilio. Twilio provides communication APIs for SMS, Audio, Video, and Authentication.

Create a Twilio account

Goto Twilio Registration Page. Complete the registration steps by providing the required details.

After creating an account. Head towards the Twilio Console. You will see a page like the following.

Twilio Console View

As I have already taken the trail number, but you will see a Get a Trail Number button. Click on it, get your number. Then you need to copy 3 pieces of information:

  • Account SID
  • Auth Token
  • Trial Number

Save these somewhere else as we will be using it in our code.

Required Libraries

In order to follow along, you need the following libraries:

  • tkinter module (built-in)
  • twilio library

You can install the Twilio library using pip.

pip install twilio

Or you can add this library to your project using PyCharm.

Create pycharm project

  1. Open PyCharm and create a simple Python project.
  2. Goto Files>Settings or press CTRL+Alt+S
  3. Locate Project:[Your-Project-Name] > Project Interpreter
  4. Click on the + button.
  5. In the search bar, type Twilio and install it.

After adding the library, create a file named app.py

Creating GUI for sending SMS

Now that you have created an account on Twilio. Let’s leverage it. Now, we are going to create a simple Tkinter GUI app to send the message. The widgets we are adding to our GUI are:

  • A label to show as the header.
  • Top Frame and Bottom Frame
  • Widget for entering the receiver number
  • Entry widget to write SMS
  • A button to send SMS

Here is the code.

import tkinter
import tkinter.messagebox
from twilio.rest import Client
class SMSGUI:
    def __init__(self):
        #Create root window
        self.root = tkinter.Tk()
        #Set title of root window
        self.root.title("SMS CLIENT")
        #Create top frame
        self.top_frame = tkinter.Frame(self.root)
        #Create bottom frame
        self.bottom_frame = tkinter.Frame(self.root)
        #Create a label
        self.header = tkinter.Label(self.top_frame, text = "SMS Sending App")
        #Pack the label
        self.header.pack(side = 'top')
        #Label for TO number
        self.to = tkinter.Label(self.top_frame, text = "To: ")
        self.to.pack(side = 'left')
        #Create an entry widget for TO: number
        self.toNumber = tkinter.Entry(self.top_frame, width = 20)
        self.toNumber.pack(side = 'left')
        #Create an entry widget
        self.message = tkinter.Entry(self.bottom_frame, width = 150)
        #Create button
        self.send = tkinter.Button(self.bottom_frame, text = "Send SMS", command = self.sendSms)
        #pack message entry and send button
        self.message.pack(side = 'left')
        self.send.pack(side = 'left')
        #pack frames
        self.top_frame.pack()
        self.bottom_frame.pack()
        tkinter.mainloop()

The above given piece of code will create a simple GUI through which we will send SMS.

Adding event listener (Call Back Function) for button

Now that we have created the GUI for our SMS app. Let’s add code to bring it to life. For this, I am writing a method named sendSms. Add the following method to the class SMSGUI.

    def sendSms(self):
        account_sid = 'your-sid'
        auth_token = 'your-auth-token'
        client = Client(account_sid, auth_token)
        msg = str(self.message.get())
        rec = str(self.toNumber.get())
        message = client.messages.create(body=msg,from_='your-trial-number',to= rec
        )
        print(message.sid)
        tkinter.messagebox.showinfo('Success', 'Message sent successfully')

Replace account_sid with your Twilio’s account_sid. Similarly, replace auth_token with your Twilio’s auth token on line # 2 and 3 respectively.
On Line # 5 and line # 6, we get the text from the entry widgets of the message and recipient number by using the entry widget’s get() method. Then, we are using Twilio’s client module’s method to create message. There are three parameters:

  1. body – which represents the body of the message
  2. to – represents the recipient’s phone number. Make sure you use the “to” number as the same number with which you have registered on Twilio. Otherwise, you can verify the number from console first and then use. This limitation is only for a free account.
  3. from – is the number which Twilio has given to you when you have clicked Get a Trial Number.

Demo

Sending SMS

Here is the SMS I have received.

twilio test python

You can see how easy it is to write scripts with Python. Stay tuned for some interesting scripts.

Here’re some more related Articles:

— Best Python IDE and Code Editors

— Make A Command-line Based Image Re-sizer In Python 3 Using Pillow

— Developing Chat Application in Python with Source Code

Similar Posts