Get Started with Call Forwarding Using Python

    Overview

    You can use call forwarding to dynamically route incoming calls to available agents, extensions, or departments that cater to callers’ needs.

    Start by signing up for a free trial account that you can use to experiment with and learn about our services. The free trial account comes with free credits, and you can add more as you go along. You can also add a phone number to your account to start testing the full range of our voice and SMS features. A page in our support portal walks you through the signup process.

    You can start making and receiving calls either by using our PHLO visual workflow builder or our APIs and XML documents. Follow the instructions in one of the tabs below.

    You can create and deploy a workflow to implement a call forwarding use case with a few clicks on the PHLO canvas.

    Prerequisites

    1. Create a Plivo account if you don’t have one already. Sign up with your work email address.
    2. Buy a Plivo number: You must have a voice-enabled Plivo phone number to receive incoming calls. You can purchase numbers from the Numbers page of the Plivo console, or by using the Numbers API.
    3. PHLO application: When you receive a call on a Plivo voice-enabled number, you can control the call flow by associating a PHLO application with that Plivo phone number. Plivo will fetch the PHLO associated with the number and expect valid instructions via PHLO to handle the call.

    Create the PHLO

    • On the left navigation bar, click PHLO. The PHLO page will appear and display your existing PHLOs, if any. If this is your first PHLO, then the PHLO page will be empty.
    • Click CREATE NEW PHLO to build a new PHLO.
    • On the Choose your use case window, click Build my own. The PHLO canvas will appear, displaying the Start node, which is the starting point of any PHLO. You can choose between three available trigger states to start the PHLO: Incoming Message, Incoming Call, and API Request. For this PHLO, choose Incoming Call.
    • From the list of components on the left side, drag and drop the Call Forward component onto the canvas to add a Call Forward node to the canvas.
    • Connect the Start node with the Call Forward node by dragging down from the Incoming Call trigger state.

    • Configure the Call Forward node to select the From number using a variable. Enter all the numbers you want to call in the To field, separated with commas.
    • Once you’ve configured a node, click Validate to save the configuration.
    • If this PHLO had more nodes you could configure them now. After you complete all the configurations, click Save.

    Your complete PHLO will look like this:

    Call Forwarding

    Assign the PHLO to a Plivo number for incoming calls

    Once you’ve created and configured your PHLO, assign your PHLO to a Plivo number.

    1. Go to the Numbers page of the Plivo console.
    2. Under Your Numbers, click the phone number you want to use for the PHLO.
    3. In the Number Configuration section, under Application Type, select PHLO from the drop-down list.
    4. From the PHLO Name drop-down, select the PHLO you want to use with the phone number, then click Update Number.

    Assign PHLO to a Plivo Number

    Test and validate

    To test that the PHLO is working, call your Plivo phone number to see how the inbound call is forwarded.

    For more information about creating a PHLO app, see the PHLO User Guide. For information on components and their variables, see the PHLO Components Library.

    Here‘s how to use Plivo XML to forward calls.

    How it works

    Call Forward Call Flow

    Plivo requests an answer URL when the call is answered (step 4) and expects the file at that address to hold a valid XML response from the application with instructions on how to handle the call. In this example, when an incoming call is received, Plivo forwards the call using the Dial XML element.

    Prerequisites

    To get started, you need a Plivo account — sign up with your work email address if you don’t have one already. You must have a voice-enabled Plivo phone number to receive incoming calls; you can rent numbers from the Numbers page of the Plivo console, or by using the Numbers API. If this is your first time using Plivo APIs, follow our instructions to set up a Python development environment and a web server and safely expose that server to the internet.

    Create a Flask server to forward incoming calls

    Create a file called forward_call.py and paste into it this code.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    from flask import Flask, request, make_response, Response
    from plivo import plivoxml
    
    app = Flask(__name__)
    
    @app.route('/forward_call/', methods=['GET', 'POST'])
    def forwardcall():
    
        response = plivoxml.ResponseElement()
        response.add(
            plivoxml.DialElement().add(
                plivoxml.NumberElement('<destination_number>'))) // call wll be forwarded to this number
        return(response.to_string())
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', debug=True)
    

    Replace the destination number placeholder with an actual phone number (for example, 12025551234).

    Save the file and run it.

    $ python forward_call.py
    

    Create a Plivo application to forward calls

    Associate the Python application you created with Plivo by creating a Plivo application. Visit Voice > Applications in the Plivo console and click on Add New Application, or use Plivo’s Application API.

    Give your application a name — we called ours Forward Call. Enter the server URL you want to use (for example https://<yourdomain>.com/forward_call/) in the Answer URL field and set the method to POST. Click Create Application to save your application.

    Assign a Plivo number to your application

    Navigate to the Numbers page and select the phone number you want to use for this application.

    From the Application Type drop-down, select XML Application.

    From the Plivo Application drop-down, select Forward Call (the name we gave the application).

    Click Update Number to save.

    Assign call forward application

    Test

    Make a call to your Plivo number using any phone. Plivo will send a request to the answer URL you provided requesting an XML response and then forward the call according to the instructions in the XML document the server provides.

    Common use cases for call forwarding

    Call forwarding plays a pivotal role in routing customers’ calls based on any of several possible factors.

    • Agent availability: You can place calls in a holding queue and route them to an available agent as soon as one is available.
    • Business hours-based forward: You can route calls to an office number during business hours and to a mobile phone or voicemail during non-business hours.
    • Time zone-based forward: You can forward calls to agents from different time zones to ensure round-the-clock availability.