Как организовать отправку сообщений из 1С 7.7 через Viber?

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

Автоматизация уведомлений клиентов интернет-магазина через мессенджеры — это актуальная задача для любого бизнеса. Однако работа в старой версии 1С 7.7 на операционной системе Windows Server 2008 накладывает ряд ограничений. Давайте разберем, почему попытки «эмуляции» нажатия клавиш не работают и как построить надежную систему интеграции с Viber.

Почему не стоит использовать эмуляцию интерфейса

Многие пытаются использовать команду ЗапуститьПриложение с параметрами типа viber://chat или viber://send. Важно понимать, что это — так называемые «глубокие ссылки» (Deep Links). Они созданы разработчиками Viber исключительно для того, чтобы открывать приложение на устройстве пользователя. Они не предназначены для передачи текста сообщения в автоматическом режиме. Viber намеренно блокирует такие возможности, чтобы защитить пользователей от спама. Кроме того, попытки имитировать нажатия клавиш через VBScript или SendKeys крайне ненадежны на серверных операционных системах, так как при отсутствии активной сессии пользователя скрипт просто не сработает.

Архитектура решения: используем API и вебхуки

Единственный надежный способ отправить сообщение из 1С — это использование официального API Viber. Поскольку 1С 7.7 имеет сложности с современными протоколами шифрования (такими как TLS 1.2+), лучшим решением будет использование «прослойки» на PHP, размещенной на веб-сервере. Это позволит 1С обмениваться данными с локальным или внешним сервером по простому протоколу, а сервер уже будет брать на себя защищенное соединение с серверами Viber.

Шаг 1: Настройка вебхука на PHP

Нам потребуется сервер, который будет принимать запросы от 1С и пересылать их в Viber. Рассмотрим базовый код для настройки webhook, который регистрирует ваш сервер в системе Viber:


$auth_token = 'Ваш_токен_бота';
$webhook = 'https://ваш-домен.com/viber_bot.php';
$jsonData = '{
    "auth_token": "'.$auth_token.'",
    "url": "'.$webhook.'",
    "event_types": ["subscribed", "delivered", "message", "seen"]
}';
$ch = curl_init('https://chatapi.viber.com/pa/set_webhook');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$response = curl_exec($ch);
curl_close($ch);

Шаг 2: Отправка сообщений из 1С 7.7

Чтобы отправить сообщение, мы создаем функцию в 1С, которая обращается к нашему PHP-скрипту. В самом простом случае можно использовать объект MSXML2.ServerXMLHTTP. В 1С 7.7 это выглядит примерно так:


Функция ОтправитьВВайбер(ИДПользователя, Сообщение)
    КомОбъект = СоздатьОбъект("MSXML2.ServerXMLHTTP");
    КомОбъект.Open("POST", "https://ваш-домен.com/send.php", 0);
    КомОбъект.SetRequestHeader("Content-Type", "application/json");
    Параметры = "{""id"": """ + ИДПользователя + """, ""text"": """ + Сообщение + """}";
    КомОбъект.Send(Параметры);
    Возврат КомОбъект.ResponseText;
КонецФункции

Шаг 3: Обработка входящих данных

На стороне PHP-скрипта (в файле send.php) мы формируем корректный JSON-запрос к API Viber. Важно учитывать, что отправка сообщений возможна только тем пользователям, которые уже подписались на вашего бота. Вот пример логики отправки текста:


function sendMsg($sender_id, $text) {
    $data = [
        'auth_token' => 'Ваш_токен_бота',
        'receiver' => $sender_id,
        'type' => 'text',
        'text' => $text
    ];
    $ch = curl_init("https://chatapi.viber.com/pa/send_message");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    return curl_exec($ch);
}

Важные рекомендации

  1. Откажитесь от работы с базами данных напрямую: Не пытайтесь напрямую писать в базу MySQL через ODBC из 1С, если сервис предоставляет REST API. Ошибки типа 10060 часто связаны с закрытыми портами или несовместимостью драйверов в старых ОС. HTTP-запросы — гораздо более стабильный метод.
  2. Идентификатор пользователя: Помните, что отправка через бота осуществляется по id пользователя в системе Viber, а не по номеру телефона. Подписка пользователя на бота происходит автоматически при первом его обращении к боту.
  3. Бизнес-рассылки: Если задача — отправка сообщений по номеру телефона людям, которые не подписаны на бота, вам потребуется заключить договор с официальным партнером Viber (агрегатором рассылок). Это платный путь, но он легален и гарантирует доставку.

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

← На главную