Concevez vos menus USSD sur un canevas. Publiez-les sur votre code court.
Asterisks suit chaque session, parle le format de requête de Hubtel, Nalo, Arkesel et Africa’s Talking, et n’appelle votre API que lorsqu’un écran a besoin de vos données.
Vos 1 000 premières sessions sont gratuites. Ensuite, 0,025 GHS par session.
Kasa Wallet 1. Consulter le solde 2. Envoyer de l’argent 3. Acheter du crédit 0. Quitter
Essayez : répondez par un chiffre et appuyez sur Envoyer.
Le même menu, tel qu’il apparaît dans le constructeur. L’étape en surbrillance correspond à l’écran du téléphone.
- 1 SoldeEnd SessionAfficher le solde
- 2 Envoyer de l’argentAsk a QuestionDestinataireAsk a QuestionMontantChoice MenuConfirmationCollect PaymentEncaisser
- 3 Acheter du créditAsk a QuestionMontant du créditCollect PaymentEncaisser
- 0 QuitterEnd SessionAu revoir
Ce que l’agrégateur envoie à chaque réponse
text=""
Sans constructeur, chaque menu est une condition sur une chaîne de caractères.
Un agrégateur envoie tout l’historique des réponses à chaque requête. Votre gestionnaire le découpe, détermine l’écran où se trouve l’utilisateur et répond dans le format de cet agrégateur. Ajouter une option à un menu oblige à renuméroter toutes les branches suivantes.
Dans Asterisks, les écrans sont des nœuds et les branches sont des liens entre eux. Le moteur interprète la requête de chaque agrégateur et conserve la session : votre backend ne répond qu’aux appels Send Data que vous ajoutez.
app.post('/ussd', async (req, res) => {
const { phoneNumber, text } = req.body;
const steps = text.split('*');
if (text === '')
return res.send('CON Kasa Wallet\n1. Check balance\n2. Send money');
if (text === '1')
return res.send(`END Your balance is GHS ${await balance(phoneNumber)}`);
if (steps[0] === '2' && steps.length === 2)
return res.send('CON Enter amount (GHS)');
if (steps[0] === '2' && steps.length === 3)
return res.send(`CON Send GHS ${steps[2]} to ${steps[1]}?\n1. Confirm`);
// ...then the same again in Hubtel's and Nalo's formats
});Neuf types d’étapes couvrent la plupart des services USSD.
Consultation de solde, transferts, crédit d’appel, inscriptions et paiements reposent sur les mêmes briques.
Écrans
- Entry Point
- Là où arrive l’appel. Un seul par flux.
- Choice Menu
- Une liste numérotée. Chaque option est un lien que vous tracez vers l’étape suivante.
- Ask a Question
- Une saisie libre, comme un numéro de téléphone ou un montant, enregistrée dans une variable.
- Flash Alert
- Un message que l’utilisateur lit sans répondre.
Logique
- Smart Router
- Des branches si/sinon selon des variables ou des réponses d’API.
- Sub-flow
- Un bloc réutilisable, comme une vérification de code PIN, partagé entre plusieurs flux.
Actions
- Send Data
- Appelle votre API et place la réponse dans des variables.
- Collect Payment
- Encaisse un paiement par mobile money ou par carte.
- End Session
- Termine la session avec un dernier message.
Du canevas vide au code court en production
- Étape 1
Dessinez le flux
Placez menus, questions et paiements sur le canevas, ou partez d’un modèle.
- Étape 2
Testez-le dans le simulateur
Composez le code sur un téléphone à l’écran et parcourez chaque branche avant vos clients.
- Étape 3
Connectez votre agrégateur
Ajoutez votre code court et faites pointer l’URL de rappel de votre agrégateur vers Asterisks.
- Étape 4
Publiez
Le flux en production est mis à jour à la publication. Suivez l’arrivée des sessions dans le tableau de bord.
Un flux, quatre agrégateurs.
Changer d’agrégateur se fait dans les paramètres. Chacun dispose d’un guide de configuration dans la documentation.
0,025 GHS
par session terminée, débitée d’un portefeuille prépayé.
Aucun abonnement mensuel. Les 1 000 premières sessions sont gratuites, et les offres Growth et Enterprise réduisent le tarif selon le volume.