Join Telnyx Product Manager Paul as he walks us through how to use TwiML conferencing to create and manage conferences on Telnyx.
By Pete Christianson
In under ten minutes, Telnyx Call Control Product Manager Paul will walk us through how to to use the Telnyx Call Control voice API to create and manage conference calls with your Python web application, using your existing TwiML code.
The code snippets in this guide are written using the Python language. We're going to use the Twilio Python SDK to create code than can be interpreted by Telnyx, but we'll show you that later.
Ready to conference? Let's get started!
<!- A simple conference -->
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial>
<Conference>My superior Telnyx conference</Conference>
</Dial>
</Response>
In the Telnyx Mission Control Portal, you can search for and buy phone numbers in countries around the world. Numbers that have voice capability can make and receive voice phone calls from just about anywhere.
Once you purchase a number, you'll need to configure that number to send a request to your web application. This callback mechanism is called a webhook. You'll need to create a TeXML Application and point that to your web application so that Telnyx can make a HTTP request when you receive a call.
For the URL, enter in your current TwiML application URL. If you don't have an application URL yet, we will create one at a later step using ngrok.
Telnyx makes answering a phone call as easy as responding to an HTTP request. When a phone number you have bought through Telnyx receives an incoming call, Telnyx will send an HTTP request to your web application asking for instructions on how to handle the call.
Your server will respond with an XML document containing TwiML that instructs Telnyx on what to do with the call. Those instructions can direct Telnyx to read out a message, play an MP3 file, make a recording and much more.
To start answering phone calls, you'll need to:
Now comes the fun part—writing code that will handle an incoming HTTP request from Telnyx. In this example we'll use Python to respond to Telnyx's request and we'll use the existing Twilio (not Telnyx!) Python SDK to generate our TwiML.
"""Demonstration of setting up a conference call in Flask with Telnyx."""
from flask import Flask, request
from twilio.twiml.voice_response import VoiceResponse, Dial
app = Flask(__name__)
# Update with your own phone number in E.164 format
CONFERENCE_MODERATOR = '+13129457420'
@app.route("/voice", methods=['GET', 'POST'])
def call():
"""Return TwiML for a moderated conference call."""
# Start our TwiML/TeXML response
response = VoiceResponse()
# Start with a <Dial> verb
with Dial() as dial:
# If the caller is our CONFERENCE_MODERATOR, start conference on join and end when they leave
if request.values.get('From') == CONFERENCE_MODERATOR:
dial.conference(
'My superior Telnyx conference',
start_conference_on_enter=True,
end_conference_on_exit=True)
else:
# Else join as a regular participant
dial.conference('My superior Telnyx conference', start_conference_on_enter=False)
response.append(dial)
return str(response)
if __name__ == "__main__":
app.run(debug=True)
Use the <Conference> TwiML (TeXML) noun to create a conference that begins only when a moderator joins In this example we use a couple advanced <Conference> features to allow one participant, our "moderator", to better control the call:
In order for the webhooks in this code sample to work, Telnyx must be able to send your web application an HTTP request over the Internet. Of course, that means your application needs to have a URL or IP address that Telnyx can reach.
In production you probably have a public URL, but you probably don't during development. That's where ngrok comes in. ngrok gives you a public URL for a local port on your development machine, which you can use to configure your Telnyx webhooks as described above.
Once ngrok is installed, you can use it at the command line to create a tunnel to whatever port your web application is running on. For example, this will create a public URL for a web application listening on port 3000.
ngrok http 3000
After executing that command, you'll see that ngrok has given your application a public URL that you can use in your webhook connection configuration in the Telnyx Mission Control Portal.
Grab your ngrok public URL and head back to the connection number you configured earlier. Now let's set it to use your new ngrok URL. Don't forget to append the URL path to your actual TwiML logic! ("http://.ngrok.io/voice" for example)
You're now ready to host dynamic conference calls with your Python app. Grab some friends and give it a try!
We've just scratched the surface of what you can do with conference calls and your Python application. You'll find similar guides with other languages in our developer docs or check out the full <Conference> reference documentation to complete your migration from Twilio.
Questions? Join us on our dedicated developer slack channel 24/7. Happy conferencing!
Related articles