Бесплатная отправка сообщений в Whatsapp бот из 1С

08.06.22

Интеграция - Мессенджеры и боты

Задача: Имеются 200 контрагентов, которым ежедневно нужно из отчета 1С выслать сумму их задолженности или предоплаты в Whatsapp (рассылка должна идти с номера менеджера этих контрагентов).

Скачать файлы

Наименование Файл Версия Размер
Whatsapp рассылка дебиторки
.epf 8,90Kb
28
.epf 8,90Kb 28 Скачать
мой index.js
.js 3,23Kb
23
.js 3,23Kb 23 Скачать

Первым делом посмотрел публикации на infostart, но в большинстве решений просят денег или платные сервисы или методы подключения к Whatsapp устарели.

Поэтому начал искать решение в тех языках программирования, в которых разбираюсь. 

Вышел на решение whatsapp-web.js (https://www.npmjs.com/package/whatsapp-web.js/v/1.16.4-alpha.0)

Для того, чтобы воспользоватся npm, нужно установить node.js (https://nodejs.org/en/)

Node.js нужно будет установить на всех компьютерах пользователей, которые будут работать с рассылкой (или терминальном сервере).

Далее скачиваю пакет в папку на компьютере

Для этого нужно

  • Открываем cmd 
  • Проверяем, что node.js установлен: node -v
  • Открываем пустую папку в которой и будет наш проект к примеру (D:\Whatsapp)

Набираем команду: npm init (На все вопросы жмем интер)

 

 

 

  • Устанавливаем пакет whatsapp-web.js

npm i whatsapp-web.js

 

 

 

 

  • Создаем в папке файл index.js

 

 

 

  • В файл нужно добавить логику рассылки, к примеру, как в примере на страничке npm whatsapp-web.js
 

 

const { Client,LocalAuth } = require('whatsapp-web.js');

const client = new Client({
    authStrategy: new LocalAuth(),
    puppeteer: { headless: false }
});

client.on('qr', (qr) => {
    // Generate and scan this code with your phone
    console.log('QR RECEIVED', qr);
});

client.on('ready', () => {
    console.log('Client is ready!');
});

client.on('message', msg => {
    if (msg.body == '!ping') {
        msg.reply('pong');
    }
});

client.initialize();

 

 

  • запускаем проект 

node index.js

 

 

 

  • после запуска должна вылезти форма авторизации в Whatsapp 

 

 

 

 

На телефоне открываем Whatsapp (Связанные устройства) и сканируем q-code для авторизации.

 

 

 

 

Пошлем на этот номер команду !ping, то бот нам ответит pong

 

 

 

На этом задача минимум решена. 

У нас запущен бот, который отвечает на сообщения. Мы влияем из файла index.js, что будет отправлено в Whatsapp. 

 

Начинаем решать основную задачу.

Мне рассылку из 1с нужно  делать не с левого номера (бота), а с номера менеджера, чтобы контрагенты не видели разницы между рассылкой и обычными сообщениями менеджера и контрагенты могли отвечать на сообщения.

1. В 1с нужно создать справочник номераWhatsapp или регистр сведений  (измерение контрагент, ресурс номерWhatsapp). или добавить реквизит номерWhatsapp в справочник контрагентов. 

У меня это Справочник "предопределенные константы", в которой есть табличная часть с двумя реквизитами.

2. Рассылку из 1с будут запускать на терминальном сервере все содержимое папки Whatsapp поместим на терминальный сервер в папку (C:\Program Files (x86)\Whatsapp\)

3. Установим node.js на терминальном сервере

 

Создал в 1с обработку 

(Кнопки добавить и записать служат для добавления новых контрагентов с номером)

 

 

 

 

Обработка генерирует строку !комадна для бота и Json.

  • команда !senddebit
  • json массив массивов (номер Whatsapp и сумма):
 

 

[
[79951231212,4445630.5],
[79041231212,-57113968],
[79771231212,-5322.81]
]

 

После нажатия кнопки "Отправить в Whatsapp":

1. Формируются данные для отправки

2. Строка с данными автоматически копируется в буфер обмена

3. Всплывает окно авторизации в Whatsapp (авторизоваться должен пользователь от чего номера будет рассылка).

4. После авторизации пользователь должен вставить текст из буфера обмена в сообщение любому номеру (желательно второму своему, потому что это сообщение мы и будем ловить, обрабатывать и рассылать)

 

Но для того, чтобы index.js обработал новую команду !senddebit, нужно его доработать. 

На этот раз ловим сообщение, которое отправили мы сами (без разницы кому) и которое начинается на !senddebit

Вместо события client.on('message', буду использовать событие client.on('message_create' которое ловит все сообщения, в том числе, которые мы создали сами.

 

 

client.on('message_create', async msg => {
    if (msg.fromMe) {
		if (msg.body.startsWith('!senddebit ')) {
            const messagesJson = msg.body.replace('!senddebit ','')
            const arrMessages = JSON.parse(messagesJson)
            if (Array.isArray(arrMessages)) {
                arrMessages.forEach(async n_m=>{
                    let number = n_m[0]+'';
                    let sum = n_m[1];
                    number = number.includes('@c.us') ? number : `${number}@c.us`;
                    if (number.length==16 && sum!='') {
                        let type = 'задолженность'
                        if (Number(sum)<0) {
                            type = 'предоплата'
                            sum = sum *-1
                        }
                        let message = 
`Добрый день!
Ваша ${type} составляет ${sum}`
                        let chat = await msg.getChat();
                        chat.sendSeen();
                        client.sendMessage(number, message);
                    }
                })
            }
        }
    } 
});

 

В итоге контрагенту приходит сообщение

 

 

 

Если вам понравилась статья, поставьте плюсик, мне будет приятно)

 

Тестировал: 

1С:Комплексная автоматизация 2 (2.4.13.209)

Платформа 1С:Предприятие 8.3 (8.3.19.1467)

Whatsapp ватсап whatsapp-web node npm

См. также

SALE! 25%

Конструктор ботов Телеграм, редакция 2

Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Развитие популярного решения для интеграции мессенджера Telegram с нашей любимой 1С.

15000 11250 руб.

18.06.2021    52096    244    241    

311

Интеграция 1С с телефонией и чатами WhatsApp и Telegram

Телефония, SIP Мессенджеры и боты Платформа 1С v8.3 Конфигурации 1cv8 Россия Управленческий учет Платные (руб)

Интеграция 1С с телефонией и чатами WhatsApp и Telegram автоматизирует работу оператора со звонками и чатами и добавит вашей 1С элементы CRM системы. Храните всю историю взаимоотношений в 1С, не теряйте звонки, скачивайте, прослушивайте в любое время из карточки клиента или журнала звонков, держите руку на пульсе, используя блок отчетов по звонкам. Интегрируйте вашу 1С и чатами WhatsApp и Telegram, общайтесь с клиентами с единого номера и в одном окне. Теперь чаты с клиентами хранятся в карточке партнера в 1С, а не в личных мобильных ваших менеджеров.

4100 руб.

28.04.2022    11144    7    6    

28

Что нам стоит бота построить? Нарисуем - будет жить! Графический конструктор телеграм-ботов

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С (есть сертификат 1С:Совместимо) и специалистами ООО "Инфостарт" (см. комментарии). Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 руб.

27.12.2021    28849    70    141    

159

Email, SMS, Telegram рассылки из 1С - Директ Маркетинг

Управление взаимоотношениями с клиентами (CRM) Мессенджеры и боты SMS рассылки Email рассылки Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Полный набор инструментов для качественных транзакционных и маркетинговых Email, SMS, Telegram рассылок из 1С

7788 руб.

07.04.2014    81187    36    190    

124

Легкий документооборот (+чат-бот для Telegram)

Документооборот и делопроизводство (СЭД) Мессенджеры и боты Учет документов Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Управленческий учет Платные (руб)

Расширение для согласования справочников и документов в конфигурациях "1С: Бухгалтерия 3.0", "Управление нашей фирмой", "1С ERP Управление предприятием". Ролевая адресация, условная маршрутизация, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Версия для абонентов 1cfresh.com. Сертификат 1С-Совместимо. Расширение входит в TOP устанавливаемых на 1cfresh.com https://dev.1cfresh.com/

14900 руб.

15.11.2018    25421    16    45    

46

Мессенджер WhatsApp для 1С

Мессенджеры и боты Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Платные (руб)

Мессенджер WhatsApp для 1С - отправка и получение сообщений, картинок, файлов и видео прямо в 1С. Расширение работает с сервисом GreenApi.

15600 руб.

23.06.2023    2389    1    1    

5

Личный кабинет сотрудника для 1С:Документооборот 2.1 в Telegram

Мессенджеры и боты Учет документов Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Сделайте взаимодействие сотрудников компании быстрым и удобным. В Личном кабинете в Телеграм сотрудники могут получать и выполнять задачи используя популярный мессенджер

11520 руб.

29.12.2022    6055    4    3    

7

Интеграция 1С и Viber (Вайбер)

Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Viber - самый популярный мессенджер в России. По данным компании J’son & Partners Consulting, в начале 2016 года программу использовали до 60 % владельцев смартфонов или около 60 млн россиян. В Viber есть инструменты для продвижения бизнеса, вовлечения и информирования аудитории.

6000 руб.

04.04.2017    69135    73    72    

130
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. uno-c 224 08.06.22 12:21 Сейчас в теме
Думал, что Вацап в отличие от Телеги и Вайбера, вообще не дают бесплатный интерфейс для подобных вещей.
2. dima1c 37 08.06.22 12:48 Сейчас в теме
(1) так они и не дают, это хак посредством работы через веб форму. по идее если они переделают веб формы то всё слететь может.
adhocprog; CyberCerber; +2 Ответить
16. nomadon 363 08.06.22 16:25 Сейчас в теме
(2) кроме того что не дают, лицензионным соглашением запрещают такие действия
19. Apolonov-Erik 43 08.06.22 21:23 Сейчас в теме
(2)а мне все равно понравилось решение, а так с Вами согласен, как веб морду переделают все перестанет работать
30. John_d 4728 09.06.22 09:16 Сейчас в теме
(19) просто нужно будет загрузить новую версию
npm i whatsapp-web.js
В (13), (17) написали что этот метод у людей работает без проблем несколько лет.
3. frkbvfnjh 767 08.06.22 13:13 Сейчас в теме
Слишком сложно, оно того не стоит, легче заставить пользоваться телегой
7OH; simuljakr; kbulygin; progersan; remix950; markers; vano-ekt; CagoBHuK; maksa2005; +9 3 Ответить
4. John_d 4728 08.06.22 13:18 Сейчас в теме
(3) Но контрагентов не заставишь перейти на телеграм. До этого менеджер 200 сообщений вручную набивала скопирует цифру из ексель вставит в ватсап.
nikolasx; JetBrain; ivanov660; +3 Ответить
7. ivanov660 3958 08.06.22 14:55 Сейчас в теме
(3) Бизнес ставит задачи и платит за это деньги.
nikolasx; +1 Ответить
8. vano-ekt 122 08.06.22 15:14 Сейчас в теме
(4) скажите, что пользуясь сабжем, они взаимодействуют с экстремистами, и на них уже пристально смотрят кое-откуда
21 марта 2022 года Тверской суд Москвы признал Meta экстремистской организацией в России
ixijixi; kbulygin; starik-2005; Apolonov-Erik; +4 Ответить
20. unknown181538 132 08.06.22 23:09 Сейчас в теме
(3) Насколько я понял, через телегу рассылку можно делать, только если контрагент подписан на специального бота.
Что не удобно для рассылки по контрагентам.
Я пришел к выводу, что телега подходит только для внутренних рассылок.
Или я ошибаюсь?
25. frkbvfnjh 767 09.06.22 07:40 Сейчас в теме
(20) Ну у нас наверное более скромные клиенты - мы просто говорим, что для рассылки нужно установить телеграм и создаем группу с ботом и добавляем всех кому нужна рассылка. Никто ни разу даже не спросил почему Телеграмм, или что они хотят получать рассылку только в вайбере. Просто - если нужна рассылка ставьте телеграмм, и проблем пока что не было.
31. John_d 4728 09.06.22 09:18 Сейчас в теме
(20) Все так и есть. Для внутренней рассылки используем телеграм бота.
5. ivanov660 3958 08.06.22 13:18 Сейчас в теме
В версии 8.3.23 уже реализована поддержка, возможно через 8-10 месяцев можно будет пощупать типовую реализацию.
mkostya; quazare; +2 Ответить
10. John_d 4728 08.06.22 15:22 Сейчас в теме
(5) чего поддержка реализована?
11. reset2 16 08.06.22 15:46 Сейчас в теме
(10) https://wonderland.v8.1c.ru/blog/plan-zadach-na-versiyu-8-3-23-platformy-1s-predpriyatie/

Поддержка интеграции с WhatsApp Запланирована

Но это было до....
21 марта 2022 года Тверской суд Москвы признал Meta экстремистской организацией в России
15. nomadon 363 08.06.22 16:19 Сейчас в теме
(11) т.к. нет API для обычного мессенджера, логично предположить, что будет для бизнес-аккаунта
18. Apolonov-Erik 43 08.06.22 21:14 Сейчас в теме
(5) да да, только платить придется в 1с )))
6. quazare 3434 08.06.22 14:44 Сейчас в теме
вопрос риторический - сколько просуществует ватсапп в России? 1-2 года?

и, мне кажется, он морально устарел и функционально недостаточен уже.....
7OH; KilloN; Apolonov-Erik; Fox-trot; +4 Ответить
9. John_d 4728 08.06.22 15:21 Сейчас в теме
(3) Кстати про телеграм. Такую задачу в телеграмме не так то просто решить. Бот в телеграме не умеет слать личные сообщения пользователям (даже если мы бы знали их id). Бот в телеграме умеет слать сообщения в группы и каналы, т.е. надо создать 200 групп по группе на контрагента и слать ботом уже в эту группу сообщение (как-то не очень красиво)
AlexandrSmith; unknown181538; +2 Ответить
12. ra9000 8 08.06.22 15:54 Сейчас в теме
(9) Я написал обработку для отправки ботом - личных сообщений, В 1с-ке привязал id клиента в этом боте, и шлю сообщения.
Решение заняло 2 дня, причем все реализовано на 7.7
darshi; user663418; KilloN; quazare; +4 Ответить
21. unknown181538 132 08.06.22 23:11 Сейчас в теме
(12) Ну это нужно не телефон клиента, а ID, что достаточно неудобно.
Я делал для внутренней рассылки через бота - сотрудник подписывается на бота, и после этого сообщения получает уже в личку.
14. nomadon 363 08.06.22 16:18 Сейчас в теме
(9) можно не просто бота запускать, а юзер бота. Но это, как и в whatsapp`e, пока не достигнешь лимита новых пользователей = бан.
24. KOTzilla 15 09.06.22 05:10 Сейчас в теме
(9)
Бот в телеграме не умеет слать личные сообщения пользователям

Личные сообщения бот слать может, если мне не изменяет память, бот не может инициировать начало беседы. Т.е. пользователь должен начать беседу первым, тем самым подтверждая, что этот бот, для него(пользователя), желанный собеседник=) как бы защита от спама, я это так понимаю.
36. Sergey_Borisovi4 93 09.06.22 12:26 Сейчас в теме
(9) Есть библиотека Telethon - позволяет слать сообщения от имени пользователя, а не бота. Типа альтернативное api.
13. nomadon 363 08.06.22 16:16 Сейчас в теме
Делал на этой библиотеке импорт сообщений менеджеров по расписанию в 1с (текст, картинки, звук). Просмотр истории в отчете с открытием картинок.
Все крутится на сервере в фоновом задании по расписанию, авторизация каждого пользователя индувидуальна, в окне 1с рисуется QR для сканирования.
Располагая на серверной части можно централизовано обновлять библиотеку (потому что она обновляется и иногда без обновлений просто не работает - в интерфейсе 1с жмакая кнопку обновить) и не требует доступов и административных установок на терминале/клиенте, работает в вэб-клиенте.
17. krasnodar-it 08.06.22 19:13 Сейчас в теме
Делал аналогичный проект пару лет назад, работает и посей день, менеджерам особо нравится кнопка в печатных формах "Отправить мне" далее уже самостоятельно взаимодействуют с клиентом пересылая файл им
22. CheBurator 3115 09.06.22 02:11 Сейчас в теме
"Всплывает окно авторизации в Whatsapp (авторизоваться должен пользователь от чего номера будет рассылка)."
не понял, автоматом все-таки рассылка делается или нужны какие-то интерактивнеы действия пользователя (нажатие на кнопку "разослать" таковым не считаем, можем ив фоне по расписанию...)?
28. John_d 4728 09.06.22 09:10 Сейчас в теме
(22) у меня все в клиенте происходит.
Для автоматической рассылки нужно будет где-то держать запущенный бот в клиенте. Этому боту скидывать сообщения для рассылки и он будет их рассылать, но тогда рассылка будет идти с левого номера (бота).
23. lihomanov 83 09.06.22 03:14 Сейчас в теме
Доброго времени суток!
Подскажите пожалуйста как отправить файл ?
26. apic 12 09.06.22 07:44 Сейчас в теме
Меня больше интересует, почему ввиду санкций ватсапп до сих пор работает на территории РФ? Так то надо было запретить, как ни как запрещенная организация работающая гос. деп. омерики.
27. Мастер1С 778 09.06.22 08:46 Сейчас в теме
Какие-то изменения у ватсап, буквально вчера. Как бы не отвалилась ваша доработка.
29. John_d 4728 09.06.22 09:15 Сейчас в теме
(27) просто нужно будет загрузить новую версию
npm i whatsapp-web.js
В (13), (17) написали что этот метод у людей работает без проблем несколько лет.
32. AlexandrSmith 68 09.06.22 10:08 Сейчас в теме
Очень понравилось решение.
33. ManyakRus 477 09.06.22 10:22 Сейчас в теме
я сделал то же самое на языке golang - получился .exe один исполняемый файл, который может быть сервером-прослойкой для 1С. Так ещё лучше :-)
35. user662573_rx-tx 09.06.22 11:27 Сейчас в теме
Решение имеет место быть. В конце концов это решение конкретной задачи автора, и она встречается частенько.
Спасибо за труд!)
37. Светлый ум 351 10.06.22 05:41 Сейчас в теме
Соточка +1
38. Serega-artem 15 10.06.22 13:37 Сейчас в теме
Очень любопытная тема! Плотно работаем с вотсапом, но сейчас через посредника, неофициальное api. Деньги небольшие, тут проблем нет, но качество услуги сильно через... Будем смотреть ваше решение, спасибо за инструкции.
nikolasx; John_d; +2 Ответить
39. Alexez 75 14.06.22 13:06 Сейчас в теме
Круто я реализовал отправку через post json {"phone": "11111111", "body": "WhatsApp API работает"}

const { Client,LocalAuth } = require('whatsapp-web.js');
const http = require('http');


const client = new Client({
    authStrategy: new LocalAuth(),
    puppeteer: { headless: false }
});

client.on('qr', (qr) => {
    // Generate and scan this code with your phone
    console.log('QR RECEIVED', qr);
});

client.on('ready', () => {
    console.log('Client is ready!');
});

client.on('message', msg => {
    if (msg.body == '!ping') {
        msg.reply('pong');
    }
      
});


const requestListener = function (req, res) {
  if (req.method == 'POST') {
    
    var body_text = ''
    var number = ''
    req.on('data', function(data) {
        body_text += data
        console.log(body_text)
        const obj = JSON.parse(body_text)
        console.log(obj.phone);
        console.log(obj.body);
        number = obj.phone
        number = number.includes('@c.us') ? number : `${number}@c.us`;
        client.sendMessage(number, obj.body);
    })

    req.on('end', function() {
    res.writeHead(200, {'Content-Type': 'text/html'})
    res.end('ok')
  })


  } else {
    console.log(req.method);
    res.writeHead(200);
    res.end('Hello, World!');
  }

}

const server = http.createServer(requestListener);
server.listen(8080);

client.initialize();
Показать
user1671936; mihuilka; John_d; +3 Ответить
40. John_d 4728 15.06.22 09:40 Сейчас в теме
(39) Отлично
48. user-sergey 43 13.05.23 12:21 Сейчас в теме
(39) Здравствуйте. можете поделится кодом. Вы отправляете из 1С сообщения? Я так понял у автора для рассылки необходимо вручную отправить сообщение себе, тогда бот отлавливает и делает рассылку. У меня чуть другая задача. Надо чтоб 1С сама отправляла, по времени, без участия человека. Так можно сделать?
41. UPKA 17.06.22 11:44 Сейчас в теме
Подскажите, каждый раз перед отправкой нужно сканировать QR? А если допустим мне необходимо в фоне отправлять сообщения? Как быть? Предположим имеется один номер телефона на все рассылки.
42. John_d 4728 17.06.22 13:04 Сейчас в теме
(41) Можно один раз отсканировать и больше не закрывать бота, так и держать открытым (делать это надо на отдельном компьютере). Этому боту скидывать сообщения для рассылки и он будет их рассылать
43. UPKA 17.06.22 13:12 Сейчас в теме
(42)Подскажите, а на этом же ПК нельзя запускать скрипт?
44. John_d 4728 17.06.22 13:20 Сейчас в теме
(43)Можно. Просто тогда не закрывайте этот скрипт.
45. skp2000 20.04.23 08:12 Сейчас в теме
Автор, приветствую. Немного не понял про автоматизацию. Получается пользователь для рассылки нужных данных должен всегда ручками в вэб-ватсапп вставлять сформированную в 1С строку "!senddebit [[***,***],...,[***,***]]" ? А можно как-то нажатием кнопки в 1С сделать и формирование строки и одновременную вставку в вэб-ватсапп, чтобы без лишних телодвижений рассылка уходила по клиентам?
46. John_d 4728 20.04.23 09:07 Сейчас в теме
(45) Можно. Пример этого написан в комментарии 39. Там на NodeJS поднимается веб сервер на порту 8080. И на этот веб-сервер можно отправлять из 1с пост запрос.
47. skp2000 20.04.23 09:59 Сейчас в теме
(46) ок, спасиб, попробую
Оставьте свое сообщение