Coder Social home page Coder Social logo

backend-test-4's Introduction

Aircall.io - Backend technical test

This test is a part of our hiring process at Aircall for backend positions. It should take you between 2 and 4 hours depending on your experience. Hope you will have as much fun as we did coding this test!

Feel free to apply! Drop us a line with your Linkedin/Github/Twitter/AnySocialProfileWhereYouAreActive at [email protected]

Summary

The purpose of the test is to reproduce one Aircall feature: call forwarding.

Here is the story:

Your company has one main number. This number is an IVR:

  • If the caller presses 1, call is forwarded to another phone number;
  • If the caller presses 2, he is able to leave a voicemail.

It's 9AM in the office and first calls are coming in!

Instructions

Code

In this repository you will find a simple Ruby On Rails project with only one model: Call. It represents a specific call that came in through the main number.

We won't use Company, User or Number models in this test.

In order to receive and route calls, you will extend this Rails project by creating an interaction with Twilio's API.

Please keep the following points in mind:

  • The focus of this test is the interaction between your Rails server and Twilio - only inbound calls should be handled;
  • In order to test the interaction between Twilio and your local environment, you can use tunnels like ngrok.com;
  • Register a test account on Twilio - contact us if you need help in order to setup one or need extra credits;
  • Do not customize forms or views in order to modify models (except if it helps you to test);
  • You can add all the models you need or extend the existing ones;
  • You can add/modify as many gems as you want or change the Ruby version;
  • Your project must be available online. A simple Heroku Dyno should do the trick;
  • Make your code as clear as possible, it should be understandable at a first glance (comments are more than welcome);
  • Do not add tests in your submission, except if you have extra time.

Note

The base of this test is in Ruby On Rails, feel free to use whatever language you want :)

Use case

The use case we want to reproduce is the following:

  • A customer is calling the main number of your company;
  • If the caller presses 1, the call is redirected on your personal phone*. You should be able to pickup and talk with the caller.
  • If the caller presses 2, he can drop a voicemail (you would like to hear this message later);
  • The call has to be logged in the database;
  • An activity feed, listing all calls, should be displayed: status of the call, duration, link to an audio file if the caller dropped a voicemail plus other info you have in mind.

* Pro tip: you can use +33 1 23 45 67 89 or +1 555 666 7777...

Main steps

Here are some steps to help you start:

  • Create a Twilio account and read carefully the API doc.

  • Buy a Number on Twilio and try to call it.

  • Create an Application and Twilio tools you will use for calls.

  • Extend the Call model in order to store data about calls.

  • Forward incoming calls according to the previous strategies.

Contact us at [email protected] if you need more details.

Submission

Fork this repository and send us a pull request. We will review it and get back to you in order to talk about your code!

backend-test-4's People

Contributors

pbechu avatar xdurand avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.