Comments 106
:)
P.S. Была такая ситуация в чате одной игры. Русские и один иностранец, переводил переводчиком.
p.s. то же может быть и в случае Kaki}{ t0 takux fra3, хотя думаю что многое из этого вполне достижимо
Да без фонетического воспроизведения бот не будет понимать такой текст (если только не запомнит в тупую благодаря ручному обучению).
«Как обучть мдль пнмть упртые скрщня»
habrahabr.ru/post/346578
Paragraph: There's a room with white walls, red sofa and two green parrots sitting on the top of it.
Q: What's the color of walls?
A: white
Q: What's the color of sofa?
A: red
Q: What's the color of two parrots?
A: green
Q: How many parrots there are in the room?
A: two
Хотя модель на самом деле «не понимает» о чём речь:
Q: What's the color of parrots?
A: red
Q: How many walls there are in the room?
A: white
но, объединив это с банком знаний вроде start.csail.mit.edu, можно получить что-то более умное.
Сколько надо будет учить такого бота, чтобы он выполнил просьбу "эй, сгоняй за пивом!"
Просто отписал в сообщения один юзер, у которого python-telegram-bot не работал из-за конфликта с urllib3.
Вот вам лайфхак: большинство автоответчиков можно заткнуть нажатием кнопки 0, для перевода на оператора. А тот уже пусть сам связывает с нужным отделом.
Вот и вам лайфхак — попробуйте с теми, что я назвал. "Я вам не поняла, произнесите тему вашего звонка!"
И хорошо бы по таймауту переводили на оператора, а то ведь порой и трубку робот бросает, если ниасилил распознать.
а то ведь порой и трубку робот бросает, если ниасилил распознать.
… — дэвушка, а можна мнэ кого то поэумнээ??
— пи-пи-пи-пи-пи-пи…
На самом деле становится еще дурнее, когда нужно что-то точно узнать, скажем, тонкости биллинга. Я стараюсь прорываться к живому человеку, а там еще порой приходится исхитряться и просить первую линию поддержку переключить на знающего человека. Правда, вот это как раз не прокатывает, все экономят, так что, в лучшем случае, можно только тикет попросить составить.
большинство автоответчиков можно заткнуть нажатием кнопки 0
… и после 40 минут прослушивания музыки таки разбить телефон об стену.
На самом деле лайфхак один: постараться найти альтернативные номера ТП, даже по 8-800 с городского трубку берут чуть ли не моментально, а по нативному можно высадить аккумулятор, пока дождёшься.
Ну тут по сути всё готовое собрано вместе :)
Думал будет интереснее...
Целью статьи было показать, что на сегодняшний день создать самому чат-бота (с притягиванием машинного обучения) можно легко и просто (конечно же, не без использования сторонних библиотек). Я думаю, что статья с положенной задачей более чем справилась, ибо что хотели — то и получили.
Это было трендом года 4 назад.
Супер! Спасибо за статью о Питоне.
P.S> для слова "dispatcher" есть замечательный перевод на русский: ДИСПЕТЧЕР
1) Регистрируем нового бота, получаем токен
2) при обращению к api получаю ответ: {«ok»:false,«error_code»:404,«description»:«Not Found»}
Вопрос: для работы с api нужен ssl сертификат на машине? можно самоподписанный? На какое имя он (сертификат) должен быть выдан?
2. У Вас, скорее всего, неправильно подключен токен api. Проверьте всё ещё раз.
2) через curl -F«url=https://my_ip:443/my+token/» -F«certificate=@public.pem» api.telegram.org/my_token/setWebhook после установки ssl
3) из python
ощущение, что я что-то не установил для обращения к нему
Покупаем автомобиль без одного болта, болт и ключ. Вкручиваем болт. Поздравляем, вы собрали свой автомобиль.
А на node.js можно такое написать?
вопрос такой:
- в request.session_id пишем имя своего бота?
- и в начале дана Обёртка Dialogflow для Python — для чего это нужно?
- для pycharm установил apiai, а json не нашел, нужно ли его устанавливать и где найти?
- нужно ли подключать Телеграм через Inegration в DialogFlow?
- обязательно ли нужно заполнять разделы в Small Talk Customization Progress? Или должно работать и так?
спасибо
2. Чтобы легче работать с их API. Т.к. в прошлом Dialogflow назывался ApiAI, но когда его купил гугл, то переименовали в Dialogflow, а вот пакеты которые остались на гитхабе — остались со своими старыми названиями.
3. Json устанавливать не нужно, он входит в библиотеку стандартных модулей питона.
4. Не нужно.
5. Это уже по желанию, если вы хотите придать боту «изюминку».
Я правильно понимаю, что бот не обучается сам, а может лишь отвечать на знакомые ему вопросы?
Если речь о том, нужно ли вручную составлять правило, определяющее в какой intent отправить пользователя — нет, классификатор intent-в тут обучается автоматически.
Если о том, нужно ли вручную разбивать обучающую выборку на отдельные intent-ы — да, кластеризовать (например) готовые диалоги автоматически оно не может.
UnicodeDecodeError: ‘utf8’ codec can’t decode byte 0xe7 in position 7: invalid continuation byte
Это связано с форматом часового пояса (в Windows), который отсылается в запросе на сервер Dialogflow
(у меня был "RTZ 2 (зима)")
После явного указания часового пояса все становится ОК:
request.time_zone = "GMT+3"
Используя Python 3.6 такой ошибки нет
«ИИ» выбирает ответы из базы вопросов/ответов, если в базе вопроса нет, то «ИИ» ищет что-то похожее с похожими словами и даёт ответ. Этот ответ Вы потом отмечаете как «правильный/неправильный». И к вопросам, которые непонятны «ИИ», Вы можете задать ответы. Верно? Так оно работает?
Возможно, вопрос глупый. Но что есть «обучение» в контексте этого топика?
Настройка классификатора, определяющего, к какому intent-у отнести вопрос, похоже.
выбирает ответы из базы вопросов/ответов, если в базе вопроса нет, то «ИИ» ищет что-то похожее с похожими словами и даёт ответ
Скорее выделяем признаки из вопроса — потом определяем классификатором, какому классу соответсвуют такие их значения. Ну, если там внутри не kNN :-)
Туповат как пробка, пришлось добавить свои костыли для поддержания беседы
response = 'Получил Ваше сообщение: ' + str(update.message.text)
Один запрос к API — 1 агент
Можно попробовать перенести функционал отдельных агентов к главному, читайте доки Dialogflow.
Добавляем предустановленного агента, задем экспортируем его.
Выбираем основного агента с тем токеном с которым работаем и импортируем к нему который хотим добавить.
Вопрос, возможно, не совсем по теме, но буду признателен за ответ. Хочу, кроме сообщений, чтоб бот какие-то действия поддерживал (например, «перегрузи сервак, бот!»). Есть ли возможность для бота различать пользователей, что ему пишут? Например, по id телеграм. Вопрос второй: известно ли, что будет если запустить второй инстанс бота? Отказ от телеграм на авторизацию для второго инстанса или какие-то блокировки и т. д.?
Вопрос третий: можно ли кроме текста отдавать какие-то кнопки для пользователя, например: «не совсем понял запрос: хотите А(кнопка_а) или Б(кнопка_б)?».
2. Никаких отказов быть не должно, хотя и не проверял.
3. Можно. Опять же таки, читайте доки по телеграмм боту.
В3 — лучше читать не документацию, там этого не разжевано, а примеры из examples в репозитории пакета на github — есть примеры с кнопками.
Сперва сам все написал, потом копировал код, все равно, одно и то же, здаровается, но потом молчит))
response = responseJson['result']['fulfillment']['speech'] # Разбираем JSON и вытаскиваем ответ
на
response = responseJson['result']['fulfillment']['messages'][0]['speech']
А в dialogflow новую строку заводить через Shift+Enter, то текст в чат будет падать не одной строкой а разбитым по строкам.
Я например учу бота отдавать мне всякие ссылки или сниппеты кода — очень полезно получается.
Скажите пожалуйста, а как добавить бота в чат? Вернее добавить так, чтобы при обращении из чата к боту username привет, как дела? Он отвечал. Почем-то бот не работает, если добавить его в существующий чат телеграмм.
Старая тема, дату видел, но т.к. ответа нет, решил ответить.
Чтобы бот видел сообщения в группах, через BotFather нужно дать команду /setprivacy, нажать на своего бота и дальше нажать Disable (отключить).
'Enable' — your bot will only receive messages that either start with the '/' symbol or mention the bot by username.
'Disable' — your bot will receive all messages that people send to groups.
Current status is: ENABLED
Если «Включить» — ваш бот будет получать только сообщения, начинающиеся с символа «/» или упоминающие бота по имени пользователя.
Если «Отключить» — ваш бот будет получать все сообщения, которые люди отправляют в группы.
Текущий статус: ВКЛЮЧЕНО
Если chat_id меньше нуля <0 — это группа, иначе личные сообщ. с одним юзером.
Проверить обращение можно
'@myusernamebot' in msg
if update.message.chat_id < 0 and bot.get_me().username in update.message.text:
# работаем
else:
# игнорируем и ничего не делаем
Но за статью спасибо!
Обучаемый Telegram чат-бот с ИИ в 30 строчек кода на Python