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

Просмотров: 44 122. 68 комментариев

В этой статье мы расскажем, как можно написать скрипт для переписки в Боте. Для написания скрипта потребуется определенный навык программирования на каком-либо языке. Если у вас с этим сложности, то вы можете написать нам на почту 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.ru - 18 октября, 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/fedrbodr - 8 февраля, 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} использовать

      • Ответить

        Алёна, - 20 августа, 2017 Ссылка

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

        • Ответить

          Алёна, - 20 августа, 2017 Ссылка

          уже сама получила ответ на свой вопрос вызвав Object.keys(hist.externalContact()); чтобы получить свойства и методы объекта. нужна мне была функция getAge

  • Ответить

    Олег, - 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/BalMexOShow - 6 июля, 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)., https://brobot.ru/chatbot2/ - 14 ноября, 2016 Ссылка

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

  • Ответить

    Александр, - 16 декабря, 2016 Ссылка

    Хочу сделать скрипт для того чтоб мой бот смог отвечать на сообщения приходящие в группу, как это сделать?

  • Ответить

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

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

    • Ответить

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

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

      • Ответить

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

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

        • Ответить

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

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

  • Ответить

    Настройка параметров переписки | Бесплатная программа бот для накрутки ВКонтакте, Инстаграм и Одноклассников., https://brobot.ru/42b42a1b/ - 28 февраля, 2017 Ссылка

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

  • Ответить

    Илья, - 16 апреля, 2017 Ссылка

    Пожалуйста, можете скинуть оч. простой скрипт, если я ему написал привет то ответить Добрый день, мне нужно понять, как работает это все, а у вас написаны какие-то команды только и сразу сложный скрипт

  • Ответить

    Антон, - 6 мая, 2017 Ссылка

    Привет!
    Как сделать, чтобы бот отвечал только в конкретной группе, а не во всех диалогах контакта?

  • Ответить

    Андрей, - 7 мая, 2017 Ссылка

    Можете скинуть готовый скрипт для БроБота.

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

пять × один =


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