Пример #1
0
 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);
 }
Пример #2
0
 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));
 }
Пример #4
0
 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));
 }
Пример #5
0
 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));
 }
Пример #6
0
 /// <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());
     }
 }
Пример #7
0
 /// <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);
 }
Пример #8
0
 /// <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);
 } 
Пример #9
0
 public async Task<IHttpActionResult> Index(UssdRequest ussdRequest)
 {
     var session = new Session(_setup, ussdRequest);
     return Ok(await session.AutoSetupAsync());
 }
Пример #10
0
 public static async Task<UssdResponse> GeneralGreeting(Session session)
 {
     return UssdResponse.Notice("Hello, boss!");
 }
Пример #11
0
 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);
 }
Пример #12
0
 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"]));
 }