Форум » Для флейма » Отправка/получение сообщений в WhatsApp » Ответить

Отправка/получение сообщений в WhatsApp

NickSam: Встретил вот эту тему про отправку сообщений в Viber, значит интерес к вопросу интеграции с мессенджерами у участников форума есть. Этот замечательный форум не раз выручал меня, поэтому хочу быть тоже чем то полезен, и делюсь своими наработками по этой теме. У меня встала задача отправки сообщений в WhatsApp из CRM системы на Harbour. Первые результаты гугления несколько расстроили, так как выяснилось, что WhatsApp бережет свой API прямо как девственность и безоговорочно дает только крупным клиентам типа Сбера и ВТБ. Но на Гитхабе была найдена имплементация API на языке Go (Golang). Язык очень близок по парадигме и синтаксису к нашему любимому Harbour, поэтому никаких трудностей с пониманием кода там не возникнет. И главное, что нет никаких зависимостей - только загрузочный модуль. Постановка задачи. В системе на Harbour идет ввод в базу так называемых записок (распоряжений, уведомлений и т.д.), которые связаны с сущностями системы (документы, контрагенты, договора и т.д.) Эти записки надо посылать в виде сообщений WhatsApp определенным сотрудникам, те могут с телефона ответить и система встроит ответ в базу, привязав его к нужной сущности. Архитектура реализации достаточно простая. Программа листенер на Harbour постоянно находится в ожидании новых данных из базы и как только они появляются выжимает их в текстовые файлы формата .csv. Его содержимое: телефон адресата, текст сообщения, ФИО отправителя. Программа бот на Go постоянно находится в ожидании этих файлов и при их появлении читает оттуда данные и посылает сообщение в WhatsApp. Также можно посылать любые вложения (документы, фото, аудио, видео файлы). Бот на Go в свою очередь стоит на прослушке новых входящих сообщений и при их появлении формирует текстовые файлы, которые потом забираются листенером на Harbour и встраиваются в ERP систему. Документации на пакет практически нет, только README.md на Гитхабе, но там же есть примеры, из которых можно по крайней мере стартовать. И еще много информации можно получить из прочтения Issues и их обсуждения там же. Разработчики охотно отвечают на вопросы и фиксят баги. Итак, установка и начало работы. 1. Скачиваем и устанавливаем Go - https://github.com/golang/go Вот хорошая инструкция по быстрому старту на Хабре https://habr.com/ru/post/133281/ 2. Пакет Rhymen/go-whatsapp и исходный код бота WhatsApp можно скачать вот здесь. Там же есть пример .csv файла и готовый загрузочник, который можно запустить и попробовать. 3. Допиливаем под себя код бота, собираем из всего этого загрузочник и кладем его в папку где будет происходить обмен текстовыми сообщениями. 4. Для организации взаимодействия с API WhatsApp нужен телефон с активной сим-картой и аккаунт WhatsApp.Все дополнительные сессии, подключенные к WhatsApp кроме телефона (например, с компьютера), должны быть выключены. 5. Запускаем загрузочник. Для установления первоначального соединения необходимо с телефона в течение 20 секунд отсканировать появившийся QR-код. В телефоне при входе в WhatsApp – раздел WhatsApp Web должны появиться данные новой сессии - github.com/Rhymen/go-whatsapp. В результате в нашем рабочем каталоге будет создан файл whatsappSession.gob, с данными текущей сессии, которые будут использованы при последующих входах чтобы не сканировать каждый раз QR-код. Раз в час бот перелогинивается (это надо чтобы не нарваться на бан от WhatsApp) и данные новой сессии перезаписываются в файл whatsappSession.gob. 6. Для проверки работы берем пример .csv файла с сообщением и меняем в нем номер телефона адресата. Для тестирования можно посылать самому себе, то есть на тот же самый номер телефона что был залогинен. Описанная система у нас нормально функционирует уже полгода. Дополнительно сканировать QR-код пришлось за все время только один раз при замене телефона на новый. Так как сообщений очень много и ранее использовались платные СМС, то удалось хорошо съэкономить на этом. Также в пакете есть много дополнительных возможностей (отслеживание статуса сообщений, рассылка группе адресатов, контроль уровня зарядки батареи и т.д.) Кроме того, кого то может заинтересовать более плотно подружить Harbour и Go используя продукт Александра Кресина Guiserver, который можно собрать как библиотеку, чтобы удобнее было писать Harbour приложения, используя возможности Go.

Ответов - 1

Sergy: Интересная тема



полная версия страницы