Разное

Вк блог: Блог о ВКонтакте — полезные статьи, темы и факты о ВК

01.07.2021

Содержание

Работа с подписчиками из ВКонтакте. Блог GetCourse

В настройках кнопки доступны следующие опции:

1. «Нажимать автоматически» — позволяет выполнить нажатие на кнопку без фактического участия пользователя — автоматически после открытия экрана. При этом, будут выполнены все назначенные действия.

К примеру, необходимо, чтобы запрос разрешения на отправку сообщений в VK отображался сразу после перехода на VK-страницу. Для этого создается стартовый экран с кнопкой и нужными действиями. Также включается опция «Нажимать автоматически».
В этом случае рекомендуется назначить действие для перехода на следующий экран, где можно разместить нужный контент/информацию для пользователя.

2. «Не сохранять данные формы» — отменяет передачу и сохранение данных из формы.

Важно! Этот флажок нужно использовать только для второй кнопки, размещённой на этом же экране.

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

  • Первый этап — экран с формой для указания email и кнопка переадресации на второй экран.
  • Второй этап — экран с формой для указания телефона и две кнопки.
    — Первая кнопка (без дополнительных опций) отправляет данные формы и выполняет назначенные действия.
    — Вторая кнопка (с включённой опцией) пропускает шаг сохранения данных формы — выполняет только назначенные действия.
    На этом этапе пользователь будет иметь возможность сохранить свой телефон (первая кнопка) или продолжить без указания телефона (вторая кнопка).

3. «Игнорировать ввод чужого e-mail» — игнорирует ввод уже занятого электронного адреса.

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

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

                                                  [Действия для подтверждения e-mail].

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

Мы уже упоминали, как мы предоставляем бесплатные 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:


Рекламный кабинет ВК. Настройка таргетинга

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

   Запускаем рекламный кабинет!

 

   Запуск рекламного кабинета осуществляется через вкладку Реклама.

   Затем нажимаем «Здесь» в открывшемся окне с текстом о создании своего первого рекламного объявления.

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

   Также выбираем, куда будет вести реклама: на сообщество или на внешний сайт.

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

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

   В случае, если мы ведем людей на внешний сайт, то не стоит забывать, что именно здесь к указываемой ссылке вы добавляете UTM-метки. В дальнейшем они вам позволят внутри Google Analytics отследить, насколько эффективно сработала либо какая-то определенная рекламная кампания, либо какое-либо рекламное объявление.  Google Analytics позволяет нам прослеживать эффективность рекламы не по кликам, как показывается в ВК, а именно по CVR или по стоимости самой регистрации или покупки.

   Дальше рассмотрим, какие форматы вы можете использовать. Это «Изображение и текст». Вы можете добавить изображение 90х65 или 90х120. Можно использовать либо определенные базы ретаргетинга, либо ретаргетинг по сайту. Очевидно, мы добавляем картинки, которые наглядно демонстрируют пользователю, что мы рекламируем, и привлекают его внимание.

   Затем рассмотрим «Эксклюзивный формат».

   По нашему опыту можно сказать, что такой вид формата используется редко. Он в 2 раза дороже, так как рекламодатель при использовании такого формата становится монополистом, а используется в основном для увеличения охвата или в целях медийности. Особенностью это формата является расширенная картинка 90х160.

   Следующий формат – «Продвижение сообществ».

   Этот формат очень похож на «Изображение и текст». Разница заключается в том, что в формате «Продвижение сообществ» внизу картинки отображается еще кнопка «Подписаться».

   И последний формат – формат «Специальный».

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

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

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

   Сначала разберем  «Изображение и текст».

   Характеристики:

– заголовок до 25 символов, выделяется жирным, можно сделать 1 перенос;

– описание до 60 символов, можно сделать 4 переноса;

– креатив 65х90.

   Этот формат зачастую используется, когда мы хотим продать с помощью текста, а не картинки.

   Следующий формат «Большое изображение».

   Характеристики:

– заголовок до 25 символов, выделяется жирным, можно сделать 1 перенос;

– креатив 120х90.

   Это рекламное объявления полезно для аудитории, которая уже подготовлена.

   Это ретаргетинг, организованный с помощью парсинга или организованный по сайту.

   «Эксклюзивный формат».

   Характеристики:

– заголовок до 25 символов, выделяется жирным, можно сделать 1 перенос;

– креатив 160х90;

– в два раза дороже, так как занимаете все рекламное место, конкуренции нет.

 

   Что мы с вами рекламируем? Выбираем объект для нашей рекламы.

   Допустим, мы выбрали «Сообщество». Тогда нам нужно заполнить следующие данные: Заголовок и Описание.

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

   Затем мы должны выбрать изображение.

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

   Обязательное поле, которое нельзя пропускать – тематика. Это поле необходимо для модерации. Тематика на аукцион не очень сильно влияет, поэтому попытка менять тематику не меняет ставку или ту аудиторию, на которую мы таргетируем. Это помогает уже внутри ранжировать сами объявления.

   Итак, мы рассмотрели, что такое рекламный кабинет и как его настроить, какие существуют форматы рекламных объявлений и соответствующие им правила оформления.

Как правильно общаться с поддержкой ВК

Как правильно общаться с поддержкой ВК.

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

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

Итак, первое что нужно сделать — написать в поддержку по вопросам рекламы, ссылка на поддержку — внизу вашего кабинета. Писать в поддержку (а не мне в личку) , это такое же основное правило, как перезагрузить компьютер, когда он начинает тупить.

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

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

2. Аргументы и факты.
Это важно, ваше письмо должно содержать в себе как можно больше логичных доказательств вашей правоты. Лучше всего будет найти объявления конкурентов, или объявы использующие в себе элементы, которые запрещают использовать вам. «Почему им можно, а мне нет?» — работает очень хорошо.

3. Упорство.
Длинные письма с горой аргументов, которые приходят в ответ на 4 строчки от поддержки — вызывают дикий дискомфорт для сотрудника. Если ваш спор длится долго, и у ВК не остается четких аргументов против — ваш разговор посмотрят еще несколько сотрудников поддержки, и обычно в этот момент они примут финальное решение. Чаще всего оно «Задолбал, пусть проходит».

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

 



vk | Блог JagaJam

Популярные темы
  • Аналитика
  • Новости JagaJam
  • Кейсы
  • Новости соцсетей
  • Инфографика
  • Советы по SMM
Все темы и теги Подпишитесь Подпишитесь на сообщества JagaJam в соцсетях: Facebook ВКонтакте Twitter Одноклассники LinkedIn Instagram YouTube Google+ Pinterest

Популярные материалы

Аналитика рекламных постов в JagaJam аналитика vk instagram facebook ok ads 6555 #JagaJamBreakfast: ключевые моменты выступлений jagajam vk ok facebook instagram 1211 Дайджест актуальных новостей ВКонтакте вконтакте vk новости 7725 Beauty-бренды в России: «ВКонтакте» vs. Facebook beauty vk facebook smm россия 8990 Отрасли в социальных сетях: Россия россия отрасли vk одноклассники facebook 13978 Кейс бренда: Lamoda.ru всегда на связи с клиентом b2c instagram vk smm 10197 Форматы и реакции — совместное исследование соцсети «ВКонтакте» и сервиса JagaJam vk jagajam аудитория формат реакции 4766

Блог Николая Подосокорского — ЖЖ

С разрешения издательства публикую фрагмент из книги: Ирина Зорина. Распеленать память. СПб.: Изд-во Ивана Лимбаха, 2020. — 560 с., ил. ISBN 978-5-89059-395-5

Купить книгу: https://limbakh.ru/index.php?id=8062

Аннотация: Книга Ирины Николаевны Зориной — из разряда подлинных свидетельств поколения шестидесятников о судьбах общества и страны. Ирина Зорина ясно показывает надежды оттепели и утраты глухих 1970-х; анализирует шанс, исторически предоставленный поколению перестройкой. В галерее лиц — лучшие люди только что ушедшей эпохи: Юрий Карякин, Юрий Любимов, Алесь Адамович и другие знаковые фигуры политики (Евгений Примаков) и культуры (Наум Коржавин, Владимир Высоцкий, Эрнст Неизвестный). И.Н. Зорина — историк-испанист, специалист по странам Латинской Америки; вдова Ю.Ф Карякина.

Юрий Щекочихин. Честный и бесстрашный вопреки системе

Щекочихина могли убить еще летом 1988 года, когда он опубликовал в «Литературной газете» 20 июля нашумевшую статью «Лев прыгнул» — о советской мафии, связанной с ментами и чиновниками, которые состояли на службе у преступников. Тогда в Сухуми собралась воровская сходка, где решался вопрос о ликвидации зарвавшегося журналиста и его собеседника — подполковника Гурова. Всего двух голосов не хватило для принятия этого решения. Правда, узнали «герои» об этом много позже из окружения известного преступного авторитета Завадского (к тому времени уже убитого). А тогда казалось, что спас их звонок М.С. Горбачева (в то время он был генеральным секретарем ЦК КПСС) в редакцию «Литературной газеты». Он сказал, что об этом «давно пора было написать».

( Читать дальше…Свернуть )

Вы также можете подписаться на мои страницы:
— в фейсбуке: https://www.facebook.com/podosokorskiy

— в твиттере: https://twitter.com/podosokorsky
— в контакте: http://vk.com/podosokorskiy
— в инстаграм: https://www.instagram.com/podosokorsky/
— в телеграм: http://telegram.me/podosokorsky
— в одноклассниках: https://ok.ru/podosokorsky

Статьи о вертолетах: блог компании «ХелиКо Групп»

В Продолжаем знакомить вас с интересными вертолётными площадками России и сегодня расскажем о замечательном и, на наш взгляд, во многом образцово-показательном вертолётном клубе «Солнечный» в городе Воронеж.


Посадочная площадка здесь принимает все винтокрылые воздушные суда размером до МИ-8 включительно. Недавно построили новый большой ангар для базирования частных вертолётов, в котором ещё есть свободные места (но немного, так что торопитесь!). Кстати, там же базируются Ансаты местной санитарной авиации.

Также на площадке работает своя авиационно-техническая база, где квалифицированные инженеры обслуживают Robinson R44 I и II, R66, а также Airbus Helicopters h225 (ранее Eurocopter AS350B3).


К дозаправке в наличии имеется как авиационный керосин, так и авгаз 100LL, а для комфортного ожидания работает комфортный Lounge зал, где можно отдохнуть, выпить кофе, воспользоваться бесплатным Wi-Fi или даже провести деловые переговоры. Также на территории клуба есть гостиница на 5 номеров, а в непосредственной близости расположен тематический бутик-отель «Ветряков», каждый номер которого стилизован под определенный город Мира. 

   

Кстати, в отеле часто останавливаются известные артисты, так как очень близко расположен торгово-развлекательный центр «Ситипарк-Град» с концертной площадкой, на которой они дают концерты, а вы можете отлично провести время.

Также на территории гостиничного комплекса расположен ресторан высокого уровня «Артист», откуда вы, точно, не уйдёте голодным!


Стоит отметить и удобное расположение Клуба для отдыха и дозаправки на линии пути следования по маршруту Санкт-Петербург — Москва — Ростов-на-Дону и обратно. 

Ссылка на данные о площадке на сайте АОПРА.

 

P.S.: руководитель нашей компании Елена Занина с большой теплотой и уважением отзывается о данной площадке, вертолетном клубе и команде, работающей там; ссылка на ее пост в Facebook, где она делится личным мнением и ощущениями о ВК Солнечный.

ВК порт-лог | VK3ZPF Блог Радиолюбителя

Обновление 15 марта 2021 г.

Это приложение написано для Android 4 — Android 10.
Сообщалось о проблемах с некоторыми установками на Android 10 и Android 11.
В настоящее время приложение переписывается, чтобы оно могло работать с Android 11.
Объявление будет размещено в группе vk3zpf_logger groups.io, когда появится новый выпуск.

VK port-a-log — это приложение для ведения журналов для Android, предназначенное в первую очередь для портативного ведения журнала. Его можно использовать для SOTA, WWFF, VK Shires или переносной работы. Я даже использую его для регистрации, когда нахожусь дома.

Wade, VK1MIC, выпустил видео, показывающее действие порта-а-лог ВКонтакте дома. Видео Уэйда можно посмотреть на YouTube здесь.

VK5AYL выпустила аналогичное приложение для iPhone. Информация доступна на сайте www.vk5ayl.com

Скачать руководство пользователя VK port-a-log здесь
Посмотреть экраны настроек VK port-a-log здесь
Посмотреть информацию о версии VK port-a-log здесь

Последняя версия, выпущенная 2 февраля 2020 года, имеет следующие функции:

  • Теперь совместим с SOTAwatch4 и новыми форматами SOTAdata CSV
  • Захватывает информацию QSO, включая время, позывной, имя, местоположение, отчеты о сигналах, режим, установку, антенну и мощность
  • Запись в QSO может быть произведена во время QSO или после завершения активации.
  • Поддерживает награды SOTA, WWFF, KRMNPA, SANPCPA и VK Shires
  • Использует встроенный GPS, если он установлен, для определения локатора Maidenhead, ближайших пяти вершин SOTA, ближайших пяти областей VKFF или ZLFF, текущей области VKFF и текущего владения VK.
  • Выводит файл формата SOTA V2 CSV, совместимый с загрузкой базы данных SOTA для журналов активации и чейза
  • Выводит файл ADIF, совместимый с базой данных WWFF для активаций WWFF
  • Выводит файл формата ADIF 3.0.4, совместимый с основными программами регистрации.
  • Выводит файл в формате CSV со всеми полями для импорта в Excel.
  • Отображает расстояние и пеленг по компасу от главного ориентира — столиц ВКонтакте или определенного пользователем местоположения
  • Включает локатор, ссылку SOTA, ссылку VKFF и местоположение GPS в поле комментариев файла ADIF.
  • Записывает новые файлы CSV и ADI для каждого местного календарного дня
  • Имеет горячие клавиши для большинства префиксов VK позывных, восемь определяемых пользователем префиксов или цифры от нуля до девяти для более быстрой записи в журнал.
  • Три режима работы — SOTA, портативный и QTHR
  • Имеет прокручиваемый список QSO, последнее вверху, для быстрого просмотра
  • Щелкните QSO в списке прокрутки для редактирования деталей QSO
  • Выбор цвета — белый на черном или черный на белом
  • Автоматическое завершение имени абонента из имен.csv файл
  • Отображает отфильтрованные SPOT с веб-сайтов SOTAwatch и ParksnPeaks
  • Шесть различных звуковых сигналов для ТОЧЕК
  • Отправляет SPOT на сайты SOTAwatch и ParksnPeaks через подключение к Интернету или SMS
  • Копировать данные SPOT в журнал — сохраняет введенные данные
  • Скопируйте данные о последнем QSO в спот-пост SOTAwatch или ParksnPeaks
  • Поддержка внешней клавиатуры с горячими клавишами — см. Основное руководство пользователя
  • Работает на большинстве планшетов и телефонов Android

Приложение доступно в разделе файлов групп vk3zpf_logger.io группа.
Присоединение к группе vk3zpf_logger groups.io позволяет отправлять отчеты об ошибках и предложения по электронной почте непосредственно разработчику (мне) и делиться своими идеями с другими пользователями.

Подписаться на группу vk3zpf-logger

ВК Пресс

О Авторы Блог Галерея Магазин О Авторы Блог Галерея Магазин Chantel Januarie Шавонн

Focus on grammar vk

Focus on Grammar в своем новом четвертом издании поддерживает проверенную педагогику, которая делает его самой популярной серией контекстно-зависимой грамматики во всем мире.Его уникальный четырехэтапный подход переводит учащихся от контекста к общению — сочетание содержания, чтения, письма, аудирования, разговорной речи и критического мышления в полной программе и … 24,43 МБ Свяжитесь с Аишей Каусар (@Aishakausar) — 138 ответов, 10 лайков. Спросите все, что хотите узнать об Аише Каусар, получив ответы на ASKfm.

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

Благодаря большему вниманию к Христу и основанному на Библии пониманию того, что Он на самом деле является нашим посредником, несмотря на то, что говорят 8 человек в Нью-Йорке, я постепенно получал больше радости, радости, которой у меня не было в этой религии в течение очень долгого времени. , очень долгое время. Опять же, зачем продолжать, если вы не находите счастья Бога. Библиография Библиография: с. [476] -484. Содержание. Английский язык — общая структура — глаголы и вспомогательные слова — семантика глагольной фразы — существительные и определители — местоимения — прилагательные и наречия — семантика и грамматика наречий — предлоги и предложные фразы — простое предложение — типы предложений и функции дискурса — проформы и многоточие — co…

Сессия 3 1 Активность Lingohack 02 декабря 2015. Будьте в курсе последних новостей и узнавайте их с Lingohack. Слушайте и смотрите подлинные выпуски новостей BBC World, изучайте ключевые слова и … Его внимание в основном сосредоточено на японской идентичности смешанной расы в Японии и за ее пределами, как на английском, так и на японском языках. в международном масштабе ME — Она сосредоточена на работе, жизни, путешествиях и еде в Японии. Она кажется милой и приземленной. КемушиЧан — Ее внимание сосредоточено на жизни, работе и языке в Японии. Она очень активная и добрая.

Видео: Видео отряда Познакомьтесь с проводником Видео Аудио: Impact Foundation Аудио книги ученика 1 модуля и аудиодокументы рабочей тетради: отлично, что я много раз бывал в реабилитационных центрах до этого, и что на этот раз все будет по-другому. Но на этот раз все было иначе. После этого дня мне 18. Я смотрю в глаза сестрам каждый день, каждый раз, когда мне 19. Я хочу приколоть немного героина.

Наш блог — Ортодонтические брекеты Invisalign — North San Antonio TX

Канун Всех Святых, более известный как Хэллоуин, — это ежегодное событие, которое отмечается 31 октября, и его ждут молодые и молодые душой во всем мире.Некоторые ученые утверждают, что Хеллоуин произошел от кельтских фестивалей, которые чествовали мертвых или праздновали урожай, в то время как другие сомневаются, что есть какая-либо связь с Самайном (гэльским праздником урожая). Независимо от его происхождения, наша команда в ортодонтическом офисе доктора Чари-Редди надеется, что Хэллоуин будет веселым и веселым для всех наших замечательных пациентов!

Кошелек или жизнь?

В Северной Америке Хеллоуин в основном отмечают дети, которые одеваются в костюмы, от страшных до милых, которые затем ходят по окрестностям, стучатся в двери и спрашивают «кошелек или жизнь», а взамен им дают конфеты.Уловка или угощение — традиция, освященная веками, и хотя многие родители стенают от фунтов конфет, собранных подростками, и опасаются за здоровье своих зубов, есть несколько вещей, которые вы можете сделать, чтобы помочь их зубам оставаться в отличном состоянии. форма, пока конфета не исчезнет:

  • Ограничить количество конфет, которое они могут потреблять каждый день
  • Попросить их почистить зубы после сладкого
  • Избегайте твердых жевательных конфет, так как они могут застрять в труднодоступных местах
  • Держите конфеты подальше от глаз, чтобы уменьшить искушение
  • Не покупайте конфеты заранее, чтобы ограничить их потребление до Хэллоуина
  • Помогите или подбодрите своих детей пользоваться зубной нитью

Хэллоуинские развлечения

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

Хэллоуин во всем мире

Некоторые страны, такие как Австралия, осуждают Хэллоуин, утверждая, что это американское событие, а не австралийская культура, в то время как другие, такие как Италия, приняли это веселье и празднуют так же, как канадцы и американцы. Мексиканцы отмечают этот веселый день примерно с 1960 года, и он знаменует начало фестиваля «День мертвых». Некоторые страны Европы опоздали на вечеринку, но с 1990-х годов такие страны, как Швеция, Норвегия и Германия, также начали праздновать Хэллоуин, и найти детей в костюмах или с привидениями, висящими в окнах, стало обычным явлением.

Хэллоуин — это весело; выйти за рамки обычной жизни и надеть костюм или собраться с друзьями, чтобы постучать в дверь и попросить конфеты — такая же часть нашей культуры, как хот-доги и барбекю в День труда. Удачного и счастливого Хеллоуина от команды VK Orthodontics!

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *