Чат-бот: диалоги

Тема в разделе "Бот форума", создана пользователем admin, 6 ноя 2016.

  1. admin

    admin Администратор Команда форума

    В отличии от простых правил и команд, которые задаются одной строкой, диалоги - это последовательность правил или команд, где каждая следующая команда является продолжением предыдущей. Например, игра казино реализована посредством диалога.

    Чтобы вы понимали разницу между правилами и диалогами.
    Вот обычное правило:
    бот, поиск фильмов
    А вот простейший диалог в два шага:
    бот, обмен криптовалют
    В первом случае все данные передаются одним сообщением (см. правила чат-бота), во-втором требуется подтверждение обмена.
    Формат диалогов такой:
    Код:
    bot|что;какие;есть|нового;новости|news
    еще;ещё;все;всё|news
    
    bot|казино|casino
    1;кости;2;орел;3;наперстки|casino
    ;<указываем сумму ставки и валюту>|casino
    ;<пишем ответ>|casino
    еще;ещё;другая;новая;снова;заново;повтор|casino
    
    bot|обменяй;поменяй|exchanger
    да;ok;ес;оки|exchanger
    
    Диалоги между собой разделены двумя переносами строки, а шаги в диалоге - одним переносом строки.

    Алгоритм работы диалогов.
    Сначала бот ищет совпадение с первым шагом диалога, например, "бот, казино". Если совпадение найдено, за пользователем закрепляется данный диалог и бот ожидает от него сообщения, совпадающее с правилом второго шага, потом третьего и т.д. Когда шаги заканчиваются или истекло время ответа (обычно 1 минута на каждый шаг, задается в функции) диалог обрывается.

    Рассмотрим на примере игры казино (см. полную справку по казино, там подробно расписан алгоритм действий), где на втором шаге надо выбрать игру: кости, орел или наперстки. Пользователь отвечает, например, "3" или "рулетка", получив корректный ответ бот предлагает выбрать сумму и валюту ставки, пользователь перемещается на 3-й шаг. Если ответ некорректный, например, 4, бот пишет, что не понял вас и зацикливает на втором шаге, пока правильно не введете.
    Можно перепрыгивать несколько шагов, например, в одном сообщении сразу указать и игру и ставку командой "бот казино игра 3 ставка 5000 сатош" и тогда пользователь переместится сразу на 4-й шаг, где нужно указать ответ. Напоминаю, что бот реагирует только на ключевы слова, т.е. можно писать боту как в более произвольной форуме, например, "бот, давай сыграем в казино, в игру кости, ставлю 5000 сатош" так и более короткой "бот казино кости 5000 сатош".
    После того, как сыграли, вы можете повторить игру, написав "еще" и бот переместит вас на третий шаг, где нужно указать ставку, либо вы можете написать "еще, ставка 5000 сатош" и бот переместит вас на 4 шаг, где нужно указать ответ.

    Более простой пример: последние новости. Этот функционал предусмотрен для интеграции бота с мессенджером Телеграм, чтобы не заходя на форум вы могли просмотреть последние новости и кликнуть на интересующую. При команде "бот, что нового" или "бот, есть новости?" включается диалог и бот дает ссылку на последнюю новость, зацикливая вас на втором шаге, где командой "еще" вы просматриваете остальные новости.
    Бот, просмотр новостей

    Можно добавлять диалоги без использования функций, просто для развлечений.
    Код:
    bot|какая;узнай|погода;погоду|*, в каком городе?
    |*, мне лень;*, спроси у Яндекса
    
    Здесь пользователь спрашивает у бота погоду, бот спрашивает "в каком городе?", пользователь пишет любой город, бот отвечает "мне лень" или "спроси у Яндекса". Шагов может быть сколько угодно много, по идее, бот может поддерживать "осмысленный" диалог. Варианты своих диалогов вы можете размещать здесь или отправлять мне в ПМ.
     
    Nimogsm нравится это.
  2. Иванович

    Иванович Постоянный пользователь

    вообще понятно все впринципе.Бот иногда (не всегда) не воспринимает фразы со знаками препинания,но если пользоваться только пробелом,понимает прекрасно..
     
  3. admin

    admin Администратор Команда форума

    Должен и знаки препинания понимать, приведи пример.
     
  4. Иванович

    Иванович Постоянный пользователь

    ну к примеру: бот,казино 3, 5000 сатош не всегда отвечает..а если просто набираешь: бот казино 3 5 сатош то как правило сбоев нет,если одновременно никто в чате его не треплет)