Создание простого коннектора

В качестве примера мы создадим простой коннектор который будет отправлять сообщение пользователю через Telegram Bot.

Для начала создайте новый процесс для отладки нашего будущего коннектора

После этого откройте Библиотеку коннекторов нажав на ссылку Add connector в правом углу редактора процесса. После этого откроется библиотека доступных коннекторов.

Далле выберите пункт Upload connector в правом верхнем углу для загрузки нового коннектора, после нажатия которого откроется редактор нового коннектора

В редакторе коннектора доступны следующие основные секции:

  • General - общая информация о коннекторе, такая, как: название, описание, тип, версия и подробная информация. В этой секции также можно загрузить изображение для нашего коннектора.

  • Schema - раздел, где необходимо описать все методы нашего коннектора, а также входные и исходящие схемы данных для каждого метода.

  • Code - раздел где редактируется основной код бизнес-логики коннектора.

  • Install handler - раздел где задается обработчик коннектора, который будет выполнен при инициализации коннектора в процессе.

  • NPM modules - раздел, где добавляются NPM модули коннектора, которые будут необходимы для его работы.

Шаг 1. Заполнение общей информации о коннекторе

На вкладке General заполните название, описание, версию создаваемого коннектора, а также загрузите картинку.

Так как мы создаем простой коннектор, то параметр Type должен быть со значением Custom.

Шаг 2. Описание методов и схемы коннектора

Вкладка Schema имеет 3 основных поля для описания схем данных коннектора

  • Methods - методы коннектора

  • Input schema - описание входной схемы данных в зависимости от метода

  • Output schema - описание исходящей схемы данных в зависимости от метода

Описание методов коннектора

Сперва опишем методы нашего коннектора. В качестве примера мы реализуем только один метод для отправки сообщений, назовем его default

[
    {
        "title": "Send message",
        "value": "default"
    }
]

Описание схемы для входных данных

Для отправки сообщения через Telegram Bot нам необходимо предоставить пользователю возможность заполнить в настройках коннектора следующие параметры:

  • Токен (token), параметр для передачи токена

  • Идентификатор пользователя (userId), параметр для установки идентификатора пользователя, которому будет отправлено сообщение

  • Message, параметр отвечающий за текст сообщения

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

Input schema
{
    "default": {
        "type": "object",
        "properties": {
            "token": {
                "type": "string",
                "presenter": {
                    "component": "string",
                    "title": "Token"
                }
            },
            "userId": {
                "type": "string",
                "presenter": {
                    "component": "string",
                    "title": "User ID"
                }
            },
            "message": {
                "type": "string",
                "presenter": {
                    "component": "string",
                    "title": "Message"
                }
            }
        }
    }
}

Описание схемы для исходящих данных

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

Output schema
{
    "default": {
        "type": "object",
        "properties": {
            "result": {
                "type": "any"
            }
        }
    }
}

Шаг 3. Основной код коннектора

Во вкладке Code необходимо написать основной код нашего коннектора, который будет вызывать API Telegram для отправки сообщения.

const request = require('request');
const url = `https://api.telegram.org/bot${ctx.data.token}/sendMessage`;

const sendRequest = async () => {
    const data = {
    	"chat_id": ctx.data.userId,
    	"text": ctx.data.message,
    	"parse_mode": "HTML",
    	"disable_web_page_preview": false,
    	"disable_notification": false
    };
    
    return new Promise((resolve, reject) => {
        request.post({
            url: url,
            method: 'POST',
            headers: {
              'content-type': 'application/json',
              'accept': 'application/json'
            },
            form: data
        }, function (err, res, body) {
            if (err) {
              reject(err);
            } else {
              resolve(body);
            }
        });  
    });
};

return (async () => {
    try {
       const result = await sendRequest();
       ctx.setData({
           result: result
       });
    } catch (err) {
        ctx.reject(false);
        console.error(err);
    }
})();

Шаг 4. Сохраняем коннектор и тестируем

После того, как мы описали весь функционал нового коннектора, необходимо его сохранить, после чего он появится в Библиотеке коннектов и можно приступать к его тестированию.

В процесс мы добавили предварительно созданный коннектор для Viber, который получает сообщения и передает их в Telegram, таким образом написав своеобразный ретранслятор сообщений из одного мессенджера в другой.

Last updated