3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
|
||||||||||||||||
1 | ||||||||||||||||
Telegram bot. Как вычислить на какое именно сообщение получен ответ?22.06.2017, 11:03. Показов 19360. Ответов 17
Доброго времени суток, коллеги!
Пишу своего первого бота на основе WebApi, использую Webhook, столкнулся с таким вопросом: Как вычислить на какое именно сообщение получен ответ?
Добавлено через 3 минуты
0
|
22.06.2017, 11:03 | |
Ответы с готовыми решениями:
17
Telegram Bot Как получить ответ от ввода с клавиатуры в телеграмме Telegram Bot(Telepot). Как сохранить введенное пользователем сообщение Telegram bot | Как создать inline кнопки? Как создать реферальную систему в telegram bot? |
12505 / 8692 / 1310
Регистрация: 21.01.2016
Сообщений: 32,661
|
|
22.06.2017, 11:21 | 2 |
Alex_trader, Ничего не понятно. Какие условия и где? И почему команды сделаны шиворот-на-выворот?
0
|
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
|
|
22.06.2017, 13:29 [ТС] | 3 |
Чтобы в контроллере не нужная команда не выполнилась такое условие делаю в командах, таким образом при каждом новом сообщении процесс заходит во все команды, где условие не выполняется выходит по return
Добавлено через 1 минуту По подробнее опишите, что не так?
0
|
12505 / 8692 / 1310
Регистрация: 21.01.2016
Сообщений: 32,661
|
|
22.06.2017, 13:30 | 4 |
Это просто трындец.
Может стоит парсить входящие данные, чтобы понять что нужно сделать и потом вызвать нужный метод класса бота (дать ему команду)? Добавлено через 1 минуту Или завернуть команду в специальный класс и передать боту, который её выполнит? То, что вы продемонстрировали в коде никакая не "команда".
0
|
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
|
|
22.06.2017, 15:06 [ТС] | 5 |
Честно не совсем Вас понял, и что не так в командах, можно подробнее?
Добавлено через 30 секунд Какая же она должна быть? Добавлено через 1 минуту Гуглил инет, ютуб, нашёл только такую структуру кода Добавлено через 1 минуту Правда непонятно как строить сценарий поведения/ответов бота Добавлено через 35 минут Много критики без конкретных предложений
0
|
12505 / 8692 / 1310
Регистрация: 21.01.2016
Сообщений: 32,661
|
|
22.06.2017, 15:50 | 6 |
Alex_trader, командовать ботом можно через его открытые методы или накидывая ему в некую коллекцию объекты класса Command (не лучше применение командам, в данном случае).
А у вас что? Вы получаете некое сообщение, потом достаёте из бота команды и исполняете(!) в контроллере все по порядку в надежде, что какая-нибудь да разберёт сообщение и выполнится. Это вообще не "команда". Команда - паттерн, где вы формируете указ системе что-то сделать, в виде некоего класса-команды (отсюда и название) и передаёте её на исполнение некоему сервису (в данном случае - боту). Сама команда может быть как простым набором параметров для метода, который поймёт, что с этим делать, так и содержать в себе всю логику исполнения команды, тогда сервису остаётся её просто выполнить (Execute()), даже не зная что в ней. Ваше творчество ничего из этого не показывает.
0
|
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
|
|
22.06.2017, 16:06 [ТС] | 7 |
Usaga, можно кусок кода, ссылку чтобы понять к чему стремиться...
0
|
12505 / 8692 / 1310
Регистрация: 21.01.2016
Сообщений: 32,661
|
|
22.06.2017, 16:21 | 8 |
Alex_trader, я не думаю, что в данном случае вам нужен паттерн команда. Вполне возможно, будет достаточно набора методов у бота и всё.
По данному паттерну полно примеров в сети.
0
|
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
|
|
26.06.2017, 10:14 [ТС] | 9 |
Usaga, Изучил паттерн на метаните
0
|
12505 / 8692 / 1310
Регистрация: 21.01.2016
Сообщений: 32,661
|
|
26.06.2017, 10:48 | 10 |
Alex_trader, инициатором выступает ваш контроллер, получателем - бот. Команды можно добавлять боту в очередь (типа AddCommand(new SomeCommand()), а тот их будет исполнять в отдельном потоке. Или можно асинхронно, если требуется результат, но тогда необходимость данного паттерна встанет под вопрос.
0
|
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
|
|
26.06.2017, 11:28 [ТС] | 11 |
Usaga, всё таки хотелось бы получить ответ на вопрос, ради которого завелась тема:
Как вычислить на какое именно сообщение получен ответ? Добавлено через 1 минуту Имеется ввиду, как вести боту переписку с пользователем, как однозначно определить что пользователь ответил на определённый вопрос бота Добавлено через 1 минуту Как понимать, на какой вопрос пользователь отвечает. Добавлено через 4 минуты Как скармливать боту определённые команды понятно (пользователь отправил команду - ищу на сервере такую команду и выполняю), но если речь идёт о переписке то как быть? Добавлено через 4 минуты Смысл моего бота - Служба поддержки, задав уточняющие вопросы бот идентифицирует тему по которой обратился пользователь и далее присваивает номер заявке и передаёт её на исполнение в нужный отдел Добавлено через 32 секунды Всю голову сломал, инет перекопал...
0
|
Почтальон
|
26.06.2017, 11:30
#12
|
Не по теме: Интересно, как будет работать бот, когда телеграмм заблокируют ? через прокси ?
0
|
12505 / 8692 / 1310
Регистрация: 21.01.2016
Сообщений: 32,661
|
|
26.06.2017, 12:13 | 13 |
Никак.
Добавлено через 1 минуту Хотя нет. Можно задавать только по одному вопросу, а всё, что эта двуногая фиговина отвечает считать за ответ. Добавлено через 1 минуту Или плюнуть пользователю в лицо: к каждому вопросу, задаваемому ботом, указываеть его GUID. Отвечать пользователь должен в формате "Ответ на [GUID]=ответ". Так пойдёт? Можно будет однозначно определить на что ответил человек
0
|
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
|
|||||||||||||||||||||
26.06.2017, 12:22 | 14 | ||||||||||||||||||||
Alex_trader, кнопки? ограничить выбор, зато можно слать id вырианта в калбеке. Я не помню как точно выглядит JSON ответа, но там же есть кто прислал...
Сделал себе пару запросов:
еще 2:
Просто брать с мессадж, т.к. известен чат id - дергать все сообщения пользователя до последнего сообщения бота. Добавлено через 3 минуты точнее message from(это User) id .
0
|
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
|
||||||
26.06.2017, 12:34 [ТС] | 15 | |||||
EveKS, возможно можно прикрутить айдишник апдейта плюс айдишник пользователя
Добавлено через 2 минуты Или все поступившие запросы складывать в public static Dictionary<UserId, UpdateId>?
0
|
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
|
|
26.06.2017, 13:24 | 16 |
Alex_trader, там же у телеграм есть своя модель, она не подайдет? да и связь один ко многим тут нужна, если коллекция, как вариант ILookup, но лучше всё же через классы.
Не по теме: всё равно телеграм хотят прикрыть, уже на неделе...
0
|
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
|
|
26.06.2017, 14:44 [ТС] | 17 |
Нашел такую штуку на stackoverflow
0
|
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 1
|
|
23.01.2018, 19:30 | 18 |
Alex_trader, можно url на stackoverflow с решением этой проблемы?
0
|
23.01.2018, 19:30 | |
23.01.2018, 19:30 | |
Помогаю со студенческими работами здесь
18
Как отправлять альбом фотографий через Telegram.Bot Как сделать Telegram bot-a на Webhook .NET Core Сборник задач Демидовича 856 - как получен такой ответ? Как посмотреть текст сообщения бота (Telegram bot, Python)? Как реализовать ввод пользователя в Telegram Bot`e в разветвлении Switch? ASP .NET Core Telegram Bot, как запустить бота локально? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |