A modular and open architecture for interactive radio campaigns
| # | 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.
interface SmsChannel
{
void sendSms(Audience recipients, Content message);
}
| # | 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.
| 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.
class ContentRep
{
// ...
private ContentFormat format;
private Language lang;
}
class Content
{
// ...
private ContentRep[] representations;
}
Content formats conform to the RFC 6838 Media Type (also know as MIME type) specification.
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;
}
}
| # | 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 | 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.
module nexmo_sms;
class NexmoSmsAdapter : SmsChannel
{
void sendSms(Audience recipients, Content message)
{
// code that talks to Nexmo's API
}
}
| # | 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).
| # | Name | ISO 639-2 code |
|---|---|---|
| 1 | Amharic | amh |
| 2 | Esperanto | epo |
| 3 | Dinka | din |
| 4 | English | eng |
| 5 | Inupiaq | ipk |
| # | 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.
| # | 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.