Vonage @ RailsConf 2020.2 Couch Edition 🛋️

Hello, Rubyists! We love catching up with you at events, whether in person or remotely, and we've put together some resources that we hope you find useful.

Vonage ❤️ Rails

At Vonage, we love Rails - it's one of our most-loved frameworks by customers and Developer Advocates alike. Start your Vonage project by installing the Vonage nexmo-rails gem. This will install the nexmo Ruby client library gem and automatically configure it:

# Gemfile
gem 'nexmo-rails'
$ bundle install 
$ rails generate nexmo_initializer

You can read more about our Rails gem and what you can do with it on the Vonage blog.

Get started by making a call

Once you've added nexmo-rails to your project, making a call is as easy as adding four lines of code to your application! Just tell us who the call is to, who it's from and how you'd like us to handle it and we'll take care of the rest.

response = Nexmo.voice.create({
  to: [{type: 'phone', number: '14155550100'}],
  from: {type: 'phone', number: '14155550102'},
  ncco: [{"action": "talk", "text": "Hello world!"}]

Start Building For Free

Redeem Vonage Credit

Want to explore building apps with SMS, Voice or Chatbot integrations? Get started today with €10 complimentary credit!

Coupon code RAILS2C86 is valid to redeeem until June 7th, 2020.


Use the Voice API to make and receive phone calls programmatically. You can broadcast messages by phone, respond to incoming calls and route callers according to their input.


With our Messages API (and its accompanying Dispatch API) your applications can reach users by the messaging platform they prefer. Message not received? No problem, automatically detect that and try another platform.


Ensure that users provide the correct contact details with Verify API. The two-factor authentication (2FA) API reduces fraud and improves contactability for your application's users.

Pro-tip: Download the OpenAPI spec from our API reference pages and import directly into Postman as a collection to quickly explore the APIs.

Handy Rails related links and further reading

Can't find what you're looking for?

Please let us know! You can reach out to Ben, our Ruby Developer Advocate. We'd love to hear what you're having issues with to help you out (and improve the docs at the same time!)

Looking for more talks to watch?

Vonage Video Resources

From Betamax to VCR: harden your API integration testing with FOSS

Integration tests with APIs are notoriously difficult. Do you hit production? Do you mock the JSON responses and update them each time your endpoints change? There is a solid solution that can solve these problems in my language of choice: PHP. The Open Source library I found is inspired by another OSS library written in Ruby. In this talk, James Seconde, Senior Developer Advocate at Vonage talks through the library, the power of OSS, and how you can write super-fast API integrations using the power of these tools. Go to video at 2:51:58 to 3:24:16 for Jim's session.

Web Components are awesome! Let's build one

In this workshop, you will learn how to create a Web Component and include it in a framework/library such as React, Vue or Angular. Dwane Hemmings, developer advocate at Vonage will also cover the Web Components for the Vonage Client SDK.

Firebase Workshop

In this session, developer advocate, Amanda Cavallaro will walk through how Firebase enhances the prototyping and implementation of proof of concepts for talks and conferences and Vonage cloud and communication products. Also, developer advocate, Dwane Hemmings will share his experience on how to handle professional projects in Javascript.

Using Vonage Video Express and Video API

In this session, Dwane Hemmings, developer advocate at Vonage will introduce you to the Vonage Video Express and its advantages. We will go over how to set up and get the demo running, then discuss the code and answer any questions you might have.

My Background, Perspective and Insights on Machine Learning

Vonage Developer Advocate, Amanda Cavallaro, talks about her background, how machine learning has influenced the world and how machine learning technologies will impact the world in the next decade or future. She also gives some advice for students who are struggling to find what they want to create in the future.

Faceoff Fun with Python Frameworks: FastAPI vs Flask

“All the cool kids are using FastAPI for API development.” Imagine hearing this just as you start getting more comfortable using other frameworks, like Python’s Django or Flask, to build out your APIs. Folks, there’s a new kid on the block! In this talk, Tonya Sims, Python Developer Advocate at Vonage will do a side-by-side comparison of the two frameworks and analyze the pros and cons of FastAPI and Flask.

Expand your Chatbot Capabilities Using Multi-channel Communications APIs

In this session, we will see how to assign a phone number to a chatbot created using Dialogflow, Google Cloud Platform, Node.js, and the Vonage API integrations. The architecture shown will allow the user to call your agent by phone with a user experience similar to or equal to that possible via the web.

How Firebase Helped Me Land My Dream Job

Learn how the Firebase knowledge (in particular serverless functions) helped Amanda Cavallaro to speed up the prototyping and implementations of proof of concepts for talks and conferences and ease the transition into her new role as a developer advocate in the cloud and communications sector.

Hackathon Night with Code Chrysalis

A special API Hackathon Night, in collaboration with Code Chrysalis, where Amanda Cavallaro, developer advocate at Vonage introduces Vonage APIs and the participants presented their solutions. they've built from scratch in only 4 days.

An Intro to APIs with Python

In this talk, Cory Althoff, developer advocate at Vonage, will give an introduction to APIs with Python and how you can build a simple web app with video streaming.

How I Created a Facebook Developer Community With 50k+ Members

Cory Althoff, developer advocate at Vonage and also the author of The Self-Taught Programmer talks about how he created a Facebook group with over 50K developers. Go to video at 0:44:06 to 1:04:15 for Cory's session.

Building a Songogram using SMS API

In this workshop, you will learn the basics of SMS, including what it is and a brief history. Then, you will learn how to send an SMS message and make a phone call programmatically in Python by building a program that lets you scrape the lyrics to your favorite song and make an automated robocall to your friend reading them.

A Day in a Life of a WFH Pythonista

In this webinar talk show "A Day in Life of a WFH Pythonista", Cory Althoff, Developer Advocate at Vonage and also the author of the book The Self Taught Programmer will be sharing his experience what a typical day looks like as a book author and programmer.

An Introduction to APIs

Learn more about what APIs are, how they’re built, and how to use them. This workshop will happen in JavaScript, but you don’t need to know much to take part.

How complex can a singing competition voting system be?

For over 60 years households across Europe have enjoyed the most weird, wacky, and wonderful singing competitions in the form of Eurovision. In this talk we’ll do a whirlwind tour of the event and focus on how it’s increasingly complex voting system works, and how you can build your own to match it.

Introduction to Low-Code with NodeRED

Developers no longer have the monopoly on making computers do their bidding. The rise of low-code solutions and visual builder tools is empowering a whole generation of new developers to bring their ideas to life with only a little coding knowledge.Far from putting us out of a job, these tools could be useful to us as well! In this session, Julia will introduce you to NodeRED, a JavaScript-based open-source low-code tool. We’ll look at the basics of getting started, the tasks NodeRED is really good at, and how you can extend the NodeRED platform. Go to video from 1:00 to 50:15 for Julia's session.

Everything Counts! Python + IoT + Conectivity #Tech4Good

With all our super powers combined, we can create solutions to have a positive and lasting impact in the open source world. In this talk, we will see how the combination of different disciplines, such as web development, IoT and connectivity, has had and will continue to have a positive impact on people’s lives. We will discuss diabetes monitoring with Flask, expanding to IoT and connectivity with WisBlock and LoRaWan and how we can contribute to open source and make a difference for everyone. Everything counts for open source and to use the technology forever.

Why do we need Clean Architecture?

"You can’t anticipate everything that’s going to change in the software but you can try to build in enough flexibility that it’s likely to adapt to most changes" Application architecture defines the way we develop, modularise, test, scale, and maintain our application. A good architecture allows us to deal with never-ending stream requirements by providing enough flexibility and solid protection against regression. Igor will introduce the concept of Clean Architecture in the context of Android Development, discuss it's benefits, helps you understand how Clean Architecture fits into modern Android application development.

Frontends Without Javascript, the Promise of Blazor

ASP.NET and its cousin ASP.NET Core have long been dominant and intuitive tools for us to build our Web Applications. There's always friction when moving between the front and back ends, though, as we need to leave our comfortable .NET environment to add the logic to our web pages. We've had a hard dependency on Javascript, and all the flaws and warts that go along with it. With the advent of Blazor, we can start to move past this. In this talk, we'll be exploring Blazor Server and Blazor WebAssembly and discussing how we can begin building the Frontends of our web applications without Javascript!

API Specifications Conference Keynote: Playing to our Strengths

Lorna is based in Yorkshire, UK; she is a polyglot programmer as well as a published author and experienced conference speaker. She brings her technical expertise on a range of topics to audiences all over the world with her writing and speaking engagements, always delivered with a very practical slant. By day, Lorna is a Developer Advocate at Vonage and in her spare time she blogs at http://lornajane.net.

Create Delightful SDKs from OpenAPI

OpenAPI is a standard for creating a very detailed and machine-readable description of your API. Once you have that, the machines can use it to create all sorts of goodness. This session will focus on how generated SDKs can fit into a Developer Experience strategy, enabling users to generate code for their own use, or going a step further and curating captivating libraries with accurate, maintainable, generated code at its core. We'll look at some examples, and some occasions when the fairy tale may not be all we hoped it would be. This session is recommended for anyone with an interest in Developer Experience for APIs.

MLH Fellowship: Build a Call-In Phone Line With Pre-Recorded Messages with Kevin Lewis

Learn how to accept incoming calls and respond with both a pre-recorded MP3 file and synthesised speech. In this project, we learn about Serverless using Netlify Functions, and utilizing Airtable as a database. The final project is a phone line which users can call to hear today’s MP3 ‘thought of the day’, with a fallback message read if there isn’t a recording for today.

MLH Fellowship: Build a Serverless Video Conferencing Application with Kevin Lewis

In this workshop, we'll build a serverless video application with Node.js, MongoDB, Netlify Functions and the Vonage Video API. It is suitable for those with little (but some) JavaScript knowledge.

Introduction to OpenAPI

Open API Specification is a machine and human readable way to describe APIs. From these specs we can generate documentation, create libraries, and ensure that our users know exactly what to expect from our APIs. This talk shows you around OAS from the beginning, showing how to create the specs and recommending some tools to help the process. Once you have the spec, things get interesting and this talk will showcase some of the things that you can offer once your API is described in this way.

Geppetto’s Guide to Living Puppets

Join us as we learn from Geppetto's Guide to Living Puppets and build an animatronic puppet that mimics our movements using the Vonage Video API, Azure Functions, Particle IoT devices and yes, an animatronic puppet.

The Art of Writing Technical Content

In this talk, we will discuss the art of technical writing and how to turn an application into a tutorial for others to create as well. We’ll cover how to artfully explain the reasoning behind your technical choices so that the reader can clearly understand the development process while considering factors such as audience, tone, scale, and best practices to reach potential readers.

Dead Simple APIs with Open API

We live in a world that is powered by APIs. OpenAPI is a specification and set of related tooling that can make it easy to design, describe, and help build an API in many different languages. See how easy it is to hit the ground running using OpenAPI, Spotlight, and OpenAPI Generator to drop in an API into any project.

Communications of Fire: Using Vonage API on Firebase

In this talk, we’ll learn how to use the Firebase toolset with Vonage API to build communication solutions. Topics will include SMS and Messaging, Voice, and Verify along with practical tips on setting yourself up for success. We will walk away with the information needed to get started in about thirty minutes!

Building a SMS spam classifier using machine learning

In this talk, we’ll go over how to build a machine learning model in order to detect spam SMS messages. We’ll go over how to train a model and build an SMS application using the Vonage SMS API that allows you to send a message, and respond with the prediction of that text (spam or not spam) using an Amazon Lambda function.

Flask: How "Micro" of a Microframework?

In this session, we will talk about flask. How much of a "microframework" it really is, and how extensible it can be. It is as simple (or complex) as you decide! Let's see where all the superpowers of this awesome "microframework" come from and how "micro" it really is.

Introduction to Computer Vision in .NET

Computer Vision is revolutionizing the world around us. It's ubiquitous, yet the entry points are opaque and can be a bit daunting to understand. This talk will break down these barriers as we cover some of the basics of Computer Vision in .NET - edge detection, facial detection, feature tracking, and some basic image projection using OpenCV in .NET.

Introduction to Web Components

In this session, we will do a general overview of Web Components. We will go over what they are and who uses them. There will be an example of how a Web Component can be included in different JavaScript frameworks. Lastly, we will show what it takes to make a simple one.

Low-Code for Developers

Low-code solutions are on the rise and visual builder tools are opening up creation to a wide range of users. In this session, we’re going to look at low-code tools like Node-RED and Zapier, what they have to offer, and whether they have a place in a developer’s toolkit.

Think inside the box. Developing inside a container to avoid conflicts, improve security and speed up on-boarding.

Michael Jolley discusses how every project a developer works on is unique, using various frameworks and tooling and how requiring developers to identify & install these dependencies clutters their machine, increases on-boarding time for new team members, and increases potential security threats. Learn how using Visual Studio Code Remote Development to perform all development work inside “throw-away” Docker containers prevents the need to install third-party frameworks & tooling; use standardised development Docker images to ensure a consistent development experience and speed up on-boarding; and attach to and debug code running in existing containers.

What's Love Got To Do With It? Ruby and Sentiment Analysis

How does Natural Language Understanding work? What insights can we glean from the data it provides? Join Ben Greenberg to take a dive into understanding how this technology works, and apply it in a Ruby app that connects Natural Language Understanding analysis, the daily headlines and social media all in one. Get ready to learn some Ruby, some human language insights and how they all intertwine! Go to video from 3:00 to 53:10 for Ben's session.

Building your first Facebook Bot

In this beginner-level workshop Kevin Lewis uses JavaScript and the Vonage Messages API to build a simple call-and-response Facebook bot which stores messages in a database and recalls them.

Hands on performance debugging with the browser DevTools

A no-slides, hands-on, live debugging session using only the browser Developer Tools on the website Alex picked from the JSUnconf audience. A deep dive into spotting performance bottlenecks into any website and how to fix them.

Using DevTools To Understand Modern CSS Layouts

Flexbox, Grid and Box Alignment are the cornerstones of modern CSS layouts. They introduce behaviours that might seem confusing if you don’t completely understand how the browser inteprets the CSS values you assign, e.g. sizing with Flexbox, or the various options for sizing tracks in Grid. This talk will explain a variety of modern CSS layout techniques through live demonstrations via DevTools, and provide real-world use cases of how such techniques allow designs to better adapt across a broad range of viewports.

Reduce, Reuse, Recycle - Persisting WebSocket connections with SharedWorkers

When using WebSockets to communicate between your server and the client every new browser context–tab, window, iframe, and so on–is likely to create another WebSocket connection. All these open connections can quickly take a toll on your server resources, or if you’re using a PaaS which charges for each connection, it could quickly add up to a big bill. In this talk, we’ll look at how you can use SharedWorkers to create a single persistent WebSocket which can be used by every browser context to communicate with your Django Channels WebSocket server

OpenTok Insights API

In this webinar recording, we cover the new Insights API that provides programmatic access to all the live video session data visible through the Insights Dashboard. This API uses the latest GraphQL technology to make queries easier and more efficient. We cover the following: Overview of OpenTok Insights What is GraphQL? How to use GraphQL to access Insights Live Coding What’s next with OpenTok Insights?

OpenTok Broadcasting

This webinar looks at how to use the OpenTok Broadcast API to broadcast live low-latency WebRTC video to thousands of participants while simultaneously streaming with HLS and via RTMP to FaceBook Live, YouTube, Twitch and more. We will cover: What is Interactive Broadcasting? How Broadcast APIs are an easy extension to your current use of OpenTok HLS, RTMP - what is all this? And our usual live coding showing how to use the APIs

OpenTok + Nexmo In-App Messaging

This webinar looks at using Nexmo In-App Messaging for enhanced chat experiences within OpenTok Live Video applications. Nexmo provides a global Communications Platform as a Service (CPaaS) providing a full range of communications capabilities, including the advanced messaging capabilities we will look at in this webinar. We will cover: In-App Messaging use-cases and approaches Using NEXMO InApp Messaging API The role of OpenTok Signaling

OpenTok Network Performance & Testing

This webinar looks at network challenges and opportunities for live video applications, and tools for pre-testing performance within your apps before starting a video session: Live Video and Network Performance overview Different types of networks and their behavior Using OpenTok Network Test sample code in your app What happens when network performance changes?

OpenTok SIP Interconnect with Nexmo

This webinar looks at the OpenTok SIP Interconnect capability, which can be connected to any SIP system or gateway. We will look at this generally, and then in addition we will showing the coding to connect this to the Nexmo SIP APIs in order to get PSTN connectivity. Nexmo provides a global Communications Platform as a Service (CPaaS) providing a full range of communications capabilities. The webinar will cover: What is SIP (high level)? OpenTok SIP Interconnect Using NEXMO SIP APIs for PSTN connectivity

OpenTok Archiving

Episode 5 in this webinar series looks at how to Manage Live Video recordings through the OpenTok APIs and platform. This episode covers: Recording/archive API Composed stream vs Individual streams recording Use of Amazon S3 and Microsoft Azure storage Security, privacy and compliance

OpenTok iOS + ARKit

This webinar recording covers: Pros and cons of native iOS apps vs framework or mobile-Web apps How to incorporate the OpenTok iOS SDK into your Xcode Swift projects A look at some sample Swift code (available on our GitHub repos) An example Augmented Reality app using Swift and Apple ARKit

OpenTok + Electron

This webinar recording covers: What is Electron and why are GitHub, Slack, Discord and many other companies using it to build their apps? How OpenTok APIs are used within Electron’s JavaScript, HTML and CSS framework Top tips and tricks for sharing JavaScript across both web and Electron Sample Electron code on our GitHub repos Webinar link: https://www.crowdcast.io/e/building-with-opentok-3/

OpenTok Video Chat Embeds

This is a recording of our first webinar in this series on Video Chat Embeds, which are the easiest way to quickly add basic OpenTok functionality to a website by cutting and pasting an embeddable HTML snippet. Manik’s agenda includes: - Setting up Video Chat Embeds through the Dashboard - Adding Embeds to a website, including with WIX and other website builders - Functionality of Embeds - Suggested use-cases for Embeds - Comparison with using the full OpenTok API (which will be covered in later episodes).

Introduction to OpenAPI Specification

Open API Specification is a machine and human readable way to describe APIs. From these specs we can generate documentation, create libraries, and ensure that our users know exactly what to expect from our APIs. This talk shows you around OAS from the beginning, showing how to create the specs and recommending some tools to help the process. Once you have the spec, things get interesting and this talk will showcase some of the things that you can offer once your API is described in this way. This session is recommended for writers looking to become more API-savvy and API engineers wanting to make their APIs more useful to their users.

Publishing (Perfect) Python Packages on PyPI

Starting with nothing, we'll build a package and publish it on PyPI using current best practices! Learn how to structure, document and test your project on different platforms. Discover the difference between `setup.py` and `Pipfile`. Finally, use CookieCutter to avoid doing it twice (or even once)!

Hello to the World in 8 Web Frameworks (Micro, Batteries Included & Async)

A Phileas Fogg inspired tour of 8 frameworks "Had he programmed? It was likely, for no one seemed to know web frameworks more familiarly; there was no framework so obscure that he did not appear to have an intimate acquaintance with it. He must have developed in everything, at least in the spirit."

How to Proxy Voice Calls on Phones and In-app with the Nexmo Voice API, Kotlin, and WebRTC

In this coding session, Aaron Bassett creates a traditional PSTN proxy in Kotlin, which he uses to connect two telephone endpoints while keeping both sides of the call anonymous.

Build an Inbound Call Tracking App with the Nexmo Virtual Numbers and Mixpanel

In this coding session, Nexmo Developer Advocate Aaron Bassett shows how you can handle webhooks from the Nexmo Voice API, where each webhook represents an inbound call to enable the integration with a CRM, database or analytics platform like MixPanel.

How to Build Super Fast Voice Broadcast with Asynchronous Python, Sanic, and Nexmo

In this coding session, Nexmo Developer Advocate Aaron Bassett shows how to make a fast and scalable voice broadcast system for sending critical alerts or notifications using asynchronous Python and the Nexmo Voice API.

How to Add Sentiment Analysis to Your Inbound Call Flow with IBM Watson and Nexmo

In this coding session, Nexmo Developer Advocate Aaron Bassett demonstrates how to connect an inbound call to an agent as well as to IBM Watson Tone Analyzer via the WebSockets feature of the Nexmo Voice API. He also shows how you can take the analysis from Watson and display it to the agent.

Pythonic Refactoring: Protecting Your Users From Change

So you've released a library! Now you need to maintain it. You want to add features, restructure the code, fix bugs, and maybe improve the library's usability. Your users just want their code to carry on working. That's okay! This talk covers techniques in both code and project management to allow you to keep your code moving forwards without breaking your users' code.

Django and the testing pyramid

Model mommy lettuce factory boy expects gherkin behave. Travis mock splinter nose phantom hypothesis! Most developers recognise the importance of testing in building maintainable software, but the sheer volume of tools and approaches can be bewildering and sometimes make it sound like you’re talking a different language.

Real-time transcription and sentiment analysis of audio streams; on the phone and in the browser

Discover how you can use Artifical Intelligence to perform sentiment analysis of an audio stream, in real-time!,In this workshop, we’re going to learn how to create a virtual rapporteur. A digital assistant who can join any conference call; record it, and then by using IBM Watson provide participants with a real-time transcript and insights into the overall tone of the call. All pushed to their browser via WebSockets.

Introduction to the AAARRRP DevRel Strategy Framework

Building a DevRel programme is hard. What are the goals of the programme, how do they align with the company goals, what activities should the new Developer Relations team undertake, how do those activities help other departments within the company and how should the success of the team be measured?

DocOps - Engineering Great Docs

Adam, part of the Nexmo DevRel team and Nexmo Developer Technical Lead, talks about DocOps, and how Nexmo Developer has been built. The talk covers taking engineering practices and how they can be applied to documentation platforms.