A modular and open architecture for interactive radio campaigns

Channels
# Name Description
1 IVR Interactive voice response over the phone network
2 Voice One way audio calls without interactivity
3 SMS Mobile phone text message delivery
4 USSD Menu-based message exchange over GSM
5 Chat Text and audio via Internet-based messenger services
6 WebRTC Browser-based real-time communication
7 VoIP IP telephony (voice and video)

A channel is a means for uni- or bidirectional communication with an audience. Each channel is an interface which defines a set of operations. Together, these operations determine the capabilities of the channel.

Pseudo code:
interface SmsChannel
{
    void sendSms(Audience recipients, Content message);
}
Features
# Name Description Channels
1 Decision tree A decision tree-based (VoiceXML) interactive campaign element IVR, Chat
2 Bot AI Interactivity based on artificial conversational features Chat
3 Registration Capture of user demographic information IVR, Chat
4 Information service Delivery of subscription content or announcements SMS, Voice, Chat
5 Transcription Machine-transcription of audio content IVR, Chat

Features are configurable units of functionality that can be added to radio campaigns. Channels are the communication link between the audience and a campaign feature. Multiple channels may be available for one feature.

Content
Title Synopsis Formats
Welcome message text-eng audio-eng audio-amh
Uliza Answers introduction message This message is part of the Uliza Q&A service. audio-eng
Uliza Answers conclusion This message is part of the Uliza Q&A service. audio-eng
Advice on growing potatoes audio-amh audio-swa

Information available to campaigns for exchange over a channel is know as content. Content is available in different formats and languages. Examples of formats are text, audio, and video. Instances of data which renders content in a specific format and in a specific language are referred to as representations of that content.

Pseudo code:
class ContentRep
{
    // ...

    private ContentFormat format;
    private Language lang;
}

class Content
{
    // ...

    private ContentRep[] representations;
}

Media types

Content formats conform to the RFC 6838 Media Type (also know as MIME type) specification.

Pseudo code:
enum MediaType
{
    AudioMpeg,
    TextPlain,
    TextHtml,

    // ...
}

interface ContentFormat
{
    static pure MediaType mediaType();
}

class TextFormat : ContentFormat
{
    static pure MediaType mediaType() 
    { 
        return MediaType.TextPlain; 
    }
}

class Mp3Format : ContentFormat
{
    static pure MediaType mediaType() 
    { 
        return MediaType.AudioMpeg; 
    }
}
Adapters
# Module Service Channel Description
1 viamo_sms Viamo SMS Delivers SMS via the Viamo platform
2 telerivet_sms TeleRivet SMS Delivers SMS via the TeleRivet platform
3 telerivet_ivr TeleRivet IVR Enables IVR features via TeleRivet
4 telegram_bot Telegram Chat Integrates with the Telegram messaging service
5 facebook_bot Facebook Chat Integrates with Facebook Messenger
6 wazo_ivr Wazo IVR Enables IVR features via Wazo

An adapter implements a channel interface against a specific backend, service or platform.

Pseudo code:
module nexmo_sms;

class NexmoSmsAdapter : SmsChannel
{
    void sendSms(Audience recipients, Content message)
    {
        // code that talks to Nexmo's API
    }
}
Campaigns
# Title Features
1 UPTAKE Decision tree
2 Farmers priorities Decision tree, Bot AI
3 Registration demo Decision tree, Registration
4 NLP demo Transcription

Interactive radio campaigns are schedulable and automated activities of audience interaction to exchange information (content).

Languages
# Name ISO 639-2 code
1 Amharic amh
2 Esperanto epo
3 Dinka din
4 English eng
5 Inupiaq ipk
Audience
# Name Attributes
1 Uri Geller
2 Sun Ra {"farmer": true, "country": "us"}
3 Grace Jones {"farmer": true}
4 Yngwie J. Malmsteen {"farmer": true, "age": 55}
5 Zlatan Ibrahimovic
6 Celine Dion {"registrered": true}

An audience is a group of people who have been engaged to participate in a campaign. The audience interacts with the features of a campaign over a channel.

Countries
# Name Alpha-2 code Dialing code
1 Canada ca 1
2 Tanzania tz 255
3 Uganda ug 256

Alpha-2 codes are two-letter country codes defined in the ISO 3166 standard.