- PVSM.RU - https://www.pvsm.ru -
Приветствую! Нарисовалась у меня задача: нужно интегрировать в CRM систему мессенджеры, а то трудно анализировать работу менеджеров, когда они общаются с клиентами используя один общий «рабочий» телефон. И первым делом нужно было подключить WhatsApp, как один из самых популярных мессенджеров у нашей целевой аудитории.
Казалось, требуется всего лишь отправлять и принимать сообщения. А столько подводных камней…
Официального API в релизе тогда ещё не было. Но Facebook успел прислать ссылку на форму, для подключения официального API, находящегося в тестировании.
Рассматривал вариант «серого» способа, использование неофициального сервиса, который отправляет сообщения через WEB интерфейс, подключается сканированием QR кода.
Но это зависимость от чужого API, в любой момент может всё отвалиться, да и передавать чужому сервису номера клиентов не хотелось. А ещё писать под чужой авторский API, да ещё который придётся переписывать, при переезде на другой сервис, тоже такое себе удовольствие.
Ну и ещё требуется держать телефон включенным (хотя некоторые сервисы за доп плату решали эту проблему :)
Посадить человека, пускай копипастит сообщения клиентам. Шутки шутками, а из этой идеи родилось решение!
Есть такая программка для автоматизации действий под Android, называется Tasker [1], одна из первых подобных программ. Но я в ней не разобрался с первого раза… Поискал аналоги, наткнулся на программу Automagic [2]. В ней события, действия и ветвления рисуются как блок схема.
И вот в ней я то и придумал решение, root права нам не нужны. Получилось методом научного тыка нарисовать скрипт отправки сообщения, далее буду называть поток, так именуется каждый отдельный нарисованный алгоритм в данной программе. А теперь разберём его работу:
sleep(2000); // 2 секунды на запуск вацапа
sle = 200;
ch_c = 0;
ch = false;
is_sended = false;
sleep(sle);
ch = existsElementById("com.whatsapp:id/entry"); // Проверяем, появилась ли на экране кнопка отправить
sleep(sle);
if (ch == false) {
ch = existsElementById("com.whatsapp:id/entry"); // Снова проверяем
ch_c = ch_c + 1;
sleep(1500);
}
if (ch == false) {
ch = existsElementById("com.whatsapp:id/entry");
ch_c = ch_c + 1;
sleep(5500);
}
ch = existsElementById("com.whatsapp:id/entry");
sleep(sle);
setText2ById("com.whatsapp:id/entry",text); // Вставляем сообщение
sleep(sle);
clickById("com.whatsapp:id/send"); // Жмём кнопку отправить
sleep(sle);
back();
sleep(sle);
back();
status = 2;
if(ch == true) { // Если всё хорошо, запоминаем, для отправки на сервер
is_sended = true;
status = 1;
}
Принимать сообщения на много проще. Ставим событие на уведомление от мессенджера. Как только приходит уведомление, помечаем его прочитанным, и отправляем его на сервер как есть. Тот уже спарсит адресата и текст.
Основную функцию отправки сообщения алгоритм выполняет отлично. Так как не используется WEB интерфейс, схватить баню от мессенджера тут меньше рисков, как мне кажется. Арендовал слабенький виртуальный сервер, установил туда Android и перенёс всё.
На отправку одного сообщения новому контакту уходит ~5 сек. Для проверки доставки и прочтения сообщения, разработал отдельный поток, но он в черновом варианте и иногда не срабатывает. Поэтому о нём позже.
В данный момент не реализована функция приёма медиа сообщений (фото, аудио, вложения), но это можно выгружать из WhatsApp, используя кнопку поделиться сообщением в будущем.
Чуть позже хочу сверху виртуальной машины, где запущен мессенджер, написать SIP транк, через который можно будет звонить через WhatsApp как через SIP ^.^ что может сэкономить расходы на связь.
Ещё хочу делать скриншоты аватарок и отправлять их на сервер, для прикрепления миниатюры к контакту в CRM системе.
Ну и вообще самое интересное: Данный способ обёртывания в API подойдёт почти для любого приложения под Android :)
Всё изначально разрабатывал и запускал на Android 9, xiaomi mi 9 se, root прав нет.
Автор: Кирилл Петряев
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/android/345795
Ссылки в тексте:
[1] Tasker: https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&hl=ru
[2] Automagic: https://automagic4android.com/
[3] HiAsm: https://hiasm.com/
[4] Источник: https://habr.com/ru/post/487182/?utm_source=habrahabr&utm_medium=rss&utm_campaign=487182
Нажмите здесь для печати.