0
Mon Menu USSD Africa's Talking coupe la session avant la fin de la saisie.
Je développe un service USSD avec Africa's Talking et Laravel 11 pour qu'une coopérative agricole puisse consulter le prix du jour et son solde depuis un téléphone simple, sans internet.
Le menu a 3 niveaux. Le premier niveau marche, mais dès le deuxième, l'utilisateur reçoit souvent « Erreur de connexion » et la session se coupe, surtout en zone rurale.
Mon contrôleur actuel :
public function ussd(Request $request)
{
$text = $request->input('text', '');
$niveaux = $text === '' ? [] : explode('*', $text);
$reponse = match (count($niveaux)) {
0 => "CON Bienvenue sur AgriPrix\n1. Prix du jour\n2. Mon solde",
1 => $niveaux[0] === '1'
? "CON Choisissez un produit\n1. Maïs\n2. Sorgho\n3. Arachide"
: 'END Votre solde : '.Membre::soldeDe($request->input('phoneNumber')).' FCFA',
default => 'END Prix : '.Prix::du($niveaux[1]).' FCFA/kg',
};
return response($reponse)->header('Content-Type', 'text/plain');
}
Ce que j'ai déjà vérifié :
- L'URL de callback répond bien en HTTPS et le sandbox Africa's Talking fonctionne.
Membre::soldeDe()interroge une API interne qui met parfois 4 à 6 secondes à répondre.- Les logs Laravel ne montrent aucune erreur côté serveur.
Mes questions :
- Quel est le délai maximum de réponse accepté par les opérateurs pour une session USSD au Burkina (Orange, Moov) ?
- Faut-il mettre le solde en cache, ou répondre tout de suite et envoyer le résultat par SMS ?
- Comment gérer proprement le retour en arrière (touche
0) dans la chaînetext?
Merci d'avance pour vos retours d'expérience sur le terrain.
Modifiée il y a 43 minutes