In-Call Apps (part 4 of 4): Attended Transfers

This article is part 4 of a series. If you have not already, check out Part 1: In-Call Apps with Adhearsion & Matrioska, Part 2: In-Call Apps: Please Hold and Part 3: In-Call Apps: Getting Interactive. In the previous post of this series, we finished off on-hold functionality. Now we have that working, we can […]

In-Call Apps (part 3 of 4): Getting Interactive

This article is part 3 of a series. If you have not already, check out Part 1: In-Call Apps with Adhearsion & Matrioska and Part 2: In-Call Apps: Please Hold Getting Interactive That’s all well and good, but a 5 second hold is kind of restrictive, don’t you think? Lets add a menu to the […]

In-Call Apps (part 2 of 4): Please Hold

Following on our previous article in the series, let’s talk about some of the building blocks for in-call applications. In this installment: placing callers on hold, and retrieving them. Please hold Well, first, we’ll start by defining the in-call app: require ‘matrioska/dial_with_apps’ class InboundController < Adhearsion::CallController include Matrioska::DialWithApps def run dial_with_local_apps ‘sip:5201996@localphone.com’ do |runner, dial| […]

Adhearsion 2: The New Menu DSL

Rapid and painless creation of complex IVRs has always been one of the defining features of Adhearsion for beginning and advanced programmers alike. Through the #menu DSL method, the framework abstracts and packages the output and input management and the complex state machine needed to implement a complete menu with audio prompts, digit checking, retries […]

Adhearsion 2: Call Controllers & Routing

In Adhearsion applications based on Adhearsion 1.x and earlier, the most popular way to write the meat of the application was directly in dialplan.rb, and applications would look something like this: adhearsion { case variables[:dnid] when /789/ +calls_to_the_top_secret_number else +everyone_else end } calls_to_the_top_secret_number { menu ‘choose-your-top-secret-operation’ do link.turn_off_the_lights 1 link.open_the_pod_bay_doors 2 end } turn_off_the_lights { […]