On-line: Haz, гостей 0. Всего: 1 [подробнее..]
АвторСообщение



Пост N: 19
Зарегистрирован: 30.01.18
ссылка на сообщение  Отправлено: 20.02.20 19:28. Заголовок: Отправка/получение сообщений в WhatsApp


Встретил вот эту тему про отправку сообщений в 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.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 1 [только новые]







Пост N: 660
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 24.02.20 12:47. Заголовок: Интересная тема :sm..


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

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 684
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет