Создать вайбер: Скачать | Viber

Содержание

Как сделать бота для Viber. Пошаговая инструкция для разработчиков и заказчиков — Соцсети на vc.ru

Привет vc.ru! Меня зовут Боровков Евгений и я предприниматель. В этой статье мы полностью разберемся в вопросе работы с Viber для бизнеса. Чат-боты, верификация бренда, рассылки и лайфхаки. Весь опыт нашей работы с мессенджером.

1785 просмотров

Ух какая реклама Viber

Предисловие

Несмотря на то, что вокруг только и разговоры, что о Telegram ботах, о web-ботах и холодных рассылках, я хочу затронуть тему разработки бота именно под Viber. К нам периодически приходят запросы на разработку таких ботов, поэтому я решил сэкономить всем время и набросать простую инструкцию для всех, кто хочет себе такого бота. Поехали!

Почему Viber

Вопреки расхожему мнению, Viber все еще не умер. Даже на территории РФ. Да, Telegram набирает обороты и очень активно вытесняет другие мессенджеры. Но окончательно одержать победу и забрать себе ВСЮ аудиторию у него пока не получается.

Viber по-прежнему используют люди старше 40. По крайней мере так было в 2021 году. Статистики за 2022 я не нашел. Я считаю, что Viber используют люди, которые:

  • Часто звонят в другие страны или живут на несколько стран. Например, граждане Израиля, где Viber очень популярен. Приезжая в РФ, они продолжают сидеть в мессенджере. Хотя-бы для того, чтобы общаться с родными дома.
  • Для которых Telegram слишком сложно, а в WhatsApp нет никого из друзей. Да, Дуров ориентируется в основном на молодежь. А Цукерберг на метавселенные. Но не будем о грустном.
  • Сидят там по инерции.

Кстати поиграться и сделать прикольных ботов для Viber, по аналогии с Telegram, скорее всего не выйдет. Лично я таких не встречал. Если вы таких находили, то поделитесь ссылками в комментариях!

Каковы бы ни были причины сидеть в Viber — аудитория у мессенджера огромная.

Зачем нам эта информация? Чтобы было легче ответить себе на вопрос “а зачем мне бот для VIber?”.

Ну и Viber не уходил Российского рынка. И его не запрещали. Rakuten (компания владелец Viber) даже выполнила требование о приземлении в РФ. Ссылка на новость.

Первый шаг в создании бота для Viber

Прежде чем садиться писать код, нам понадобится вот эта ссылка: https://partners.viber.com/login . Без авторизации в этом самом месте у нас не запустится даже тестовый бот на тестовом контуре.

По этой ссылке нам нужно не просто авторизоваться, а еще и заполнить поля: Имя аккаунта (на самом деле имя бота), URI (юзернейм бота), картинку. Механизм напоминает BotFather в Telegram. Но только чуть сложнее, потому что надо переходить в эту веб-админку. Но зато там есть русский язык.

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

Что важно понять на этом этапе:

  • Смски с подтверждением приходят через раз. Я не знаю с чем это связано, но эта ситуация не меняется уже несколько лет. Если это читают представители Viber, то будет классно получить комментарий от вас.
  • Наш бот, в терминологии Viber, носит название “паблик аккаунт”. С этим предлагаю просто смириться.

Кстати, кроме окна авторизации в админке, есть еще вот такая страничка. Вроде как она призвана продать вам идею создания бота именно в Viber.

Ремарка: раньше у Viber была процедура подтверждения компании. Там надо было загружать документы и долго ждать ответа. Часто он не приходил и повлиять на это было нельзя. Теперь же, я так понял, они переложили процесс подтверждения на плечи партнеров.

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

Я думаю, что они пошли на шаг создания таких локальных партнеров, потому что появились конструкторы ботов. За последние несколько лет, рынок чат-ботов так трансформировался, что клиенты перестали приходить напрямую в Rakuten. Теперь клиент приходит или к агентствам (коим мы и являемся уже 4 года), или идет в конструктор.

Техническая сторона создания бота в Viber

Завели аккаунт, дошли до шага с токеном — отлично! Теперь давайте разберемся на чем этого самого бота писать.

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

Мы 4 года писали (и пишем до сих пор) ботов на Java. И поэтому у нас родилась собственная библиотека коннектор к Viber. Кому нужно — напишите или мне в личные сообщения, или на наш канал в Telegram и я скину на нее ссылку.

Какие тонкости есть на этом этапе:

  • Когда вы создали тестового бота, вам надо авторизоваться в Viber на телефоне, зайти в: “Еще → Паблик аккаунты” и увидите своего бота. Он будет скрыт. Нажимаем на него и появляется кнопка “Показать”. С этого момента он станет доступен как-бы публично. Но:
  • Чтобы бот был “Верифицирован” и был доступен в поиске, надо связаться с командой Viber. Видимо они его проверяют каким-то образом. Наверно, как проверял Facebook* (ныне Meta*), пока еще там можно было делать ботов. Хотя, на самом деле, Viber просто сделал этот шаг платным. Бот без оплаты работать будет. Но придется делать на него прямую ссылку и вести пользователя напрямик.
  • Боту нужен хостинг. Этот тезис неочевиден тем, кто ранее ботов не касался, поэтому я об этом скажу. Разработчик может временно поднять бота, чтобы протестировать, на своем ПК, да. Но чтобы запустить бота на постоянной основе, вам нужен будет сервер, где бот будет постоянно работать. Часто такой сервер могут предоставить подрядчики. У нас, например, есть такая услуга.

Как создать чат-бота Viber

Разумеется, пока не забыл, вот ссылка на документацию Viber API.

С точки зрения возможностей, в Viber достаточно широкий функционал. Можно делать ботов с кнопками и инлайн кнопками. С теми самыми, которых очень не хватает в WhatsApp (да, худо-бедно кнопки завезли, но про это потом). Подробная инструкция про ботов для этого мессенджера у меня уже в работе, поэтому самое время подписаться 🙂

Холодная и теплая рассылка сообщений в Viber

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

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

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

С холодной рассылкой все чуть интереснее:

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

Viber не может проверить откуда у вас взялась база с этими получателями. Поэтому вы вроде как можете слать рассылку по холодной базе. Но:

  • У вас при верификации аккаунта появляется галочка. Мол, бренд подтвержден. Если вы “обнаглеете” и будете слать слишком много сообщений тем людям, которые на это не согласны, то легко поймаете страйк и Viber отберет и галочку и возможность рассылки. Ну или партнер отберет.
  • Вы все равно платите за каждую “инициацию диалога”.
    Условно говоря, каждая новая беседа будет стоить денег. Но если пользователь будет туда отвечать и вы ему тоже что-то отвечать, то уже вот эти ответы будут бесплатными. Почитать полноценно можно тут.
  • Все чаты с брендами лежат в отдельной папке “Бизнес чаты”. Слишком усердно стараться охватить широкую аудиторию скорее всего будет не так эффективно как те же смс или WhatsApp рассылки.

Что еще нужно понимать, при работе с рассылкой:

  • Viber сравнивает свой инструмент в первую очередь с смс рассылками. Мол, у нас тут 1000 символов а в смс всего 70. Да и платите вы за доставленные а не за отправленные сообщения.
  • Эту механику можно хорошо подвязать, например, с CRM. Пришел клиент, купил, а вы ему вдогонку еще одно сообщение, что у него скидка на следующую покупку. Хотя этот “плюс” справедлив по отношению не только к Viber, а в целом к чат-ботам. Тот же WhatsApp тоже так “умеет”.
  • Не у всех действительно есть Viber. Если бренд хочет по-настоящему присутствовать в мессенджерах, то кроме привычного Telegram бота, должен работать с аудиторией еще и в WhatsApp и в Viber и в VK. Хороший пример выстраивания такой “омниканальной коммуникации” это один крупный сайт для поиска работы с красным логотипом. Или логистическая компания с зеленым логотипом.

UPD: 2 сентября обновились условия для чат-ботов. Теперь исходящие сообщения даже у ботов будут платными. Кроме первых 10 000 в месяц. Ссылка на новость.

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

*Meta (ранее Facebook) запрещенная в РФ организация.

Создание бота для Viber

Создание бота для Viber

Александр — ведущий бэкенд разработчик

09 дек 2019

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

Существует два типа ботов:

  • сложные, которые могут самообучаться, вести диалог, как человек;
  • специализированные боты для выполнения конкретных задач. Например, узнать где в данный момент находится ваша посылка, посмотреть актуальные скидки в магазине, узнать историю автомобиля по vin-номеру и многие другие. Кроме того, бот может сам автоматически оповещать о статусе вашей посылке, о появлении новых акций в магазине и о многом другом. И поэтому, многие компании разработали своих ботов, с помощью которых они могут оказывать услуги более удобным и быстрым способом.

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

Работу начнем с изучения официальной документации Viber, она находится тут:

https://developers. viber.com/docs/.

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

В данный момент имеются библиотеки для Python и Node.JS.

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

Процесс создания бота разделим на несколько шагов:

  1. Создание бота в сервисе Viber.
  2. Создание каркаса бота на Python.
  3. Настройка бота под конкретные сообщения.
  4. Использование ngrok для локальной разработки.
  5. Пример работы.

Создание бота в сервисе Viber

Для это требуется перейти по ссылке: https://partners.viber.com/account/create-bot-account и заполнить все необходимые поля формы. После успешного заполнения данных, будет создан бот и автоматически сгенерируется токен (обязательно сохраните его — он будет использоваться для аутентификации).

Создание каркаса бота на Python

Установим библиотеку для бота от viber:


pip install viberbot

Версия python для этой библиотеки должна быть выше 2.7.

В качестве фреймворка для python возьмем легковесный Flask:


pip install Flask

Создадим и сконфигурируем нашего бота:


viber = Api(BotConfiguration(
    name='Smyt Career\'s Bot',
    avatar='',
    auth_token='your auth token'
))

Создадим каркас для обработки сообщений пользователя:


    if not viber.verify_signature(request.get_data(), request.headers.get('X-Viber-Content-Signature')):

        return Response(status=403)

    # this library supplies a simple way to receive a request object

    viber_request = viber. parse_request(request.get_data())

    if isinstance(viber_request, ViberMessageRequest):
        message = viber_request.message 
        viber.send_messages(viber_request.sender.id, [
            message
        ])

    elif isinstance(viber_request, ViberSubscribedRequest):
        viber.send_messages(viber_request.user.id, [
            TextMessage(text="thanks for subscribing!")
        ])

    elif isinstance(viber_request, ViberFailedRequest):
        logger.warn("client failed receiving message. failure: {0}".format(viber_request))

    return Response(status=200)

Для каждого сообщения пользователя выполняется проверка на подлинность с помощью токена. Также определяется тип сообщения пользователя:

  • простое сообщение пользователя;
  • запрос на подписку;
  • ошибка в запросе.

В зависимости от типа сообщения система реагирует.

В нашем примере пользователю, в ответ на его сообщение, отправляется то же самое сообщение.

Создание http-сервера

Для работы бота ваш http-сервер обязательно должен быть защищен ssl-шифрованием.

Так выглядит запуск сервиса у меня:


from flask import Flask, request, Response

app = Flask(__name__)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8443, debug=True)

Обращаю внимание, что это только ознакомительный пример и бота я запускал на локальном компьютере, поэтому не заполнил данные для ssl. Имеется возможность указать ssl-сертификат через параметр ssl_context.

Установим веб-хуку

После того, как сервер запущен, нужно указать сервису Viber куда ему нужно посылать сообщения пользователей для бота. Можно сделать разными способами.

Первый — через python:


viber.set_webhook('https://mybot.com/')

Второй — отправить запрос на установку веб-хука вручную; например, используя программу Postman.

Установим заголовки:

где X-Viber-Auth-Token – токен, полученный ранее.

Текст сообщения:

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

После этого бот уже будет рабочим и вы сможете отправлять сообщения через приложение viber, а он будет вам отвечать.

Настройка бота под конкретные сообщения

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

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


{
            "DefaultHeight": True,
            "BgColor": "#FFFFFF",
            "Type": "keyboard",
            "Buttons": [
                {
                    "Columns": 6,
                    "Rows": 1,
                    "BgColor": "#e6f5ff",
                    "BgLoop": True,
                    "ActionType": "reply",
                    "ActionBody": "search_vacancies",
                    "ReplyType": "message",
                    "Text": "Поиск вакансий"
                }
            ]
        }

Если нужно добавить несколько кнопок, то их нужно перечислить в списке Buttons.

Область для кнопок имеет сетку в 6 колонок. В параметрах кнопки указаны следующие характеристики:

  • она будет занимать 6 колонок и 1 строку;
  • иметь определенный цвет фона;
  • какой вид действия используется при нажатии;
  • задано сообщение, которое будет посылаться на сервер при нажатии;
  • задан тип сообщения;
  • указан заголовок кнопки.

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

ActionBody: action_type|value или просто action_type.

Рабочие примеры: 


ActionBody: select_country|Russia
ActionBody: search_vacancies
ActionBody: select_level|’’

Также хочу отметить, что нам необходимо запоминать ответы, которые дает пользователь. Это можно сделать несколькими способами. Я решил эти данные сохранять в параметр сообщения tracking_data.

Это поле может содержать только строковые значения, поэтому сохраним данные в json, а передавать их пользователю будем через параметр tracking_data в виде строки, путем преобразования json.dumps() и обратно через json.loads().

Вот пример работы с сообщениями пользователя:


        keyboard = {
            "DefaultHeight": True,
            "BgColor": "#FFFFFF",
            "Type": "keyboard",
            "Buttons": [
                {
                    "Columns": 6,
                    "Rows": 1,
                    "BgColor": "#e6f5ff",
                    "BgLoop": True,
                    "ActionType": "reply",
                    "ActionBody": "search_vacancies",
                    "ReplyType": "message",
                    "Text": "Поиск вакансий"
                }
            ]
        }
        is_finished = False
        buttons = {}

        if text_type == 'search_vacancies':
            tracking_data = {}
            countries = [country[1] for country in COUNTRIES]
            text_message = 'Доступны вакансии в следующих странах: {countries}.  Пожалуйста, выберите одну из них.'\
                .format(countries=', '.join(countries))
            buttons = get_buttons('select_country', COUNTRIES)

        elif text_type == 'select_country':
            tracking_data['country'] = text[1]
            items = [item[1] for item in PROFILES]
            text_message = 'Доступны вакансии по следующим профилям: {profiles}. Пожалуйста, выберите один из них.'\
                .format(profiles=', '.join(items))
            buttons = get_buttons('select_profile', PROFILES)

        elif text_type == 'select_profile':
            tracking_data['profile'] = text[1]
            items = [item[1] for item in LEVELS]
            text_message = 'Укажите пожалуйста какой у вас опыт в этой области: {items}. Пожалуйста, выберите один из них.'\
                .format(
                items=', '.join(items))
            buttons = get_buttons('select_level', LEVELS)

        elif text_type == 'select_level':
            is_finished = True
            tracking_data['level'] = text[1]

        else:
            text_message = "Выберите опцию"

        messages = []

        if is_finished:
            response = requests. get(VACANCIES_URL, params=tracking_data)
            json_response = response.json()
            items = json_response.get('results', [])
            for item in items:
                messages.append(URLMessage(media=item.get('url'),
                                           keyboard=keyboard,
                                           tracking_data={}))

            if not messages:
                messages.append(TextMessage(text='Извините, по выбранным критериям, вакансий не найдено.',
                                            keyboard=keyboard,
                                            tracking_data={}))

        else:
            keyboard_buttons = keyboard.get('Buttons', [])
            keyboard_buttons.extend(buttons)
            keyboard['Buttons'] = keyboard_buttons
            keyboard = keyboard if keyboard.get('Buttons') else None
            tracking_data = json.dumps(tracking_data)
            messages. append(TextMessage(text=text_message,
                                        keyboard=keyboard,
                                        tracking_data=tracking_data))

        viber.send_messages(viber_request.sender.id, messages)

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

Также, хочется отметить, что Бот может отправлять следующие сообщения:

  1. Обычное текстовое – TextMessage(text=’some text’).
  2. Сообщение-ссылка – URLMessage(media=’http://mysite.com’).
  3. Контактное сообщение – ContactMessage(contact=contact), где contact объект вида Contact c параметрами name, phone_number, avatar.
  4. Сообщение-картинка – PictureMessage(media=’http://picture.url.com’).
  5. Видео сообщение – VideoMessage(media=’http://video.url.com’, size=1234).
  6. Сообщение о местоположении – LocationMessage(location=location), где location – объект вида Location с указанием координат широты и долготы.
  7. Стикер – StickerMessage(sticker_id=123), где sticker_id это ид конкретного стикера.
  8. Файл – FileMessage(media=’http://path/to/file’, size=123, file_name=’file name’).
  9. Сложное медиа-сообщение – RichMediaMessage(rich_media=json_object), более подробно можно посмотреть в документации, можно вывести несколько объектов вида: картинку с текстом и ссылкой, таким образом организовать некую «карусель» объектов.
  10. Hotkeys для пользователя – KeyboardMessage – это такие кнопки которые мы делали для ответа пользователям.

Использование ngrok для локальной разработки

Как я отмечал выше, чтобы ваш сервис работал с Viber, он должен быть запущен через ssl (самоподписанные сертификаты работать не будут, нужен хотя бы let’s encrypt).

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

Установка ее очень простая: достаточно посетить сайт https://ngrok.com/.

С помощью нее вы можете пробросить свой локальный порт наружу даже с защищенным туннелем. Мой сервис локально был развернут на 8443 порту, поэтому я запустил ngrok cо следующими параметрами:


./ngrok http 8443

После это получаем такую информацию:

Тут видно что по адресу https://4c4b93d5.ngrok.io доступен мой сервис с ботом.

Этот адрес сервера нужно отправлять при установке хука инициализации бота.

Пример работы

После нажатия кнопки (Поиск вакансий):

После выбора страны (Россия):

После выбора профиля деятельности (Разработка):

После указания опыта работы(Неважно) получаем такие результаты:

По нашему запросу нашлась одна вакансия.

К сожалению, мы самостоятельно не можем добавить нашего бота в общий список всех доступных ботов и даже не можем дать на него прямую ссылку, а все потому, что у компании Viber строгие требования к чат-ботам и нужно обращаться в компанию Viber с просьбой о подтверждении (судя по статьям в интернете, такое подтверждение удается получить только крупным компаниям).

 

Полный код бота доступен по адресу:

https://github.com/akapitonov/simple-viber-bot

  python, viber

  Смотреть все посты

Генератор QR кода для звонков и сообщений через мессенджер Viber