public async static Task<UssdResponse> AirtimeTopup(Session session, Dictionary<string, string> data) { var mpower = Util.MPowerInstance(session.Mobile); var response = await mpower.ServicesAirtime(data["Network"] , data["Mobile"], Convert.ToDecimal(data["Amount"]),data["Pin"]); return UssdResponse.Input(response.Message); }
public async static Task<UssdResponse> CornerShopMenu(Session session) { return UssdResponse.Menu("Corner Shop" + Environment.NewLine + "1. Topup airtime" + Environment.NewLine + "2. Check ECG bill" + Environment.NewLine + "0. Go back"); }
public async static Task<UssdResponse> MainMenu(Session session) { return UssdResponse.Menu(String.Format("Welcome to {0}" + Environment.NewLine + "1. General greeting" + Environment.NewLine + "2. Custom greeting" + Environment.NewLine , session.AppName)); }
public async static Task<UssdResponse> MainMenu(Session session) { var mpower = Util.MPowerInstance(session.Mobile); var response = await mpower.UserAccountCheck(Util.UnlockKey); return UssdResponse.Menu(String.Format("Welcome to {0}, {1}" + Environment.NewLine + "1. Account info" + Environment.NewLine + "2. Corner Shop" + Environment.NewLine , session.AppName, response.Data.Name)); }
public async static Task<UssdResponse> AccountInfo(Session session) { var mpower = Util.MPowerInstance(session.Mobile); var response = await mpower.UserAccountCheck(Util.UnlockKey); return UssdResponse.Notice(String.Format("Current Balance: {0}" + Environment.NewLine + "Name: {1}" + Environment.NewLine + "Username: {2}" + Environment.NewLine + "Email: {3}" + Environment.NewLine , response.Data.Balance, response.Data.Name, response.Data.Username, response.Data.Email)); }
/// <summary> /// Prepare input data to be passed to <see cref="InputProcessorAsync"/>. /// </summary> /// <param name="session">Session instance.</param> public async Task PrepareInputDataAsync(Session session) { InputData.Clear(); foreach (var input in Inputs) { var value = await session.Redis.HashGetAsync(session.InputDataHash, input.Name); InputData.Add(input.Name, input.Encrypt ? await StringCipher.DecryptAsync(value.ToString(), session.EncryptionSalt) : value.ToString()); } }
/// <summary> /// Receive user input and send a <see cref="UssdResponse"/>. /// </summary> /// <param name="session">Session instance</param> /// <param name="position">Input's position.</param> /// <returns></returns> public async Task<UssdResponse> ReceiveInputAndRespondAsync(Session session, int position) { await ReceiveInputAsync(session, position); return InputResponse(++position); }
/// <summary> /// Receive user input. /// </summary> /// <param name="session">Session instance.</param> /// <param name="position">Input's position.</param> /// <returns></returns> public async Task ReceiveInputAsync(Session session, int position) { var input = Inputs[position]; var receivedMessage = session.UssdRequest.Message; String value; if (input.HasOptions) { var optionNumber = Convert.ToInt32(receivedMessage); //value = optionNumber < 0 || optionNumber > input.Options.Count // ? receivedMessage // : input.Options[optionNumber - 1].Value; try { value = input.Options[optionNumber - 1].Value; } catch (Exception ex) { throw new Exception("Sorry, selected option does not exist. Try again."); } } else { value = receivedMessage; } await session.Redis.HashSetAsync(session.InputDataHash, input.Name , input.Encrypt ? await StringCipher.EncryptAsync(value, session.EncryptionSalt) : value); await session.Redis.HashSetAsync(session.InputMetaHash, "Position", ++position); }
public async Task<IHttpActionResult> Index(UssdRequest ussdRequest) { var session = new Session(_setup, ussdRequest); return Ok(await session.AutoSetupAsync()); }
public static async Task<UssdResponse> GeneralGreeting(Session session) { return UssdResponse.Notice("Hello, boss!"); }
public async static Task<UssdResponse> CheckEcg(Session session, Dictionary<string, string> data) { var mpower = Util.MPowerInstance(session.Mobile); var response = await mpower.ServicesVerifyEcgBill(data["AccountNumber"]); return UssdResponse.Input(response.Message); }
public static async Task<UssdResponse> CustomGreeting(Session session, Dictionary<string, string> data) { return UssdResponse.Input(String.Format("Hello, {0} {1} {2}" , data["Title"], data["FirstName"], data["LastName"])); }