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.