Как написать скрипт для переписки в БроБоте?

58

%d1%87%d0%b0%d1%82%d0%b1%d0%be%d1%822

В этой статье мы расскажем, как можно написать скрипт для переписки в Боте. Для написания скрипта потребуется определенный навык программирования на каком-либо языке. Если у вас с этим сложности, то вы можете написать нам на почту hello@brobot.ru, и мы вам поможем. Но услуга написания скрипта платная и предоставляется за 1000 рублей минимум, в зависимости от желаемой сложности.

Итак как работает скрипт?

В JS-скрипте нужно определить две функции: getAnswer и getTemplates.

getAnswer()

getAnswer() получает на вход историю переписки, возвращает строку ответа или null, если бот не имеет ответа (в этом случае ответить можно будет вручную на вкладке «Переписка»). История передается в виде объекта, основные методы которого:

size() возвращает количество сообщений в чате
get(index) возвращает сообщение чата по индексу (нумерация с нуля)
last() последнее сообщение в чате
externalContact() возвращает объект с информацией о собеседнике
localContact() возвращает объект с информацией об анкете, на которою пришло сообщение
unansweredMessages() последние входящие сообщения, на которые не было ответа
getMessagesFromExternalContact() все входящие сообщения чата
getMessagesFromLocalContact() все исходящие сообщения чата

У объекта «сообщения» есть такие методы:

isIncoming() является ли сообщение входящим
isOutgoing() является ли сообщение исходящим
getContent() текст сообщения

Для отладки у getAnswer есть второй аргумент — log. На нем можно делать так:

log.info("No message id found");

Cообщение пойдет в файл log.txt в папке с ботом.

getTemplates()

getTemplates должна возвращает массив имен кофигурируемых шаблонов скрипта. Если у скрипта есть шаблоны (getTemplates вернула непустой массив), значения шаблонов пользователь задает в интерфейсе при настройке задания. В процессе работы все значения {имя_шаблона} заменяются на сконфигурированые значения.

Пример

function getTemplates() {
  // тут указывается список шаблонов, используемых в сообщениях ниже
  // например: return ["шаблон1", "шаблон2", "шаблон3"];
  // если шаблонов нет, то просто: return [];
  return ["link"];
}

function getNextAnswer(chislo_otpravlennih) {
  // здесь задаем последовательность ответов
  // можете сделать необходимое количество ответов в формате: case X: return "ответ";
  // где X - это количество УЖЕ отправленных сообщений в истории переписки
  // то есть case 0 - это самый первый ответ, case 1 - это второй ответ и тд
  // не забывайте, что можно использовать синонимы (как в случае case 0) и шаблоны ({link} в случае case 2)
  switch (chislo_otpravlennih) {
    case 0: return "{Привет!|Доброго времени суток!}";
    case 1: return "Извини что так вот пишу, но мы тут набираем лётчиков в команду в новой игре.";
    case 2: return "Хорошо, вот тут обзор игры {link}, посмотри, почитай.";
    case 3: return "Окей, если надумаешь зарегистрироваться, напиши потом ник в игре, добавлю в друзья.";
  }
  // эту строчку надо оставить
  return null;
}

function getAnswer(hist) {
  // это основная функция скрипта с алгоритмом, тут можно ничего не менять
  var otpravlennie = hist.getMessagesFromLocalContact();
  var chislo_otpravlennih = otpravlennie.size();
  var otvet = getNextAnswer(chislo_otpravlennih);
  if (otvet === null)
    return null;
  else if (chislo_otpravlennih > 0 && otpravlennie.get(chislo_otpravlennih - 1).content().trim() == otvet.trim())
    return null;
  else return otvet;
}

Если у вас есть вопросы, задавайте их в комментариях к статье, мы будем ее дополнять и развивать.

  • Помогла ли Вам эта статья?
  • Да   Нет

Сохраните статью, чтобы не потерять:


Присылайте нам кейсы своих успешных проектов с БроБотом и мы поделимся с Вами безлимитным тарифом! Я хочу бесплатный анлим!

Комментарии

  • Ответить

    Андрей Кароев, 17 октября, 2015 Ссылка

    Хотел проверить скрипт примера в деле — тут же ошибка «содержит ошибку Input length = 1», причём дважды. В чем дело?

    • Ответить

      Команда BroBot, 17 октября, 2015 Ссылка

      Попробуйте сохранить файл в кодировке UTF-8. Если не поможет, пришлите нам на почту hello@brobot.ru файл, который вы создали.

      • Ответить

        Андрей Кароев, 20 октября, 2015 Ссылка

        Да, спасибо, дело было в кодировке. А вот касательно метода last(). Он, как я понимаю, возвращает объект «сообщение», из которого в свою очередь можно выудить текст методом GetContent(). Или что-то неверно?

        • Ответить

          Команда BroBot, 20 октября, 2015 Ссылка

          В недавнем обновлении кодировка уже не вызывает проблем. Касаемо last() все верно, только getContent() с маленькой буквы, не ошибитесь.

  • Ответить

    Андрей, 18 октября, 2015 Ссылка

    Скажите пожалуйста, а можно сделать так чтобы когда человек отвечал мне в вк, бот отправлял ему картинку? Тоесть можно в JS-скрипт вставить ссылку на картинку и чтобы у человека сразу открывалась картинка (как в браузере, не переходя по ссылке)

  • Ответить

    Василий, http://invest-free.ru18 октября, 2015 Ссылка

    Немного не понял. А как делать ответ в зависимости от ответа собеседника?
    К примеру, я спрашиваю сначала у человека разрешение, интересна ли ему информация, которую предлагаю. Как сделать остановку алгоритма, если он говорит «нет»?

    • Ответить

      Команда BroBot, 19 октября, 2015 Ссылка

      Если из getAnswer() вернуть null, то скрипт ничего не ответит (но даст возможность ответить вручную, что можно проигнорировать). Соответственно вам в скрипте надо проанализировать переписку и решить, ответить что-нибудь или нет.

  • Ответить

    Олег, 10 ноября, 2015 Ссылка

    Хочу сделать простенький бот. Что бы в групповом чате бот реагировал только тогда, когда обращение идет к нему. К примеру, имя бота «Бот»:
    Олег: -Привет народ.
    Ваня: -Привет.
    Саша: -Привет.
    Петя: -Бот, как дела?
    Бот: -Хорошо.

    Такое вообще возможно реализовать, если да то как? Я изучал с++, должен достаточно легко понять (джава очень похож), просто давненько в нем не кодил)

    • Ответить

      Команда BroBot, 10 ноября, 2015 Ссылка

      Возможно, но сейчас можно будет сделать только так, что все сообщения без обращения будут ожидать ручного ответа (то есть совсем проигнорировать сейчас не получится).

  • Ответить

    Ulala, 13 декабря, 2015 Ссылка

    Еще не очень разбираюсь в программировании, но можно ли сделать то же самое на Python, и будет ли прога поддерживать этот скрипт?

    • Ответить

      Команда BroBot, 14 декабря, 2015 Ссылка

      Нет, на питоне нельзя. Мы можем помочь написать скрипт, стоимость от 1500р в зависимости от сложности скрипта.

      • Ответить

        Олег, 8 июня, 2016 Ссылка

        Можете написать самый простейший скрипт?Или кто написал скрипт киньте мне на почту плиз..Я вообще в этом не разбираюсь.oleg2002anisimov@mail.ru

  • Ответить

    Андрей, 13 декабря, 2015 Ссылка

    Здравствуйте! Подскажите пожалуйста. Не как не могу написать самый простейший для бота скрипт который бы просто при каждом входящем сообщении в ВК отвечал пользователю глупо матами. Не как не могу понять как написать такой скрипт. Знаю у знакомого стоит Бро Бот и у него он постоянно матерится..чтобы я не написал ему в вк. Как сделать так же? Пожалуйста подскажите.

    • Ответить

      Команда BroBot, 14 декабря, 2015 Ссылка

      Добрый день, услуга по написаний скрипта у нас от 1500р в зависимости от сложности. Напишите нам на почту, если интересно.

  • Ответить

    Ольга, 16 декабря, 2015 Ссылка

    А как боту добавить диалогов( Простите если докапываюсь, крч у меня одна беседа где бот от моей странички пишет, но я хочу добавить ещё чтоб контролить его, и писать от его именни( Помогите плииз

    • Ответить

      Команда BroBot, 20 декабря, 2015 Ссылка

      Напишите нам в почту более подробно, пожалуйста. Постараемся помочь.

      • Ответить

        FedrBodr, https://vk.com/fedrbodr8 февраля, 2016 Ссылка

        Приветствую!
        Я не совсем понял из статьи можно ли настроить бота на ответ по ключевому слову.
        Например
        Бот — Привет как дела?
        А) вариант:
        Человек — Ничего
        Бот — Тогда может хочешь развлечься — вот те ссылка на на на.
        Б) вариант:
        Человек — Достали
        Бот — Прости бро больше не побеспокою.

        • Ответить

          Команда BroBot, 10 февраля, 2016 Ссылка

          Наиболее простой способ — сделать это в обучающемся боте.

  • Ответить

    Фёдор, 28 февраля, 2016 Ссылка

    А можно совместить скрипт с обучаемым ботом?

    • Ответить

      Команда BroBot, 4 марта, 2016 Ссылка

      Нет, со встроенными вариантами переписки совместить нельзя.

  • Ответить

    Владимир, 1 марта, 2016 Ссылка

    У меня не работает функция log.info(«No message id found»);

    Ошибка:
    ReferenceError: «log» is not defined

  • Ответить

    Orlean, 25 марта, 2016 Ссылка

    Что именно и в каком виде возвращается при externalContact()? Никак не могу допереть, как проверить.

  • Ответить

    Владимир, 15 апреля, 2016 Ссылка

    Где можно получить информацию о работе с объектами, возвращаемыми externalContact()? А конкретней, как я могу получить информацию о имени собеседника?

    • Ответить

      Команда BroBot, 19 апреля, 2016 Ссылка

      externalContact().getAlias() можно попробовать. Кроме имени и города ничего там нет. Еще возраст, но он часто отсутствует и вероятно будет убран впоследствии.
      А вообще если нужно имя вставлять, то лучше {buddyname} использовать

  • Ответить

    Олег, 16 апреля, 2016 Ссылка

    А что возвращает localContact ? какой обьект, какая в нем информация есть? Не хватает более детальной информации.

    • Ответить

      Команда BroBot, 19 апреля, 2016 Ссылка

      Ежели Вам надо имя вставлять куда-то, то лучше {buddyname} юзать

      • Ответить

        Олег, 23 апреля, 2016 Ссылка

        Нет не надо мне имя, хочу знать что могу использовать при создании скрипта

        • Ответить

          Команда BroBot, 21 июля, 2016 Ссылка

          поддержку оказываем через почту support@brobot.ru, тут неудобно очень и сюда редко смотрим, уж простите, друзья.

  • Ответить

    Slava, 14 мая, 2016 Ссылка

    Как сделать так, что бы бот отвечал по-порядку заготовленные фразы, начиная с case 0: return, а потом дойдя до последней фразы, начинал писать рандомно те-же фразы только не по-порядку, и что бы бот реагировал на все что ему пишут в чате (смайлы, стикеры, буквы, символы, знаки)

    • Ответить

      Команда BroBot, 21 июля, 2016 Ссылка

      поддержку оказываем через почту support@brobot.ru, тут неудобно очень и сюда редко смотрим, уж простите, друзья.

  • Ответить

    Slava, 14 мая, 2016 Ссылка

    По вашему примеру скрипта, там пишет по-порядку, а потом начинает повторять последнюю фразу(

    • Ответить

      Команда BroBot, 21 июля, 2016 Ссылка

      поддержку оказываем через почту support@brobot.ru, тут неудобно очень и сюда редко смотрим, уж простите, друзья.

  • Ответить

    Аркадий, 26 мая, 2016 Ссылка

    а можно ли писать скрипт … нормальный который будет реально отвечать на вопросы?
    а не тупо писать бред в зависимости от количества вопросов

  • Ответить

    Александр, 4 июня, 2016 Ссылка

    Скажите, а есть ли возможность — отсылать из javascript запрос на php?

  • Ответить

    Ян, 28 июня, 2016 Ссылка

    У меня вопрос,как сделать допустим
    Человек: «б,скажи текст»
    Бот превращает текст в аудио текст

    • Ответить

      Команда BroBot, 29 июня, 2016 Ссылка

      Сложный вопрос. Спросите на форуме — там скорее всего помогут.

  • Ответить

    BalMexO, https://www.youtube.com/c/BalMexOShow6 июля, 2016 Ссылка

    Есть ли готовй скрипт чтобы бот мог общятся с людми
    пример!
    Юзер: Бот Привет
    Бот: Привет Юзер
    Юзер: Бот Инфо
    Бот: картинка (с инструкцией)
    Юзер: Бот 2+2
    Бот: 4
    Юзер: Бот Няш
    Бот: картинка (бот находит картинку няшки)

    Примерно Такой
    И чтобы можно было добавлять ищо варианты 😀

  • Ответить

    Василий, 8 июля, 2016 Ссылка

    Здравствуйте! Как можно сделать, что бы на сообщения бот не отвечал, а пересылал их в л.с. профиля-менеджера? Заранее благодарен за ответ!

    • Ответить

      Команда BroBot, 21 июля, 2016 Ссылка

      написали вам в почту

      • Ответить

        Вика, 14 августа, 2016 Ссылка

        Если можно — напишите мне тоже на почту как это сделать. Спасибо!

        (Здравствуйте! Как можно сделать, что бы на сообщения бот не отвечал, а пересылал их в л.с. профиля-менеджера? Заранее благодарен за ответ!)

  • Ответить

    Николай, 29 августа, 2016 Ссылка

    Доброго времени суток! Как можно научить бота отвечать по словам. Например:
    Список моих команд!
    1. 🙀 Демотиватор — Делает про тебя демотиватор.
    2. 🔞 Секс поза — Кидает тебе случайную секс позу.
    3. 📇 Новости — Сообщает последние новости.
    4. 😋 Шутка — Весело шутит.
    5. 🌍 Факт — Интересный факт.
    6. 🔦 Загадка — Задает тебе загадку.
    ——————————————————————————
    Чат:
    Пользователь:🔦
    Бот: Зимой и летом одним цветом.
    П: 🔞
    Б: 69.

  • Ответить

    Yasuro, 4 сентября, 2016 Ссылка

    Здравствуйте. Как создать переменную или объект, который будет храниться на протяжении всего диалога?

  • Ответить

    Евгений, 3 октября, 2016 Ссылка

    Здравствуйте!

    Имеется 10 сообщений, которые необходимо отправить поочередно.
    (Интервал отправки сообщений от 10 до 60 минут)

    Пример:
    БроБот: Сообщение №1
    Пользователь: ответ
    БроБот: Сообщение №2
    Пользователь: ответ
    БроБот: Сообщение №3
    Пользователь: ответ
    и т.д.

    В настройках переписки нашел только «интелектуальную переписку», обучение. (Но это не требуется)
    Что необходимо сделать, чтобы получить желаемый результат на выходе?
    Важно: может быть так, что между сообщениями БроБота пользователь будет успевать несколько сообщений, очередность сбиваться не должна.

    • Ответить

      Команда BroBot, 13 октября, 2016 Ссылка

      Напишите пожалуйста на форум с подробным описанием проблемы. В комментариях больше не саппортим.

  • Ответить

    Создаем чат бота вк с командами | Бесплатная программа бот для ВКонтакте (Vk) и Одноклассниках (Ok)., http://brobot.ru/chatbot2/14 ноября, 2016 Ссылка

    […] одной из прошлых статей мы создавали простой скрипт для […]

  • Ответить

    Иван, 26 декабря, 2016 Ссылка

    Привет!
    Используем страницы Вк для продаж, приемов заказов. Обработали много лидов, оформили несколько тысяч продаж. Стоит вопрос об автоматизации. Так как переписки ведутся с одной целью, то они достаточно однотипны (используем скрипты и быстрые вразы).
    Вопрос: возможно ли, используя нашу огромную базу переписок, сделать так, чтобы бот делал эту работу вместо человека?

    • Ответить

      Команда BroBot, 26 декабря, 2016 Ссылка

      Естественно. Даже нужно)

      • Ответить

        Иван, 11 января, 2017 Ссылка

        Можно заказать у Вас такую услугу? Свяжитесь, пожалуйста со мной.

        • Ответить

          Команда BroBot, 14 января, 2017 Ссылка

          Мы не пишем скрипты. Спросите на форуме — там были умельцы.

Прежде чем оставить комментарий:
  • - попробуйте воспользоваться поиском. На 80% вопросов уже есть ответы.
  • - Обязательно посетите наш форум. Скорее всего, сообщество БроБотов даст ответ намного быстрее нас ;) Посетить форум

Каждый раз, когда кто-то подписывается на БроБота, он радует какую-нибудь девушку лайком.

Подписчиков на статьи: 2045

Все возможности бота
вы получаете бесплатно!


Попробовать бесплатно


Все права защищены © 2013-2016
Наши контакты
Почта support@brobot.ru