public static async Task Execute(CallbackData data) { //достать данные из таблицы var flats = Handlers.GoogleSheetsHandler.CheckFlatData(data.Sender.Id); if (flats.Count > 0) { //отправить подтверждение var receiver = data.Sender.Id; var message = new KeyboardMessage { Receiver = receiver, Sender = client.BotUserData, Text = $"Вы указывали квартиры : {String.Join(",", flats)}. Выберите действие.", TrackingData = ViberBotTrackingData.Build("", "StartSetFlatNumberAction"), Keyboard = KeyboardHandler.CustomButtons(new string[][] { new string[] { "Добавить квартиру", "AddFlatNumberAction" }, new string[] { "Удалить квартиру", "ConfirmDeleteFlatNumberAction" }, new string[] { "Отмена", "Cancel" } }) }; await client.SendMessage(receiver, message); } else { await AddFlatNumberAction.Execute(data); } }
public static async Task Execute(CallbackData data) { var text = ((TextMessage)data.Message).Text; var receiver = data.Sender.Id; var trackingData = ViberBotTrackingData.Get(data.Message.TrackingData); if (text == "no") { await StartSetFlatNumberAction.Execute(data); return; } else if (text == "yes") { var flatNumber = trackingData.Data[DataField.FlatNumber.ToString()]; //сохранить в таблицу Handlers.GoogleSheetsHandler.AddUserFlatNumber(flatNumber, data.Sender); await client.SendTextMessage(receiver, "Данные успешно сохранены."); } else { var message = new KeyboardMessage { Receiver = receiver, Sender = client.BotUserData, Text = $"Выберите действи из списка.", TrackingData = ViberBotTrackingData.Build("SetFlatNumberAction", "SetFlatNumberAction", trackingData.Data), Keyboard = KeyboardHandler.YesNoCancel() }; await client.SendMessage(receiver, message); } }
public static async Task Execute(CallbackData data) { //достать данные из таблицы var flatNumber = ((TextMessage)data.Message).Text; var lastData = Handlers.GoogleSheetsHandler.GetFlatData(flatNumber); var trackingData = ViberBotTrackingData.Get(data.Message.TrackingData); trackingData.Data.Add(DataField.FlatNumber.ToString(), flatNumber); //отправить подтверждение var receiver = data.Sender.Id; var message = new KeyboardMessage { Receiver = receiver, Sender = client.BotUserData, Text = $"Квартира - { flatNumber}. Предыдущие показания счетчика - {lastData}. Введите текущие показания.", TrackingData = ViberBotTrackingData.Build("EnterSendDataAction", "СonfirmSendDataAction", trackingData.Data), Keyboard = KeyboardHandler.Cancel }; await client.SendMessage(receiver, message); }
public static async Task Execute(CallbackData data) { //достать данные из таблицы var receiver = data.Sender.Id; var flats = Handlers.GoogleSheetsHandler.CheckFlatData(data.Sender.Id); if (flats.Any()) { var flatButtonsData = new List <string[]>(); foreach (var flat in flats) { flatButtonsData.Add(new string[] { flat.ToString(), flat.ToString() }); } flatButtonsData.Add(new string[] { "Отмена", "Cancel" }); //отправить подтверждение var message = new KeyboardMessage { Receiver = receiver, Sender = client.BotUserData, Text = $"Выберите номер квартиру для удаления.", TrackingData = ViberBotTrackingData.Build("ConfirmDeleteFlatNumberAction", "DeleteFlatNumberAction"), Keyboard = KeyboardHandler.CustomButtons(flatButtonsData.ToArray()) }; await client.SendMessage(receiver, message); } else { await client.SendTextMessage(receiver, "Нет привязаных квартир."); } }
public static async Task Execute(CallbackData data) { var receiver = data.Sender.Id; if (int.TryParse(((TextMessage)data.Message).Text, out int userValue)) { //учесть данные в поле трекинга var trackingData = ViberBotTrackingData.Get(data.Message.TrackingData); var flatNumber = trackingData.Data[DataField.FlatNumber.ToString()]; trackingData.Add(DataField.FlatValue.ToString(), userValue.ToString()); //запросить подтверждение var message = new KeyboardMessage { Receiver = receiver, Sender = client.BotUserData, Text = $"Для квартиры - {flatNumber}. Вы указали - {userValue}. Данные верны?", TrackingData = ViberBotTrackingData.Build("СonfirmSendDataAction", "SendDataAction", trackingData.Data), Keyboard = KeyboardHandler.YesNoCancel() }; await client.SendMessage(receiver, message); } else { //неверное значение await client.SendTextMessage(receiver, BotError.BadValue); } }
public static async Task Execute(CallbackData data) { // проверить есть ли запись о пользователе вообще //или создавать ее во время приветствия //отправить подтверждение var receiver = data.Sender.Id; //достать данные из таблицы var contactsData = Handlers.GoogleSheetsHandler.GetContactsData(data.Sender.Id); var trackingData = JsonConvert.DeserializeObject <ViberBotTrackingData>(data.Message.TrackingData); trackingData.Add(DataField.Contacts.ToString(), contactsData); var message = new KeyboardMessage { Receiver = receiver, Sender = client.BotUserData, Text = $"Указанные контактные данные - {contactsData}. Введите номер телефона по которому можно было бы с вами связаться. Данные вводите в числовом формате без пробелов. Пример: +370123456789", TrackingData = ViberBotTrackingData.Build("StartSendContactsAction", "СonfirmSendContactsAction", trackingData.Data), Keyboard = KeyboardHandler.Cancel }; await client.SendMessage(receiver, message); }
private async Task ProcessMessageCallback(CallbackData data) { if (data.Event == "message") { var messageText = ((TextMessage)data.Message).Text; if (messageText.ToLower() == "start") { data.Message.TrackingData = ViberBotTrackingData.Empty(); await MenuAction.Execute(data); return; } if (messageText.ToLower() == "cancel" || data.Message.TrackingData == null) { data.Message.TrackingData = ViberBotTrackingData.Empty(); await DefaultAction.Execute(data); return; } if (messageText.ToLower() == "help") { data.Message.TrackingData = ViberBotTrackingData.Empty(); await HelpAction.Execute(data); return; } try { var trackingData = JsonConvert.DeserializeObject <ViberBotTrackingData>(data.Message.TrackingData); if (messageText.Contains("Action")) { trackingData.NextAction = messageText; } if (trackingData != null && !string.IsNullOrEmpty(trackingData.NextAction)) { Type magicType = Type.GetType($"ViberBot.Client.Actions.{trackingData.NextAction}"); if (magicType != null) { MethodInfo magicMethod = magicType.GetMethod("Execute"); magicMethod.Invoke(null, new object[] { data }); } } else { await DefaultAction.Execute(data); } } catch { await SendTextMessage(data.Sender.Id, BotError.SomethingWentWrong); } } }
public async Task <string> SendTextMessage(string receiver, string text) { var message = new KeyboardMessage { Receiver = receiver, Sender = BotUserData, Text = text, TrackingData = ViberBotTrackingData.Empty(), Keyboard = KeyboardHandler.MainMenu }; return(await SendMessage(receiver, message)); }
public static async Task Execute(CallbackData data) { //отправить подтверждение var receiver = data.Sender.Id; var message = new KeyboardMessage { Receiver = receiver, Sender = client.BotUserData, Text = $"Укажите номер вашей квартиры.", TrackingData = ViberBotTrackingData.Build("AddFlatNumberAction", "СonfirmSetFlatNumberAction"), Keyboard = KeyboardHandler.Cancel }; await client.SendMessage(receiver, message); }
public static async Task Execute(CallbackData data) { //отправить подтверждение var receiver = data.Sender.Id; var message = new KeyboardMessage { Receiver = receiver, Sender = client.BotUserData, Text = $"Выберите действие из списка.", TrackingData = ViberBotTrackingData.Empty(), Keyboard = KeyboardHandler.MainMenu }; await client.SendMessage(receiver, message); }
public static async Task Execute(CallbackData data) { var receiver = data.Sender.Id; if (int.TryParse(((TextMessage)data.Message).Text, out int userValue)) { //учесть данные в поле трекинга var flats = Handlers.GoogleSheetsHandler.CheckFlatData(data.Sender.Id); if (flats.Any(f => f.ToString() == userValue.ToString())) { await client.SendTextMessage(receiver, $"Вы указали - {userValue}. Уже в списке."); } else if (userValue <= 0 || userValue > ViberBotClient.GetInstance().Settings.FlatsNumber) { await client.SendTextMessage(receiver, $"Вы указали - {userValue}. Номер квартиры должен быть от 1 до {ViberBotClient.GetInstance().Settings.FlatsNumber}."); } else { var trackingData = ViberBotTrackingData.Get(data.Message.TrackingData); trackingData.Add(DataField.FlatNumber.ToString(), userValue.ToString()); //запросить подтверждение var message = new KeyboardMessage { Receiver = receiver, Sender = client.BotUserData, Text = $"Вы указали - {userValue}. Данные верны?", TrackingData = ViberBotTrackingData.Build("СonfirmSetFlatNumberAction", "SetFlatNumberAction", trackingData.Data), Keyboard = KeyboardHandler.YesNoCancel() }; await client.SendMessage(receiver, message); } } else { //неверное значение await client.SendTextMessage(receiver, BotError.BadValue); } }
public static async Task Execute(CallbackData data) { //достать данные из таблицы Handlers.GoogleSheetsHandler.AddUser(data.User); //отправить подтверждение var receiver = data.User.Id; //добавить пользователя var message = new KeyboardMessage { Receiver = receiver, Sender = client.BotUserData, Text = $"Добрый день я бот который помогает учитывать данные счетчика электроэнерги. Пожалуйста зарегистрируйте квартиру и контактные данные.", TrackingData = ViberBotTrackingData.Empty(), Keyboard = KeyboardHandler.Start }; await client.SendMessage(receiver, message); }
public static async Task Execute(CallbackData data) { //отправить подтверждение var receiver = data.Sender.Id; var helpFile = client.Settings.HelpFile; var message = new KeyboardMessage { Receiver = receiver, Sender = client.BotUserData, Text = $"Добрый день я бот который помогает учитывать данные счетчика электроэнерги. Инструкцию по использованию можно найти по адресу {helpFile.Url}.", TrackingData = ViberBotTrackingData.Empty(), Keyboard = KeyboardHandler.MainMenu }; await client.SendMessage(receiver, message); var helpLink = new LinkMessage { Receiver = receiver, Sender = client.BotUserData, Media = helpFile.Url, }; await client.SendMessage(receiver, helpLink); var filemessage = new FileMessage { Receiver = receiver, Sender = client.BotUserData, Media = helpFile.Url, Size = helpFile.Size, FileName = helpFile.FileName }; await client.SendMessage(receiver, filemessage); await DefaultAction.Execute(data); }
public static async Task Execute(CallbackData data) { var receiver = data.Sender.Id; var userValue = ((TextMessage)data.Message).Text; //TODO возможно сделать проверку номера Regex r = new Regex(@"^\+?\d{0,2}\-?\d{4,5}\-?\d{5,6}"); if (r.IsMatch(userValue)) { //учесть данные в поле трекинга var trackingData = ViberBotTrackingData.Get(data.Message.TrackingData); var contactsData = trackingData.Data[DataField.Contacts.ToString()]; trackingData.Add(DataField.Contacts.ToString(), userValue); //запросить подтверждение var message = new KeyboardMessage { Receiver = receiver, Sender = client.BotUserData, Text = $"Старые контактные данные - {contactsData}. Вы указали - {userValue}. Данные верны?", TrackingData = ViberBotTrackingData.Build("СonfirmSendContactsAction", "SendContactsAction", trackingData.Data), Keyboard = KeyboardHandler.YesNoCancel() }; await client.SendMessage(receiver, message); } else { //неверное значение await client.SendTextMessage(receiver, BotError.BadValue); } }
public static async Task Execute(CallbackData data) { //отправить подтверждение var receiver = data.Sender.Id; if (client.Settings.DataReadingPeriod != null) { //проверка даты var day = DateTime.Now.Date.Day; if (day < client.Settings.DataReadingPeriod.From || day > client.Settings.DataReadingPeriod.To) { await client.SendTextMessage(receiver, BotError.Period(client.Settings.DataReadingPeriod.From.ToString(), client.Settings.DataReadingPeriod.To.ToString())); return; } } //достать данные из таблицы var flats = Handlers.GoogleSheetsHandler.CheckFlatData(data.Sender.Id); if (flats.Count == 0) { var message = new KeyboardMessage { Receiver = receiver, Sender = client.BotUserData, Text = $"У вас не привязана ни одна квартира.", TrackingData = ViberBotTrackingData.Empty(), Keyboard = KeyboardHandler.MainMenu }; await client.SendMessage(receiver, message); } else if (flats.Count == 1) { var flatNumber = flats.FirstOrDefault().ToString(); var lastData = Handlers.GoogleSheetsHandler.GetFlatData(flatNumber); var trackingData = JsonConvert.DeserializeObject <ViberBotTrackingData>(data.Message.TrackingData); trackingData.Add(DataField.FlatNumber.ToString(), flatNumber); var message = new KeyboardMessage { Receiver = receiver, Sender = client.BotUserData, Text = $"Квартира - { flatNumber}. Предыдущие показания счетчика - {lastData}. Введите текущие показания.", TrackingData = ViberBotTrackingData.Build("EnterSendDataAction", "СonfirmSendDataAction", trackingData.Data), Keyboard = KeyboardHandler.Cancel }; await client.SendMessage(receiver, message); } else if (flats.Count > 1) { var flatButtonsData = new List <string[]>(); foreach (var flat in flats) { flatButtonsData.Add(new string[] { flat.ToString(), flat.ToString() }); } flatButtonsData.Add(new string[] { "Отмена", "Cancel" }); var message = new KeyboardMessage { Receiver = receiver, Sender = client.BotUserData, Text = $"У вас указано несколько квартир. Выберите нужную.", TrackingData = ViberBotTrackingData.Build("StartSendDataAction", "EnterSendDataAction"), Keyboard = KeyboardHandler.CustomButtons(flatButtonsData.ToArray()) }; await client.SendMessage(receiver, message); } }