Интеграция 1С и WhatsApp. Отправка сообщений через Green API.
- Опубликовано 1c-integra
- Разделы Интеграция
- Дата 25.11.2021
- Комментарии Нет комментариев
Интеграция с WathsApp делает возможным обмен сообщениями и файлами с клиентами прямо из 1С.
Для примера интеграции будем использовать бесплатный сервис https://green-api.com. Регистрируемся и создаём аккаунт, где нужно будет подвязать свой WhatsApp, отсканировав QR-код. После авторизации получаем Токен Api и ID Instanse. Эти параметры пригодятся нам в дальнейшем.

Рисунок 1.
Теперь посмотрим как отправлять сообщения из 1С. Перейдём на страницу документации и выберем отправку текста (https://green-api.com/docs/api/sending/SendMessage/).

Рисунок 2.
Сообщения отправляются через POST-запрос, где в качестве параметров мы передадим наши Токен Api и ID Instanse (Рисунок 1).
В теле запроса устанавливаем параметр chatId, который идентифицирует чат. И message – само сообщение.
Создаём расширение
Интеграцию будем разрабатывать в Управлении нашей фирмой 1.6. В нашем расширении создадим общий модуль где будем писать все функции для работы с rest api. Далее добавляем(заимствуем) справочник Контрагенты и заимствуем Форму элемента справочника контрагенты. Также создадим новую форму, на ней в дальнейшем расположим элементы для отправки сообщений, чтобы по минимуму задействовать типовую форму. (Облегчит дальнейшее обновление) На Форме элемента создаём кнопку ( назовем – WhatsAppChat), которая открывает нашу новую форму и передаёт в нее параметр – ссылку на Контрагента. Также в дальнейшем, по этой ссылки мы получим номер телефона клиента.


Рисунок 3.
В новой форме, создаём поле для ввода текста сообщения, поле для прикрепления файла и кнопку отправить.

Рисунок 4.
Добавляем реквизит формы ТекКонтрагент – тот контрагент, с которым мы работаем. ТекстСообщения – строка в режиме многострочного ввода, для формирования сообщения.
На кнопку Отправить назначаем обработчики: на клиенте и на сервере. С клиента вызываем ОтправитьНаСервере и здесь нужно прописать основную рабочую процедуру ОтправитьСообщение.
ОтправитьСообщение
В начале проверим что ЗначениеЗаполнено для нашего реквизита ТекКонтрагент. Получим номер телефона через функцию ПолучитьНомерТелефона. Создаём запрос и предварительно обрабатываем результат, дабы номер не содержал посторонних символов.

Рисунок 5.
ОбработатьСтрокуНомера
Для обработки строки нужно создать отдельную экспортную функцию ОбработатьСтрокуНомера в общем модуле, в которой удалим все ненужные элементы. Создаём массив символов, которые нужно удалить и возвращаем отредактированный телефон.

Рисунок 6.
Вернёмся в процедуру ОтправитьСообщение, теперь у нас есть отредактированный номер. Опять проверим значение на корректность.

Рисунок 7.
ПолучитьHTTPСоединение
Следующим шагом устанавливаем соединение с сервером green-api. Создаем и вызываем функцию ПолучитьHTTPСоединение в нашем общем модуле, в качестве параметра передаём АдресСервера. В функции создаём новое HTTPСоединение. Инициализируем ЗащищенноеСоединениеOpenSSL.

Рисунок 8.
В качестве параметра АдресСервера подставим адрес из документации API.

Рисунок 9.
ОтправитьТекстНаУказанныйНомер
Третий шаг – это отправка сообщения. Создаём процедуру ОтправитьТекстНаУказанныйНомер, определяем параметрами Соединение и ТелефонКлиента. В них мы передадим полученные ранее HTTP-соединение и телефон.
В процедуре формируем HTTP-запрос с помощью функции СформироватьЗапросHTTP_SendMessage из общего модуля. Передаём туда ТекстСообщения (реквизит формы) и ТелефонКлиента. В функции определяем параметры тела HTTP-запроса. Создаём новую структуру и вставляем первый параметр chatId – это будет отформатированный телефон контрагента с прибавлением символов как указанно в документации API.

Рисунок 10.
Второй параметр message будет содержать сам текст сообщения. Теперь нужно сериализовать эти параметры в строку JSON средствами платформы. Для этого формируем ещё одну функцию СформироватьJSON в общем модуле. Устанавливаем объект ЗаписьJSON и передаём структуру с параметрами запроса.

Рисунок 11.
Теперь задаём переменные idInstance и apiTokenInstance, их мы получали при авторизации (Рисунок 1). Прописываем их в ручную. В качестве стандартного заголовка указываем «Content-Type»: «application/json».
Формируем адрес ресурса, как указанно в примере запроса (Рисунок 2). Теперь устанавливаем тело самого запроса. Вызываем стандартный метод УстановитьТелоИзСтроки, передаём ранее сериализованные в строку JSON параметры и указываем кодировку «UTF-8».

Рисунок 12.
Возвращаемся в модуль формы к процедуре ОтправитьТекстНаУказанныйНомер. Поскольку нам нужно выполнить POST запрос, то вызываем метод ОтправитьДляОбработки и передаём наш HTTP-запрос. После обработки сервером получаем код ответа, если он равен 200, то значит запрос успешно выполнен. Теперь нужно десериализовать данные.

Рисунок 13.
Создадим функцию ВыполнитьДесериализациюДанныхJSON_ВОбъект1с в общем модуле, куда будем передавать ТипДанных (текст или файл) и Ответ.
Читаем строку JSON и в зависимости отправляли мы файл или текст выводим соответствующие сообщения.

Рисунок 14.

Вот так теперь выглядит процедура отправки сообщения:
Рисунок 15.
Теперь можно зайти в отладку и проверить как работает отправка сообщений. Переходим в раздел Продажи → Покупатели, выбираем контрагента, указываем свой номер телефона для теста. Переходим по кнопке на нашу форму отправки сообщение и проверяем доставку сообщения на WathsApp.
Здесь можно скачать все процедуры и функции общего модуля WhatsApp Core
Вам также может понравиться
Создание http-сервиса в 1С
В прошлой статье мы разобрали как публиковать базу, теперь создадим http cервис в отдельном расширении и проверим его работу. Заходим в базу в режиме конфигуратора и создаём новое расширение с назначением «Дополнение». Назовём его «ТестВебсервис». Отключим «Безопасный режим» и «Защиту от …
Публикация базы 1с на веб-сервере
Публикация базы на HTTP-сервере apache Устанавливаем сервер Apache, который позволит опубликовать нашу базу. Скачиваем архив Apache: https://disk.yandex.ua/d/ibvXQf-y_fSLxA, распаковываем и устанавливаем на компьютер. На вкладке «Информация о сервере» указываем доменное имя «localhost» и имя сервера такое же. Ниже выбираем вариант установки …
Контрагенты в Битрикс24
Создание контрагента Для добавления нового контрагента переходим в раздел «CRM» главного меню, выбираем «Компании» и нажимаем на кнопку «Добавить компанию». В открывшуюся карточку вносим информацию о контрагенте. Указываем название компании, тип взаимоотношений, контактные данные. Данные сотрудников компании, их может быть …