Webhook whatsapp что это
Я разработчик и пишу чат-ботов на заказ и для развлечения. Популярность набирает мессенджер WhatsApp, поэтому получаю много заказов именно для написания ботов под WhatsApp. Использую 1С в качестве платформы для разработки. Это позволяет мне максимально быстро выпускать требуемые доработки, а также снижает стоимость разработки. В конце статьи делюсь обработкой, которая помогла мне стартануть как разработчику чат-ботов на платформе 1С.
Бизнес готов платить за чат-ботов потому, что чат-боты с одной стороны снижают издержки за счет автоматизации части рутинных процессов, с другой стороны чат-боты значительно способствуют повышению продаж, т.к. позволяют удерживать клиентов, а также позволяют возвращать своих потерянных клиентов.
Для написания чат-бота WhatsApp, разумеется, нужен шлюз, программный интерфейс мессенджера. Не так давно компания Facebook опубликовала свой официальный шлюз - Какие существуют ограничения WhatsApp Business API
Какие есть альтернативы WhatsApp Business API
Одно время я использовал различные библиотеки с github, которые предоставляли доступ к WhatsApp API. Долго мучился, разбирался, настраивал. К недостаткам такого решения можно отнести то, что придется разбираться в дебрях кода, который собственно не относиться к чат-боту. Дополнительно потребуется оплачивать хостинг, чтобы модуль WhatsApp API работал и был доступен через Интернет.
Также надо понимать, что facebook постоянно вносит изменения в WhatsApp, поэтому библиотеки с github со временем перестают работать. Есть некоторый промежуток времени - день-два, в течение которого библиотека будет в нерабочем состоянии. Иными словами, ваш чат-бот не будет работать до тех пор, пока автор кода не выпустит новый патч на github. И такие обновления случаются по три-четыре раза в год и, как правило, внезапно. Приходится с нетерпением ждать патч в течение нескольких дней. А что, если патч не выйдет?
В Интернете нашел сервис, который позволяет писать чат-ботов для WhatsApp. Меня подкупил бесплатный тариф для разработчиков. В сервисе можно писать своего чат-бота сколь угодно долго и при этом не платить ни копейки. А когда чат-бот будет готов, то передать бот клиенту, а клиент уже заплатит.
Например, чтобы разработать чат-бота у меня уходит порядка одной недели, дополнительно требуется продемонстрировать работу заказчику. В итоге проходит около двух-трех недель с момента начала разработки до публикации. Всё это время я использую сервис Green API бесплатно. Когда бот разработан я передаю его заказчику, и уже заказчик оплачивает. Такие условия являются комфортными для меня.
Оба перечисленных выше способа использования WhatsApp API являются неофициальными. Иными словами, facebook не одобряет такое использование WhatsApp и борется с подобного рода сервисами и реализациями.
Какие риски при использовании неофициального шлюза WhatsApp API
Риск один - аккаунт воцап будет заблокирован без возможности восстановления. При этом номер телефона останется – можно будет по-прежнему совершать звонки и отправлять SMS, однако использовать приложение WhatsApp на данном номере будет невозможно.
Однако, если вы пишите чат-бота, то в этом случае все риски снимаются. Клиент пишет боту первым. Тем самым клиент косвенно соглашается вступить в диалог с ботом. Если клиент пишет вам первым, то вы никогда не получите бана. Однако есть возможность писать первым и самому, но в разумных пределах разумеется.
За два года у меня не было ни одного бана. Использую сервис преимущественно для чат-ботов и интеграции с различными CRM.
Писать чат-ботов на официальном WhatsApp Business API могут позволить себе только большие ИТ-компании, которые работают с крупными заказчиками, для которых средний чек для чат-бота в 50.000 руб/мес не составляет проблем. Для мелкого и среднего бизнеса решением будет использовать неофициальный WhatsApp API с риском блокировки аккаунта, но по цене в десять раз ниже. По мере того, как бизнес начнет понимать эффективность чат-бота можно говорить о переходе с неофициального канала на официальный.
Для индивидуальных разработчиков и стартап-команд, однозначно, лучшим решением является использование неофициальных поставщиков WhatsApp API.
А вот, собственно, обработка с которой я начал свой путь разработчика чат-ботов на 1С.
Достаточно много видел примеров использования whatsapp-уведомлений с zabbix, и другими системами мониторинга, но на собственные эксперименты с whatsapp меня вдохновила эта статья. Однако если с системами мониторинга все ясно, то при наличии прекрасной «врожденной» системы email-оповещений, городить огород ради одной bacula было откровенно лень. Да и вдруг, потом захочется поставить zabbix или еще что-то куда-то послать? Каждому боту по ватсапу?
Так что, пусть это будет что-то более универсальное. Например, отдельный сервер, который сможет обслужить bacula, zabbix, syslog-сервер, сайт или даже виндоусы с макинтошами.
Приступим. Я ставил на «пустой» Centos 7 amdx64 в lxc-контейнер под proxmox ve 4.4.
Первое, что обычно делаю — обновляю, подключаю epel и ставлю ssh, чтобы потом удобно работать
Далее ставим зависимости и yowsup:
Скачиваем, распаковываем и устанавливаем yowsup:
Регистрируем номер мобильного. Симка вставлена в мобильник (или шлюз, в моем случае) на который придет смс. Номер не должен быть засвечен в whatsapp. Сначала запрашиваем код регистрации:
phone — ваш номер телефона, начинающийся с 7
cc — country code — это код страны (для России это 7)
mcc — mobile country code — это другой код страны (для России это 250)
mnc — mobile network code — это код вашего оператора. (01 — МТС, 02 — мегафон, 20 — теле2, 99 — билайн)
В ответ придет смс с кодом вида XXX-XXX, который используем для подтверждения регистрации
Сервер сообщит об удачной регистрации:
status: ok
kind: free
pw: X1isWwe+25d/aOXJpcSduzTV7fg=
price: 33,00 руб.
price_expiration: 1495380655
currency: RUB
cost: 33.00
expiration: 4444444444.0
login: 7хххххххххх X1isWwe+37d/aOXJpcSduzTV7fg=
type: new
Записываем пароль из переменной pw в конфиг-файл
В этом файле три строчки (страна, номер, пароль):
Собственно, все. Пробуем
С localectl в моем сетапе какие-то проблемы, поэтому:
пишем LANG=ru_RU.UTF-8 , сохраняем и рестартуем сессию
После строки import sys добавить:
Скачиваем и распаковываем webhook в любой каталог. Я для удобства положил в /var/webhook
А чтобы потом, при желании, было удобнее добавлять всякие файлы-картинки-видео — так же скопировал yowsup-cli.config в /var/yowsup Как говорится, пусть все будет через одно место.
Итак, проверяем, правильно ли мы написали хук, запуском:
[webhook] 2017/04/26 05:12:48 version 2.6.3 starting[webhook] 2017/04/26 05:12:48 setting up os signal watcher
[webhook] 2017/04/26 05:12:48 attempting to load hooks from hooks.json
[webhook] 2017/04/26 05:12:48 found 1 hook(s) in file
[webhook] 2017/04/26 05:12:48 loaded: wp-admin
[webhook] 2017/04/26 05:12:48 serving hooks on 0.0.0.0:9000/hooks/
Сохраняем. Запускаем. Проверяем.
Теперь можно сделать простую отправку средствами curl с другой машины
Теперь можно заняться bacula, т.е. тем, что, собственно, и сподвигло на вышеописанные пляски Идем на сервер, где установлен bacula-director, ставим bc и curl.
Из секции Variables удаляем RECIPIENT_NUMBER и CONF, они нам не понадобятся. А переменную YOWSEXEC изменяем на curl-вызов хука отправки админу.
Вводим свои данные для подключения к MySQL
И вместо строки отправки:
Ставим права на исполнение:
Готово. Теперь, как указано в статье, можно вставлять в задания
и получать на телефон красивые отчеты:
Всем спасибо. Буду благодарен за комментарии и поправки.
UPD(12.01.2018): Yousup обновили до 2.5.7, баги поправили. Если у кого не работает — обновить yowsup, при регистрации использовать --env android (поправил выше).
Вам необходимо разместить свой вебхук скрипт на хостинге и указать URL адрес в личном кабинете. Указать можно как URL адрес так и IP.
Примеры реализации Webhook
Эти туториалы содержат варианты реализации Webhook скрипта на разных языках программирования, Вы можете ими воспользоваться в качестве примеров при запуске своего Webhook сервера. Как указать и тестировать Webhook адрес с помощью инструментов Chat API, а также более тонких моментов настройки Webhook мы расскажем ниже.
Как мне протестировать работу Webhook?
Чтобы проверить и протестировать работу Webhook и убедиться, что сервер отправляет данные, мы предлагаем Вам два варианта:
1. Встроенные инструменты тестирования личного кабинета ChatAPI
Для этого перейдите в раздел тестирования в личном кабинете. Для проверки Webhook нам будут интересны два раздела – это «Симуляция Webhook» и «Проверка Webhook».
Симуляция Webhook
Этот инструмент позволяет симулировать Post запрос на указанный Вами адрес Webhook.
Адрес устанавливается в основном меню выбранного инстанса.
Проверка Webhook
2. Webhook.Site
Есть несколько бесплатных ресурсов, которые берут на себя возможность приема и обработки данных и с которых можно взять url адрес для работы с Webhook. Для тестирования Вы можете воспользоваться подобным сайтом – мы рекомендуем Webhook.Site поскольку часто с ним работали и оставались довольны.
АСК статус «Прочитано»
А также статус инстанса
Как мне настроить Webhook? Каким требованиям он должен соответствовать?
Мы в меньшей степени может помочь с настройкой Вашего Webhook сервера, обратитесь к инструкциям по созданию ботов, которые мы указывали выше. Самым Важным критерием для нас является ответ 200-го статуса. Если наш сервер получает этот ответ, то значит все было сделано верно.
Обратите внимание, что параметр ACK отсутствует, поскольку на входящие не формируются ACK статус уведомления.
Статус Инстанса
authenticated - Авторизация пройдена успешно
подстатусы:
- normal - держите телефон подключенным;
- phone - телефон не подключен;
- computer - попытка подключения к телефону
- offline - компьютер не подключен
- battery_low - низкий заряд батареи телефона
- syncing - идет синхронизация;
init - Это начальный статус. Включение
loading - Загрузка, повторите через 30 секунд.
Дополнительные настройки Webhook
Существует ряд настроек, которые влияют на объём данных пересылаемых сервером, эти настройки можно изменять через документацию или частично через основное меню инстанса. Разберем эти параметры поближе.
Также, мы рекомендуем посмотреть видео гайд, где мы настраиваем Webhook уведомления:
Если вы уже занимаетесь автоматизацией вашего бизнеса или только планируете, то вам наверняка уже приходилось сталкиваться с этим малопонятным термином. Итак, многие задаются вопросом, что такое Webhooks? В данном материале мы максимально простыми словами расскажем о том, что это Webhook означает.
Для чего используется Webhook
Принцип работы Webhooks
Иными словами, разницу в работе API и Webhook можно описать фразой «не надо постоянно спрашивать меня, произошло ли данное событие, как только оно произойдёт, я сам об этом сообщу». Естественно, что это очень простое описание, но оно хорошо передаёт общий принцип работы «вебхуков».
Осталось только добавить, что термин Webhook появился относительно недавно. Его впервые использовал в 2007 году программист Джефф Линдсей, который и разработал данную технологию. Создавая новое слово, он взял за основу термин «Hook», который программисты используют для описания технологии внесения изменений в стандартное поведение системы.
Вебхуки и Apix-Drive
Налаживая интеграции между системами, мы активно используем, как API, так и Webhooks. Классический пример – интеграция с конструктором сайтов Tilda была реализована именно посредством «вебхуков». Благодаря этому вы можете получать уведомления о самых разных действиях посетителей созданного вами сайта. Например, как только новый покупатель оставит заявку через форму, его контакты будут автоматически внесены в вашу CRM-систему. Применяются «вебхуки» и для интеграции с другими конструкторами сайтов, вроде Bloxy, Landingi и Nethouse.
Ещё примеры использования Webhook – сервис телефонии Telphin, конструктор маркетинговых квизов Enquiz и конструктор чат-ботов Chatra. На самом деле подобных примеров можно привести ещё множество. Но главное тут не в количестве систем, а в простоте их подключения для конечного пользователя.
Для того чтобы наладить интеграцию с любым из подобных сервисов, не нужно понимать глубинные принципы работы технологии Webhook. Отсутствие таких знаний никак не помешает вам наладить связи между самыми разными системами, сделав это просто в несколько кликов мышкой. И никаких сторонних разработчиков, никаких специализированных знаний не потребуется.
Читайте также: