Содержание

Как написать простого бота для ВК и Телеграм / Хабр

Мы уже упоминали, как мы предоставляем бесплатные VPS для студентов, чтобы они учились программировать. Один из наших подопечных Павел сделал простеньких телеграм и ВК ботов для FAQ. Они очень простые, тем не менее, начинающему программисту не помешают комментарии опытных ребят — поэтому публикуем его рассказ — Павел будет рад, если в комментариях ему дадут советы.

Я — студент Новосибирского Государственного Технического Университета, не так давно мы с парочкой моих друзей реализовали площадку для продвижения проектов во всех возможных областях научной деятельности. Мы помогаем «сводить» заинтересованных преподавателей и студентов всех ВУЗов Сибири, чтобы проектная научная деятельность развивалась по территории Сибири и РФ.

Студенты и преподаватели часто обращались ко мне с вопросами и я решил автоматизировать этот процесс, написав ботов для ВК и Телеграм.

На вход они принимают сообщения, а на выходе выдают либо текстовый ответ, либо специальную структуру данных, замаскированное под сообщение: инлайновые или висячие клавиатуры.

Я использовал Python версии 3.6  просто потому, что он самый простой для меня. Кодил в PyCharm Community Edition. Весь код опубликован на GitHub. Удачи!

1. Предварительные приготовления для телеграм-бота


1.1 Получение токена от BotFather в телеграмме

Первым делом, нам нужно «зарегистрировать» нашего бота в Telegram.

Для этого, в поисковике телеги ищем BotFather

далее, делаем всё также, как на скриншотах:

После нажимаем на команду /newbot или же прописываем вручную.

Надо придумать уникальное имя для бота, придумываем и получаем соответствующий токен.

1.2 Переходим в любой редактор кода и создаем файл config.py

Перед созданием данного файла, нам нужно выбрать директорию, в которой будет реализован весь функционал бота. Если вы используете PyCharm Community/Professional Edition, то предлагаю просто создать новый проект, и писать там весь функционал бота.

Если Вы используете любой другой редактор, такой как Sublime Text 3, например, то Вам самостоятельно придётся создать директорию, создать виртуальное окружение, и работать из консоли со всеми предварительными тестами. Во избежание трудностей, предлагаю скачать продукт PyCharm Community Edition от компании JetBrains, с помощью данного продукта можно обойти действия, описанные в предыдущем абзаце, так как данный продукт сделает их самостоятельно, от Вас потребуется только указать путь до интерпретатора Python в конфигурациях PyCharm, с помощью которого и будет работать Ваш бот.

В данном файле (config.py) будет храниться только токен, который нам дал BotFather, поэтому пишем:

token = "Здесь хранится Ваш токен".

1.3 Cоздаём главный файл — bot.py

Делаем cледующие импорты и для соответствующих библиотек, в консоли прописываем закоментированные строчки:

import config
import telebot # pip install telebot
from telebot import types # pip install pyTelegramBotAPI

Далее, нам необходимо использовать наш токен:

bot = telebot. TeleBot(config.token)

Этими действиям мы устанавливаем то, что мы будем накручивать функционал именно для того бота, для которого нам и дал токен BotFather.

2. Разворачиваем функционал

Начнём с того, что для того, чтобы пользователю запустить бота, нам необходимо прописать команды для старта они могут быть разными, например, /start или /go и вообще любыми, какие Вы сочтёте нужными.

Для обработки команд нам потребуется

message_handler, с помощью которого и будет реализован весь функционал обработки команд для старта и завершения, если Вы сочтёте нужным добавить завершение. Как только придёт команда /go или /start, message_handler с соответствующими командами сравнит, совпадают ли строки и если совпадают, то обработает соответствующей функцией.

Каждая функция, как и в примере сейчас, должна принимать один параметр — сообщение от пользователя, которое будет обработано соответствующей функции «в обёртке» декоратора. А также, каждая функция (или связка функций) должна возвращать соответсвующее сообщение от бота.

Итак:

@bot.message_handler(commands=['go', 'start'])  # Обработка команды для старта
def welcome(message):
    sti = open(path+'stiker.tgs', 'rb')
    bot.send_sticker(message.chat.id, sti)
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item3 = types.KeyboardButton("Приложения")
    item2 = types.KeyboardButton("Мероприятия")
    item1 = types.KeyboardButton('О нас')
    markup.add(item1, item2, item3)
    bot.send_message(message.chat.id,
                     "Добро пожаловать, {0.first_name}!\\n\\nЯ - <b>{1.first_name}</b>, бот команды Projector в НГТУ, "
                     "создан для того, "
                     "чтобы помочь Вам влиться в нашу команду,"
                     "просто узнать что-то о нас или же просто пообщаться и весело провести время.\\n\\n"
                     "<i>Have a nice time</i>".format(
                         message.
from_user, bot.get_me()),                      parse_mode='html', reply_markup=markup)

В этой функции реализовано сразу два действия: отправка приветственного сообщения и создание встроенной клавиатуры — ReplyKeyboardMarkup, которая будет открыта, пока мы не завершим выполнения бота соответсвующей командой. Об этом будет сказано ниже.

Итак, пройдёмся по строчкам:

В строках 20-21: открывается стикер по тому пути к директории, в которой я его сохранил, после чего отправляется.

Строки 22-28: создаем встроенную клавиатуру, добавляя туда три элемента.

Строки 30-37: описано создание и отправка приветственного сообщения

Как вы можете заметить, метод send_message в строке 30, позволяет использовать HTML, для форматирования текста.

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

# RUN
if __name__ == "__main__":
    try:
        bot.
polling(none_stop=True)     except ConnectionError as e:         print('Ошибка соединения: ', e)     except Exception as r:         print("Непридвиденная ошибка: ", r)     finally:         print("Здесь всё закончилось")

Сделаем первый запуск! Для этого, в PyCharm-е нажмём зеленую кнопку старт в правом верхнем углу или же, можно запустить из консоли командой: python bot.py

Результат первого запуска:

2.1 Обработка нажатия на кнопки и создание inline keyboard

Так как любое сообщение — это текст, то мы будем обрабатывать именно текстовые сообщения.

Сделаем следующее и аналогично разберём по строчкам:

@bot.message_handler(content_types=["text"])
def go_send_messages(message):
    if message.chat.type == 'private':
        if message.text == 'Приложения':
            keyboard = types.InlineKeyboardMarkup(row_width=1)
            itemboo = types.InlineKeyboardButton(text="Тыщ на кнопку и ты уже в Google", url="<https://www. google.ru>")
            itemboo1 = types.InlineKeyboardButton('Рандомное число', callback_data='good2')
            itemboo2 = types.InlineKeyboardButton("Калькулятор", callback_data='bad2')
            itemboo3 = types.InlineKeyboardButton("Хочу узнать погоду в моем городе/стране", callback_data='good3')
            itemboo4 = types.InlineKeyboardButton("Как твои дела?", callback_data='bad4')
            keyboard.add(itemboo, itemboo1, itemboo2, itemboo3, itemboo4)
            bot.send_message(message.chat.id,
                             "{0.first_name}, окей, смотри, что у нас есть тут:\\n".format(message.from_user),
                             reply_markup=keyboard)
        elif message.text == "Мероприятия":
            one_markup = types.InlineKeyboardMarkup(row_width=1)
            ite1 = types.InlineKeyboardButton("Ближайшие мероприятия", callback_data="one")
            ite2 = types.InlineKeyboardButton("Проведенные мероприятия", callback_data="two")
            ite3 = types.
InlineKeyboardButton("Волонтерство на мероприятие", callback_data="three")             ite4 = types.InlineKeyboardButton("Действующие проекты в НГТУ", callback_data="fourth")             ite5 = types.InlineKeyboardButton("Мероприятия Межвузовского центра", callback_data="five")             one_markup.add(ite1, ite2, ite3, ite4, ite5)             bot.send_message(message.chat.id, "{0.first_name}, у нас <u>ежемесячно</u> проводится множество "                                               "мероприятий,\\nмы постарались разбить их на следующие составляющие:".format(                 message.from_user), parse_mode="html", reply_markup=one_markup)

Строка 339 — обработчик любых текстовых сообщений

Строка 341 предназначена для того, чтобы сказать, что если данное сообщение предназначено боту, то сравни эту строку с теми, что здесь обрабатываются и отправь ответ.

Строки 344 — 351 — создаём инлайновую клавиатуру InlineKeyboardMarkup и помещаем в эту клавиатуру 5 элементов, которые также можно будет обработать по установленной callback_data. Элементы данной клавиатуры будут расположены друг под другом, так как в строке 344, мы установили row_width = 1, что обозначает самую широкую грань одной кнопки, поэтому они и будут расположены друг под другом.

Строки 353-355 — отправляют текст, вместе с нашей Inline Keyboard.

В условиях ниже представлены аналогичные представления обработки сообщений.

Итак, сделаем запуск:

2.2 Обработка InlineKeyboardButton

Как было сказано выше, каждый элемент InlineKeyboardButton имеет параметр callback_data, и именно по этим параметрам будет обрабатываться каждая кнопка. Для этого нам потребуется обработчик инлайновой клавиатуры callback_query_handler.

@bot.callback_query_handler(func=lambda call: call.data in ['one', 'two', 'three', 'fourth', 'five'])  # Мероприятия
def callback_inline_one(call):
    try:
        if call.message:
            if call.data == 'one':  # Ближайшие мероприятия
                bot. send_message(call.message.chat.id,
                                 "Итак,<b>ближайшие мероприятия</b>:\\n\\n"  # Здесь будут ссылки ещё
                                 "Форум «Байкал»\\n"
                                 "Конкурс «Цифровой ветер»\\n"
                                 "PRONETI", parse_mode="html")
            elif call.data == 'two':  # Проведённые мероприятия
                bot.send_message(call.message.chat.id, "Вот список <b>проведённых мероприятий</b>:\\n\\n"
                                                       "МНТК\\n"
                                                       "Семинары по проектной деятельности\\n"
                                                       "Встреча с представителями предприятий", parse_mode="html")
            elif call.data == 'three':

Итак, разберём построчно:

Строка 269 — объявляем обработчик, который будет обрабатывать каждую из нажатых кнопок с использованием лямбда-функции

Строки 273-278 — В данном блоке if, мы просто обрабатываем сообщение и отправляем сообщение пользователю.

Строки 279-283 — Делают аналогичное действие, что и в предыдущем условном блоке.

и т. д.

Также, в данных блоках можно определить аналогичную инлайновую клавиатуру, только тогда придётся создать ещё один обработчик callback_data, аналогичный обработчику callback_query_handler, показанный на скриншоте выше.

Результат:

Так просто и обрабатываются inline keyboards.

3. Завершаем работу бота

Данная функция будет аналогичной функции обработки команд для старта бота, поэтому Вы сможете легко понять её функционал:

@bot.message_handler(commands=['stop'])  # Обработка команды для выхода
def bye(message):
    bye_Sti = open(path+'byeMorty.tgs', 'rb')
    hideBoard = types.ReplyKeyboardRemove()
    bot.send_message(message.chat.id,
                     "Досвидания, {0.first_name}!\\nМы, команда <b>{1.first_name}</b>, надеемся, что ты хорошо провел(а) время \\n\\n"
                     "Присоединяйся к нашей команде в <a href='<https://vk. com/projector_neti>'>vk</a>\\n"
                     "Наш <a href='<https://instagram.com/projector_neti>'>inst</a>\\n\\n"
                     "Напиши Координатору проектов (<a href='<https://vk.com/nikyats>'>Никите Яцию</a>) и задай интересующие тебя вопросы по <i>проектной деятельности</i>\\n\\n"
                     "Надеемся, что тебе ответят очень скоро \\n\\n"
                     "<u>Don't be ill and have a nice day</u> \\n\\n\\n"
                     "P.S.: Если есть какие-то пожелания или вопросы по боту, то напиши <a href='<https://vk.com/setmyaddresspls>'>мне</a>".format(
                         message.from_user, bot.get_me()), parse_mode='html', reply_markup=hideBoard)
    exit()

Здесь происходит следующее:

  1. Отправляется прощальный стикер.
  2. Закрывается встроенная клавиатура (строка 44).
  3. Отправляется прощальное сообщение.

Так как мы используем bot.polling, с параметром none_stop = True, то пользователь может снова вознообновить общение с ботом при помощи команды /start или /go, обработка которых показано в пункте выше.

Результат:

ВК БОТ

Перейдём к реализации бота Вконтакте, написанном на том же родном языке Python, его основное отличие от предыдущего в том, что он был написан с использованием ООП, а именно класса. Внешне, он выполняет ту же миссию. Сама библиотека для написания вк бота намного проще телеграмм бота, поэтому разобраться в ней самостоятельно не составит большого труда. Итак, начнём.

1. Предварительные подготовления

Установим следующие библиотеки по тем же технологиям:

import vk_api # pip install vk-api
import json   # pip install json
from vk_api.longpoll import VkLongPoll, VkEventType

▍1.

1 Получение токена для сообщества Вконтакте.
  1. На главной странице сообщества найти раздел «Управление»
  2. Работа с API
  3. Создать ключ. Выбираете нужные для вас пункты, которые будут доступны боту.

В итоге должно получиться примерно следующее:

Берем ключ и переходим в среду разработки и делаем следующее:

vk = vk_api.VkApi(token=
                  "Ваш_токен")

Далее — следующее:

longpoll = VkLongPoll(vk)

На этом, закончим подготавления.

2. Разворачиваем функционал

Первым делом создадим файл manage.py

Cоздадим прототип встроенной клавиатуры ( всё с помощью документации VkBotAPI ).

main_keyboard = {
    "one_time": False,
    "buttons": [
        [{
            "action": {
                "type": "text",
                "payload": "{\\"button\\": \\"1\\"}",
                "label": "О нас"
            },
            "color": "positive"
        }],
        [{
            "action": {
                "type": "text",
                "payload": "{\\"button\\": \\"2\\"}",
                "label": "Мероприятия"
            },
            "color": "positive"
        },
            {
                "action": {
                    "type": "text",
                    "payload": "{\\"button\\": \\"3\\"}",
                    "label": "Приложения"
                },
                "color": "positive"
            }
        ],
        [{
            "action": {
                "type": "text",
                "payload": "{\\"button\\": \\"4\\"}",
                "label": "Контакты"
            },
            "color": "primary"
        }]
    ]
}

Затем переводим её в формат json, как требуется в документации:

main_keyboard = json. dumps(main_keyboard, ensure_ascii=False).encode('utf-8')
main_keyboard = str(main_keyboard.decode('utf-8'))

Пример инлайн клавиатуры:

about_us_keyboard = {
    "inline": True,
    "buttons": [
        [{
            "action": {
                "type": "text",
                "payload": "{\\"button\\": \\"1\\"}",
                "label": "Основная информация"
            },
            "color": "positive"
        }],
        [{
            "action": {
                "type": "text",
                "payload": "{\\"button\\": \\"2\\"}",
                "label": "Чем мы занимаемся ?"
            },
            "color": "primary"
        },
        {
            "action": {
                "type": "text",
                "payload": "{\\"button\\": \\"3\\"}",
                "label": "Где мы находимся ?",
            },
            "color": "positive"
        }],
        [{
            "action": {
                "type": "text",
                "payload": "{\\"button\\": \\"4\\"}",
                "label": "Как попасть в команду ?",
            },
            "color": "primary"
        }],
        [{
            "action": {
                "type": "text",
                "payload": "{\\"button\\": \\"5\\"}",
                "label": "Контакты",
            },
            "color": "secondary"
        }],
        [{
            "action": {
                "type": "text",
                "payload": "{\\"button\\": \\"6\\"}",
                "label": "Задать вопрос руководителю проекта",
            },
            "color": "negative"
        }]
    ],
}

Не забываем все используемые клавиатуры переводить в формат json:

about_us_keyboard = json. dumps(about_us_keyboard, ensure_ascii=False).encode('utf-8')
about_us_keyboard = str(about_us_keyboard.decode('utf-8'))

Создадим функцию write_msg, для того, чтобы не мучиться с постоянной отправкой сообщений от бота:

def write_msg(user_id, message, key):
    vk.method('messages.send',
              {'user_id': user_id,
               'message': message,
               'keyboard': key,
               'random_id': random.randint(0, 2048)})

После создания всех прототипов, мы можем перейти к следующему шагу. ( к этому файлу мы позже вернёмся и доработаем обработку общения пользователя и нашего vk-бота )

▍2.1 Основной функционал (создаем файл vk_bot.py)

Мы не будем разрабатывать методы, которые будут выполнять, например, функцию парсинга времени или погоды, назовем их второстепенными. Я покажу лишь основной метод, который будет обращаться к этим второстепенным методам, для обработки тех или иных сообщений от пользователя. В конце статьи я выложу ссылку на свой GitHub, где Вы сможете самостоятельно просмотреть интересующий Вас функционал любого из метода. Итак:

Конструктор класса:

class VkBot:
    def __init__(self, user_id):
        self.USER_ID = user_id
        self._USERNAME = self._get_user_name_from_vk_id(user_id)
        self.my_str = ""
        self._COMMANDS = ["привет", "погода", "время", "пока"]
        self._inputMes = {"основная информация": answers.about_us1,
                          "чем мы занимаемся ?": answers.about_us2,
                          "где мы находимся ?": answers.about_us3,
                          "ближайшие мероприятия": answers.events1,
                          "проведённые мероприятия": answers.events2,
                          "волонтёрство на мероприятие": answers.events3,
                          "действующие проекты в нгту": answers.events4,
                          "мероприятия межвузовского центра": answers.events5
                          }

Последнее свойство класса — inputMes — это особый словарь, у которого значения ключей — это текст из файла answers. py, где я расположил текст в виде строк, поэтому, чтобы не загромождать код я и вынес основной текст в другой файл.

(Пример кода из файла answers.py)

events1 = "Итак,ближайшие мероприятия:\\n\\n" \\
          "Форум «Байкал»\\n"\\
          "Конкурс «Цифровой ветер»\\n"\\
          "PRONETI"
events2 = "Вот список проведенных мероприятий:\\n"\\
        "МНТК\\n"\\
        "Семинары по проектной деятельности\\n"\\
        "Встреча с представителями предприятий\\n"\\
events3 = "По поводу этого критерия напиши Илье (<https://vk.com/ki1337ki>)\\n"\\
        "А также, ты можешь заполнить анкету, благодаря которой,\\n"\\
        "с тобой лично свяжется один из руководителей направления\\n"\\
        "или координатор проекта (<https://vk.com/nikyats>)"

Итак, основной метод класса — это new_message, который принимает один параметр — message, который обрабатывается соответствующим условным блоком и возвращает какое -то значение обратно туда, откуда был вызван.

def _get_user_name_from_vk_id(self, user_id):
    request = requests.get("<https://vk.com/id>" + str(user_id))
    bs = bs4.BeautifulSoup(request.text, "html.parser")
    user_name = self._clean_all_tag_from_str(bs.findAll("title")[0])
    return user_name.split()[0]
def new_message(self, message):
    # self.my_str = " ".join(re.findall('[0-9]{2}', message))
    if message.lower() == self._COMMANDS[0]:
        return f"Привет, {self._USERNAME}!"
    elif message.lower() == self._COMMANDS[1] or message.lower() == "узнать погоду ":
        return self._get_weather()
    elif message.lower() == self._COMMANDS[2] or message.lower() == "узнать точное время ":
        return self._get_time()
    elif message.lower() == self._COMMANDS[3]:
        return f"До скорой встречи, {self._USERNAME}!"
    else:
        for key, value in self._inputMes.items():
            if message.lower() == key:
                return value
        return "Не понимаю тебя "

3. Возвращаемся в manage.

py и дописываем функционал

Теперь в первых строках нам необходимо проимпортить файл vk_bot. А также нам потребуется библиотека random.

import random # pip install random
from vk_bot import VkBot

После того, как мы объявили longpoll, дописываем основной функционал.

longpoll = VkLongPoll(vk)
try:
    for event in longpoll.listen():
        if event.type == VkEventType.MESSAGE_NEW:
            if event.to_me:
                bot = VkBot(event.user_id)
                if event.text.lower() == "о нас":
                    write_msg(event.user_id, "Немного о нашем проекте", about_us_keyboard)
                elif event.text.lower() == "мероприятия":
                    write_msg(event.user_id, "Что ты хочешь узнать?", events_keyboard)
                elif event.text.lower() == "приложения":
                    write_msg(event.user_id, "Посмотри, что есть здесь!", app_keyboard)
                elif event. text.lower() == "контакты":
                    write_msg(event.user_id, "По любым вопросам можешь обращаться к:", contacts_keyboard)
                elif event.text.lower() == "задать вопрос руководителю проекта":
                    write_msg(event.user_id, "У тебя есть возможность написать сообщение нашему Руководителю проекта",
                              go_answer)
                elif event.text.lower() == "калькулятор":
                    write_msg(event.user_id, "В разработке...", calc_keyboard)
                # elif event.text == " ".join(re.findall('\\d{2}', event.text)):
                #     write_msg(event.user_id, "Отлично, мы здесь", calc_keyboard)
                elif event.text.lower() == "как попасть в команду ?":
                    write_msg(event.user_id, "Напиши координатору проекта - Никите\\n"
                                             "или перейди на сайт проектной деятельности,\\n"
                                             "найди проект номер 612 и подай заявку", in_team)
                else:
                    write_msg(event. user_id, bot.new_message(event.text), main_keyboard)
except Exception as e:
    print(e)

Как можете заметить, в условных блоках if и elif — присутствует обработка тех сообщений, которые подразумевают под собой вывод инлайн или встроенной клавиатуры (в данном примере — выводятся только инлайн клавиатуры). Сюда также можно добавить более сложные обработки сообщений, после которых обработка будет метаться туда сюда по блокам if и elif. Таким образом бот будет работать, пока не «упадёт с ошибкой».

Другое дело обстоит с блоком else, здесь мы обращаемся как раз ко классу нашего Бота, после чего он аналогичным способом находит обработку сообщения и выводит результат. Это можно назвать вложенной обработкой, а так как вложенностей лучше избегать, то лучше использовать тот метод программирования бота, который как раз-таки реализован в телеграмм боте.

Заключение

Надеюсь, что после прочтения данной статьи, Вы как минимум поняли основной принцип создания своего Telegram или Vk бота, а как максимум — легко сможете написать своего бота.

Как вы можете видеть, создать его функционал очень просто, особенно, если вы знаете основы языка Python.

Весь код опубликован в моём профиле GitHub:

  • Телеграм Бот
  • Бот Вконтакте

Как написать Telegram-бота на Python — Tproger

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

Инструкция подойдет для новичков, которые знают Python на базовом уровне, пробовали писать код и установили на компьютер редактор кода.

Первый этап: подготовка проекта и развертывание окружения

Найдем в поиске Telegram BotFather — официального бота мессенджера, который создает другие боты и управляет ими. В интерфейсе выбираем /start, затем — /newbot, и следом задаем имя и адрес. В этой иструкции это будут Elbrus Reminder и elbrus_reminder_bot соответственно.

После этого BotFather пришлет сообщение с токеном и ссылкой на бот:

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

На время закроем Telegram и создадим на компьютере папку с именем проекта: например, reminder_bot. Откроем папку в среде разработки и создадим рабочий файл с понятным названием — bot.py.

Откроем терминал редактора кода и создадим для проекта новое окружение. В среде разработки с помощью команды python -m venv .venv создадим папку с окружением .venv.

Если окружение не активировалось автоматически, можно сделать это вручную, прописав путь к файлу активации в формате source .venv/bin/activate, где source — команда языка программирования Bash. Другой вариант — перезапустить среду разработки. Он работает для Visual Studio Code, но нужно предварительно принять предложение редактора привязать среду к папке проекта сразу после создания окружения.

Практика создания нового окружения под каждый проект позволяет повыстить безопасности и стабильность проекта — в окружении вы можете использовать только те библиотеки и их версии, которые требуются в проекте. Если в проекте появятся дополнительные функции, все изменения будут храниться в этом окружении. При этом оно будет изолировано от других окружений и проектов — это повысит безопасность проекта.

Второй этап: подключаем библиотеки

Проект создан и окружение готово: пора переходить к написанию кода. По правилам хорошего тона в первую очередь через import добавляем несколько предустановленных библиотек Python. При создании бота нам пригодятся logging и time, которые отвечают за определение времени и логирование сообщений.

import time
import logging

Затем добавим асинхронную библиотеку aiogram, на основе которой будет работать бот. Она, например, определяет, какое сообщение пришло, как его нужно обработать и какие порты нужны. Сначала устанавливаем ее через терминал командой pip install aiogram, а в редакторе кода пишем следующее:

from aiogram import Bot, Dispatcher, executor, types

Из этой библиотеки нам нужны только отдельные модули и классы — все ее возможности для создания базовой версии бота не пригодятся. Поэтому вместо одиночного import использована команда from {} import {}.

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

TOKEN = "здесьбудетваштокенот от BotFather"
MSG = "Программировал ли ты сегодня, {}?"

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

Теперь создадим экземпляр класса Bot, передав ему в качестве аргумента наш токен, и экземпляр класса Dispatcher (dp), который в качестве аргумента получит bot. В результате получаем связку объекта класса bot с ключем, который привязан к боту, и диспетчера, который привязан к этому боту:

bot = Bot(token=TOKEN)
dp = Dispatcher(bot=bot)

Следующим шагом добавим конструкцию под названием декоратор (massage_handler) — она помогает получить из диспетчера нужный функционал. В качестве аргумента прописываем команды, которые обрабатывает декоратор — в данном случае это команда /start, которая запускает бот.

@dp.message_handler(commands=['start'])

Под декоратором прописываем функцию, которая будет обрабатывать команду /start и определяет логику, в соответствии с которой будет работать бот. Поскольку мы работаем с асинхронной библиотекой, функция тоже должна быть асинхронной. Для этого перед указанием def добавим ключевое слово async:

async def start_handler(message: types.Message):

Функция приветствует пользователя и обрабатывает сообщение, которое он отправляет в ответ. Из сообщения можно получить информацию о пользователе, который его прислал, время отправки и его ID.

Создаем переменную и сохраняем в ней user id:

user_id = message.from_user.id

Затем получаем из сообщения короткое и полное имя пользователя:

user_name = message.from_user.first_name
user_full_name = message.from_user.full_name

Для того, чтобы в логах отображалась информация о пользователе, передаем в виде текста ID и полное имя, а также используем возможности библиотеки time, чтобы определить время, когда писал пользователь:

logging.info(f'{user_id} {user_full_name} {time.asctime()}')

Здесь отойдем в сторону и проверим корректность работы модуля time. Сделать это можно в терминале: для этого напишем import time, а затем — time.asctime

Вернемся к коду. Поскольку функция, которую мы используем, асинхронна, вместо обычного для функций return используем await:

await message.reply(f"Привет, {user_full_name}!")

Ответить пользователю в боте можно несколькими способами — в данном случае используем reply.Выше в переменной MSG мы задали стандартное сообщение: «Программировал ли ты сегодня, {}?». Зададим частоту напоминаний: семь раз каждые семь суток (60х60х24 — количество секунд в одних сутках) с момента отправки команды /start боту от пользователя:

for i in range(7):
    await asyncio.sleep(60*60*24)

Затем настроим отправку сообщения с указанием имени пользователя в этом же цикле:

await bot.send_message(user_id, MSG.format(user_name))

Третий этап: финал

Переходим к финальной части: в конце скрипта напишем несколько строк. Они могут показаться странными для новичка, но это общепринятая практика, к которой многие программисты прибегают при разработке. В этой строке мы проверяем, равна ли переменная __name__ строке "__main__". Это условие всегда будет True, если мы запускаем этот файл как python-скрипт через терминал:

if __name__ == '__main__': 

Теперь делаем нашего бота доступным в сети:

 executor.start_polling(dp)

Сохраняем файл. Запускаем бота в терминале, открытом в папке проекта, с помощью команды python bot.py.

Вернемся в BotFather и перейдем по ссылке, которую получили вместе с токеном. Нажимаем «Начать» — готово, бот, написанный меньше, чем в 30 строк, работает.

Так выглядит его код целиком:

import time
import logging
import asyncio

from aiogram import Bot, Dispatcher, executor, types

TOKEN = "здесьбудетваштокенот@BotFather"
MSG = "Программировал ли ты сегодня, {}?"

logging. basicConfig(level=logging.INFO)

bot = Bot(token=TOKEN)
dp = Dispatcher(bot=bot)

@dp.message_handler(commands=["start"])
async def start_handler(message: types.Message):
    user_id = message.from_user.id
    user_name = message.from_user.first_name
    user_full_name = message.from_user.full_name
    logging.info(f'{user_id} {user_full_name} {time.asctime()}')
    await message.reply(f"Привет, {user_full_name}!")
    
    for i in range(7):
        await asyncio.sleep(60*60*24)
        await bot.send_message(user_id, MSG.format(user_name))

if __name__ == "__main__": 
    executor.start_polling(dp)

В следующий раз подробно расскажем, как написать подобный бот на языке программирования JavaScript. Подписывайтесь, чтобы не пропустить инструкцию.

Создать базового бота — Bot Service

Твиттер LinkedIn Фейсбук Электронная почта

  • Статья

ПРИМЕНЯЕТСЯ К: SDK v4

В этой статье описывается, как создать своего первого бота с помощью пакета SDK Bot Framework для C#, Java, JavaScript или Python, а также как протестировать бота с помощью эмулятора Bot Framework.

Для создания первого бота не требуется подписка Azure или ресурс службы ботов Azure. В этом кратком руководстве основное внимание уделяется локальному созданию вашего первого бота. Если вы хотите узнать, как создать бота в Azure, см. раздел Создание ресурса Azure Bot.

Примечание

Пакеты SDK для Python и Java для Bot Framework устаревают, а окончательная долгосрочная поддержка заканчивается в ноябре 2023 года. В этом репозитории будут выполняться только критические исправления безопасности и исправления ошибок. Существующие боты, созданные с помощью этих SDK, продолжат функционировать.

Для разработки новых ботов рассмотрите возможность использования Power Virtual Agents. Дополнительные сведения см. в разделе Будущее создания ботов.

Предпосылки

  • С#
  • Джава
  • JavaScript
  • Питон
  • Пакет SDK для .NET 6.0
  • Эмулятор платформы Bot
  • Знание ASP.NET Core и асинхронного программирования на C#

Шаблоны С#

Текущие образцы ботов используют шаблоны .NET Core 3.1.

  • Визуальная студия
  • Код VS / интерфейс командной строки
  • Visual Studio 2022 или новее
  • Шаблоны SDK Bot Framework v4 для Visual Studio

Чтобы добавить шаблоны ботов в Visual Studio, загрузите и установите файл шаблонов SDK Bot Framework v4 для Visual Studio VSIX.

Примечание

Шаблоны можно установить из Visual Studio.

  1. В меню выберите Extensions затем Manage Extensions .
  2. В диалоговом окне Manage Extensions найдите и установите шаблоны SDK Bot Framework v4 для Visual Studio .

Сведения о развертывании ботов .NET в Azure см. в разделе Подготовка и публикация бота.

Создать бота

  • С#
  • Джава
  • JavaScript
  • Питон
  • Визуальная студия
  • Код ВС
  • CLI

В Visual Studio создайте новый проект бота и используйте Echo Bot (Bot Framework v4 — .NET Core 3.1) шаблон . Чтобы просмотреть только шаблоны ботов, выберите тип проекта AI Bots .

Благодаря шаблону ваш проект содержит весь необходимый код для создания бота в этом кратком руководстве. Вам больше не нужен код для тестирования вашего бота.

Я создал эхо-бота Я столкнулся с проблемой

Запустите бота

  • С#
  • Джава
  • JavaScript
  • Питон
  • Визуальная студия
  • Код ВС
  • CLI

В Visual Studio:

  1. Откройте проект вашего бота.
  2. Запустить проект без отладки.
  3. Visual Studio создает приложение, развертывает его на локальном хосте и запускает веб-браузер для отображения страницы приложения default.htm .

На данный момент ваш бот работает локально на порту 3978.

Я запустил эхо-бота Столкнулся с проблемой

Запустите эмулятор и подключите бота

  1. Запустите эмулятор Bot Framework.

  2. Выберите Open Bot на вкладке Welcome эмулятора.

  3. Введите URL-адрес вашего бота, который является вашим локальным хостом и портом, добавив к пути /api/messages . Адрес обычно такой: http://localhost:3978/api/messages .

  4. Затем выберите Подключить .

    Отправьте сообщение своему боту, и бот ответит.

Я запустил эмулятор и подключился к своему боту Столкнулся с проблемой

Дальнейшие действия

  • Сведения об отладке с помощью Visual Studio или Visual Studio Code и эмулятора Bot Framework см. в разделе Отладка бота.
  • Сведения о ngrok см. в разделе Туннелирование (ngrok).

Разверните бота в Azure

Обратная связь

Просмотреть все отзывы о странице

Создать бота

Создать поток чата с ботом для связи с посетителями вашего сайта. Бот появится в виде виджета чата на страницах вашего сайта, где посетитель может начать разговор. Бот может помочь квалифицировать потенциальных клиентов, назначать встречи или создавать заявки в службу поддержки, отправляя серию вопросов и автоматических ответов. Используйте бота, чтобы собрать начальную информацию о посетителе, прежде чем член вашей команды начнет разговор.

Обратите внимание: только пользователи с разрешениями Chatflows на вкладке CRM могут создавать и редактировать чаты.

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

Вы также можете создать бота для своей учетной записи Facebook Messenger. Узнайте, как создать поток чата для Facebook Messenger.

Чтобы посмотреть обзор этого процесса, посмотрите видео ниже:

См. полный урок Академии HubSpot: Настройка диалогов

Перед началом работы

Прежде чем создавать бота, подключите канал чата к папке входящих сообщений. Канал чата — это место, где вы можете настроить доступность вашей команды и внешний вид виджета. Кроме того, если вы добавляете бота на веб-сайт, который не размещен на HubSpot, вам необходимо добавить код отслеживания на свои внешние страницы перед созданием бота. Бот не появится, если код отслеживания не установлен.

После того, как ваш чат-канал подключен к почтовому ящику и код отслеживания установлен на любых внешних страницах, вы можете создать бота с нуля или использовать один из пяти различных шаблонов бота, созданных HubSpot, затем настроить действия своего бота и добавить, если /Затем ветви, чтобы определить ход разговора.

  • Беседы > Потоки чата .»}» data-sheets-userformat=»{«2″:14337,»3»:{«1″:0},»14»:{«1″:2,» 2″:0},»15″:»Arial»,»16″:10}» data-sheets-formula=»=»»»>В своей учетной записи HubSpot перейдите к Разговоры > Чаты .
  • Беседы > Потоки чата .»}» data-sheets-userformat=»{«2″:14337,»3»:{«1″:0},»14»:[null,2,0],»15 «:»Arial»,»16″:10}» data-sheets-formula=»=»»»>В правом верхнем углу нажмите Создать поток чата .
  • Беседы > Потоки чата .»}» data-sheets-userformat=»{«2″:14337,»3»:{«1″:0},»14»:[null,2,0],»15 «:»Arial»,»16″:10}» data-sheets-formula=»=»»»>Select Website . Если вы хотите добавить поток чата в свою учетную запись Facebook Messenger, узнайте, как создать поток чата для Facebook Messenger.
  • В левой боковой панели в разделе Создать бота выберите шаблон бота:
    • Консьерж-бот (только Service Hub Professional или Enterprise ) :  используйте этот шаблон, чтобы направлять посетителей в нужную группу в зависимости от причины, по которой они начали чат. В зависимости от ответа посетителя, он может выполнить поиск в базе знаний, связаться с членом вашей живой команды или назначить встречу с вашей командой. Вам необходим доступ к инструменту базы знаний, чтобы использовать этот шаблон бота.
    • Бот Qualify Leads: используйте этот шаблон для сбора информации о посетителе и причине его посещения вашего сайта.
    • Бот для совещаний: используйте этот шаблон, чтобы поделиться ссылкой на совещание с посетителем, чтобы он мог забронировать время с вами или вашей командой.
    • Билетный бот: используйте этот шаблон для сбора информации о запросе посетителя в службу поддержки, а затем создайте тикет, чтобы отслеживать его проблему в папке входящих сообщений. У вас должен быть доступ к редактированию заявок, чтобы использовать этого бота.
    • База знаний и бот поддержки ( Service Hub Professional или Enterprise только) отправить билет, если им все еще нужна помощь. Перед использованием этого шаблона выберите пользователей и группы, которым следует направлять беседы, если вопрос не может быть решен с помощью статьи.
    • Автономный бот (только Sales Hub или Service Hub Professional и Enterprise ) : , если ваша команда доступна только в установленное рабочее время, используйте этот шаблон, чтобы направлять посетителей к доступным членам команды во время работы. часов, а затем собирайте электронную почту посетителя, когда ваша команда не в сети. Вы также можете отредактировать настройки бота, чтобы виджет чата появлялся в нерабочее время. Посетители могут оставить свой адрес электронной почты, чтобы ваша команда могла связаться с ними, когда они вернутся в сеть. Перед использованием этого шаблона выберите пользователей и команды, доступность которых будет определять поток бота.
    • Начать с нуля: создать собственного бота с нуля, используя различные действия бота.
  • Щелкните Далее .
  • Слева настройте входящие и язык:
    • Если в вашей учетной записи настроено несколько почтовых ящиков, щелкните раскрывающееся меню Входящие и выберите почтовый ящик , к которому нужно подключить поток чата.
    • Чтобы изменить язык чата, щелкните значок Язык выпадающее меню.
    • Если вы создаете бота Concierge или бота Meetings , чтобы выбрать, какая ссылка на собрание будет доступна посетителю, щелкните раскрывающееся меню Ссылка на собрание .
    • Если вы создаете базу знаний + бота поддержки в реальном времени или автономного бота , чтобы указать, какие пользователи будут получать входящие сообщения, щелкните раскрывающееся меню Выберите пользователей входящих сообщений .

  • Нажмите Создать .

1. Сборка — создание приветственного сообщения и добавление действий бота

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

Создать приветственное сообщение

Приветственное сообщение — это первое, что увидит посетитель, начав с вами чат.

  • Чтобы изменить содержание приветственного сообщения, нажмите кнопку Приветственное сообщение шаг в шаблоне бота.
  • В открывшейся справа панели Добро пожаловать сообщение введите сообщение , затем нажмите Сохранить .

Добавить действия бота

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

  • Чтобы добавить новые вопросы или действия, щелкните значок добавления с плюсом .

  • На правой панели выберите действие . Узнайте больше о различных действиях ботов.

  • На правой панели отредактируйте детали действия. Параметры, которые вы можете изменить, зависят от действия. Например, если вы задаете пользовательский вопрос, вы можете ввести вопрос и установить быстрые ответы, которые ваш посетитель может выбрать в качестве ответов на ваше сообщение.
  • Нажмите  Сохранить .

  • Чтобы изменить настройки существующего действия, нажмите действие в редакторе бота и внесите изменения на правой панели.
  • Если вы являетесь пользователем Professional или Enterprise , вы можете настроить поток диалога с ботом, используя ветки if/then. Ветки if/then позволяют отправить посетителя на определенное действие бота в зависимости от его ответа, значения свойства контакта или доступности вашей команды.
    • Выберите действие.
    • На правой панели щелкните вкладку Если/то ответвления.
    • Узнайте, как использовать переходы if/then в действиях вашего бота.

Обратите внимание: : Стартовые пользователи и бесплатные пользователи не могут добавлять ветки if/then к своим действиям бота.

  • Если вы являетесь пользователем с разрешениями Доступ к учетной записи , вы можете направить разговор с ботом конкретному члену вашей команды. Чтобы перенаправить беседу с ботом члену вашей команды, нажмите значок «Добавить плюс», затем выберите Отправить члену команды на правой панели.

Обратите внимание: пользователь, к которому вы направляетесь, должен иметь назначенное место Центр продаж или Центр обслуживания .

  • Чтобы повторно подключить любые действия, которые были отключены при редактировании потока вашего бота, нажмите кнопку Оповещения в левом верхнем углу. Вы также можете искать любые отключенные действия, используя панель поиска Перейти к действию в правом верхнем углу.
  • Когда вы закончите редактирование действий бота, вы увидите каждое действие на пути бота в одном представлении. Вы можете просматривать и вносить изменения в логику ветвления если/то, редактировать настройки отдельного действия или искать конкретное действие с помощью панели поиска Перейти к действию в правом верхнем углу.
  • Чтобы увидеть, как бот будет выглядеть на вашем сайте, в правом верхнем углу нажмите Предварительный просмотр .
  • Чтобы продолжить, нажмите Сохранить внизу, затем нажмите кнопку Цель вкладка.

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

2. Цель — выберите, когда бот должен появиться

На вкладке Цель вы можете решить, когда бот будет отображаться на страницах вашего сайта. Вы можете отображать бота, когда посетитель находится на определенном URL-адресе страницы, или на основе известной информации о ваших посетителях. Вы также можете комбинировать параметры таргетинга, чтобы создать индивидуальный и персонализированный опыт для посетителей вашего сайта. Узнайте больше о различных параметрах таргетинга и правилах таргетинга, которые вы можете использовать в своих чатах.

  • Чтобы показать бота, когда посетитель находится на определенном URL-адресе веб-сайта, в разделе URL-адрес веб-сайта :
    • Щелкните первое раскрывающееся меню и выберите URL веб-сайта .
    • Щелкните второе раскрывающееся меню и выберите правило таргетинга .
    • Введите критерии правила в текстовое поле.
  • Чтобы показать бота, когда посетитель находится на странице веб-сайта, URL-адрес которой содержит определенные параметры запроса:
    • Щелкните первое раскрывающееся меню и выберите Параметр запроса.
    • В первое текстовое поле введите имя параметра запроса .
    • Нажмите раскрывающееся меню и выберите правило таргетинга .
    • Во втором текстовом поле введите значение параметра запроса .
  • Чтобы добавить другое правило, нажмите Добавить правило .
  • Чтобы исключить бота с определенных страниц (например, страницы политики конфиденциальности), нажмите Добавить правило исключения .

Вы также можете нацелить своего бота на определенные контакты на основе известной информации о них. Чтобы установить критерии на основе информации о посетителях, в разделе Информация о посетителях :

  • Щелкните первое раскрывающееся меню и выберите фильтр . Вы можете использовать фильтры, специально предназначенные для известных контактов или неизвестных посетителей.
  • Щелкните второе раскрывающееся меню и выберите c критерии .
  • Чтобы добавить другое правило, нажмите Добавить правило .
  • Чтобы исключить всплывающую форму на определенных страницах (например, на странице политики конфиденциальности), нажмите Добавить правило исключения .
  • Чтобы создать другую группу фильтров с дополнительными правилами таргетинга, нажмите Добавить группу фильтров .
  • Чтобы продолжить, нажмите Сохранить внизу, затем щелкните вкладку Показать .

3. Дисплей — настройка внешнего вида бота

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

  • По умолчанию название компании, указанное в настройках фирменного стиля вашей учетной записи, будет отображаться в качестве заголовка чата. Чтобы изменить заголовок чата, разверните раздел Выберите аватар чата  , затем измените имя в поле заголовка чата . Чтобы изменить изображение аватара, наведите курсор на аватар и нажмите Изменить фото .
  • В разделе Поведение отображения чата управляйте поведением виджета на экранах настольных компьютеров или мобильных устройств. Нажмите Беседы > Потоки чата .»}» data-sheets-userformat=»{«2″:14337,»3»:{«1″:0},»14»:[null,2,0],»15 «:»Arial»,»16″:10}» data-sheets-formula=»=»»»> Заголовок чата для расширения раздела.
    • На вкладке Desktop выберите переключатель рядом с предпочтительным поведением дисплея:
      • Всплывающее окно Открыть приветственное сообщение в виде подсказки: показать предварительный просмотр приветственного сообщения над виджетом чата.
      • Показывать только панель запуска чата: отображать только панель запуска чата, поэтому посетители должны щелкнуть, чтобы открыть окно чата.
      • Показать приветственное сообщение, а затем открыть чат при срабатывании триггера: отображать предварительный просмотр приветственного сообщения и открывать виджет чата при срабатывании триггера или когда посетитель щелкает виджет, в зависимости от того, что произойдет раньше.
    • На вкладке Mobile выберите переключатель рядом с предпочтительным поведением дисплея:
      • Открыть приветственное сообщение как подсказку: показать предварительный просмотр приветственного сообщения над виджетом чата.
      • Показывать только панель запуска чата: отображать только панель запуска чата, поэтому посетители должны щелкнуть, чтобы открыть окно чата.

Обратите внимание: , чтобы отключить поток чата на мобильных устройствах, вы можете добавить правило исключения в настройках таргетинга, чтобы скрыть поток чата, когда кто-то просматривает вашу страницу на мобильном устройстве.

  • Вы также можете решить, когда загружать виджет чата на страницу. Нажмите  Триггеры  , чтобы развернуть раздел, затем установите флажок    рядом с триггером отображения чата.
    • При намерении выхода: запускает бота, когда мышь посетителя перемещается к верхней части окна браузера.
    • Время нахождения на странице в секундах: запускает бота, когда проходит указанное количество времени (в секундах), пока посетитель находится на странице.

Обратите внимание: для более быстрой загрузки страницы HubSpot рекомендует задержку в 5 секунд или более. Узнайте больше о времени загрузки страницы вашего сайта.

    • Процент прокрутки страницы: запускает виджет живого чата, когда посетитель прокручивает до определенного места на странице.
  • Щелкните Сохранить , затем щелкните вкладку Параметры .

Обратите внимание: после завершения настройки бота вы можете автоматически открывать виджет чата, когда посетитель загружает определенный URL-адрес страницы. Добавьте #hs-chat-open в конец URL-адреса страницы. Затем вы можете связать эти URL-адреса в своих электронных письмах, целевых страницах и других маркетинговых кампаниях, чтобы направлять посетителей прямо в виджет чата.

4. Параметры

Настройте дополнительные параметры для своего бота, включая настраиваемые сообщения об ошибках, язык интерфейса и параметры GDPR.

Общие

  • Чтобы установить задержку между каждым сообщением, отправляемым посетителям, щелкните раскрывающееся меню Задержка ввода между сообщениями и выберите параметр.
  • Чтобы настроить количество времени, которое должно пройти до сброса сеанса чата до начала, щелкните раскрывающееся меню Тайм-аут сеанса и выберите параметр. Тайм-аут начинается, когда посетитель перестает отвечать на запросы. Если посетитель отправляет другое сообщение после истечения времени ожидания, диалог повторно отправляет приветственное сообщение.

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

  • Чтобы настроить ответ, который посетители увидят в случае сбоя запроса, введите сообщение об ошибке в поле Общее сообщение об ошибке .

Язык

Чтобы изменить язык интерфейса бота, щелкните раскрывающееся меню Выберите язык и выберите другой язык.

Доступность

Решите, когда виджет чата должен появиться на вашем сайте, в зависимости от доступности вашей команды, установленной в настройках вашего канала. Щелкните раскрывающееся меню Доступность и выберите один из вариантов:

    • Показывать только тогда, когда члены команды доступны для чата: виджет чата будет отображаться только в рабочее время или когда доступен хотя бы один член команды.
    • Показывать всегда: виджет чата всегда будет отображаться на вашем сайте.

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

Конфиденциальность данных и согласие

  • Чтобы включить текст согласия на использование файлов cookie для виджета живого чата, щелкните , чтобы включить согласие на сбор файлов cookie чата . Вы не можете настроить текст согласия на использование файлов cookie, который отображается в баннере.
  • Когда вы включаете текст согласия на использование файлов cookie, вы можете выбрать, когда должен отображаться баннер согласия.
    • Чтобы отобразить баннер согласия до того, как посетитель начнет чат, выберите переключатель Показывать баннер согласия перед тем, как посетитель начнет чат .
    • Чтобы отображать баннер, когда посетитель начинает покидать страницу, выберите переключатель Показывать баннер согласия посетителю при намерении выхода .

  • Чтобы зафиксировать согласие посетителей на обработку их данных, щелкните , чтобы включить переключатель Согласие на обработку данных .
  • Щелкните раскрывающееся меню Согласие введите и выберите один из следующих вариантов:
    • Требовать явного согласия: если этот параметр включен, посетители должны нажать Я согласен , прежде чем они смогут отправить сообщение.
    • Законный интерес: согласие посетителей подразумевается, когда они начинают общаться с вами. Текст согласия на обработку данных все равно будет отображаться, по ним не нужно нажимать Я согласен начать чат.
  • В поле Согласие процесса текст появится текст HubSpot по умолчанию. Вы можете отредактировать текст, чтобы объяснить, почему вам необходимо хранить и обрабатывать личную информацию посетителя. Если вы настраиваете текст согласия, но затем хотите вернуться к тексту по умолчанию, нажмите Восстановить текст по умолчанию, предоставленный HubSpot .

Обратите внимание: , несмотря на то, что эти функции доступны в HubSpot, ваш юридический отдел является лучшим ресурсом, который может дать вам совет по соблюдению требований для вашей конкретной ситуации.

Маркетинговые контакты

Если у вас есть доступ к маркетинговым контактам в вашей учетной записи и вы хотите, чтобы контакты, созданные из этого потока чата, были установлены в качестве маркетинговых контактов, щелкните, чтобы включить Маркетинговые контакты .

Сбор отзывов от посетителей чата (только

Service Hub Professional или Enterprise )

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

  • В разделе Сбор отзывов от посетителей чата щелкните раскрывающееся меню Подключить существующий опрос и выберите опрос .

Обратите внимание: вы можете подключить только существующий опрос, в котором в качестве метода доставки выбран Чат .

  • Чтобы создать новый опрос для подключения к боту, нажмите Создать новый опрос . Обязательно выберите Чат в качестве способа доставки.

Беседы > Потоки чата .»}» data-sheets-userformat=»{«2″:14337,»3»:{«1″:0},»14»:{«1»:2,»2 «:0},»15″:»Arial»,»16″:10}» data-sheets-formula=»=»»»>По окончании разговора в чате опрос появится в виджете чата. По мере сбора ответов на опрос они будут отображаться на странице сведений об опросе и в ветке в папке «Входящие» бесед.