Перейти к основному контенту

Интеграция ManyChat и MetaBot для создания эффективных чат-ботов

Введение

В этой статье мы рассмотрим, как интегрировать ManyChat, отличный инструмент для построения воронок, с платформой Metabot в качестве Low-code инструмента для бэкенд-разработки. ManyChat обладает удобным интерфейсом для работы с пользователями, но не поддерживает написание кода. Metabot идеально дополняет ManyChat, предлагая возможности быстрой разработки и легкой интеграции с чат-ботами.

Обзор интеграции

  1. Создание бота в Metabot: Сначала нужно создать бота в системе Metabot.
  2. Создание пользователя API и токена в Metabot: Для авторизации запросов необходимо создать пользователя с типом API и сгенерировать токен.
  3. Настройка внутреннего endpoint в Metabot: В боте нужно создать endpoint, который будет обрабатывать запросы от ManyChat.
  4. Написание кода для обработки запросов: Пример кода показывает, как обработать запросы и вернуть результат в формате, подходящем для ManyChat.

Пример кода эндпоинта

snippet('Business.Helpers.Response');// Check if the necessary fields are present in the requestif (!request.json ||     !request.json.destinationCoefficient ||    !request.json.nights ||    !request.json.travelers ||    !request.json.averageSpendingScore ||    !request.json.seasonCoefficient ||    !request.json.tripPurposeCoefficient ||    !request.json.familyTravelCoefficient ||    !request.json.format) {  return getErrorResponse("Required fields are missing");}// Ensure that format is either 'raw' or 'manychat'if (request.json.format !== 'raw' && request.json.format !== 'manychat') {  return getErrorResponse("Invalid format specified");}// Extract values from the requestconst destinationCoefficient = request.json.destinationCoefficient;const seasonCoefficient = request.json.seasonCoefficient;const tripPurposeCoefficient = request.json.tripPurposeCoefficient;const familyTravelCoefficient = request.json.familyTravelCoefficient;// Base daily cost based on average spending score (example values)let baseDailyCost;if (request.json.averageSpendingScore <= 1.75) {  baseDailyCost = 50; // Low spender} else if (request.json.averageSpendingScore <= 2.5) {  baseDailyCost = 100; // Moderate spender} else if (request.json.averageSpendingScore <= 3.25) {  baseDailyCost = 150; // High spender} else {  baseDailyCost = 200; // Ultra spender}// Calculating the total recommended amountconst totalAmount = (baseDailyCost * request.json.destinationCoefficient * request.json.nights * request.json.travelers) *                     seasonCoefficient *                     tripPurposeCoefficient *                     familyTravelCoefficient;// Determine the response formatif (request.json.format === 'raw') {  // Returning the calculated budget in raw format  return getSuccessResponseWithJson({    calculatedBudget: totalAmount  });} else {  // Returning the calculated budget in ManyChat format  return {    "version": "v2",    "content": {  /*    "messages": [        {          "type": "text",          "text": `Ok! I got it`        }        // Additional messages can be added here      ],*/      "actions": [        {          "action": "set_field_value",          "field_name": "budget_estimate_amount", // Custom field name in ManyChat          "value": totalAmount.toString()  // Setting the calculated budget as the value        }      ],      "quick_replies": []    }  };}

Код плагина Business.Helpers.Response

Этот плагин облегачает подготовку ответов 
/** 
 * Prepares and returns an API response object for a failed operation.
 * This should be used when an operation does not complete successfully,
 * with the provided error message included in the response.
 * 
 * @param {string} errorMessage - The error message to be included in the response.
 * @returns {Object} An object representing a failed operation response.
 */
function getErrorResponse(errorMessage) {
  return {
    success: false,
    message: errorMessage
  };  
}

/** 
 * Prepares and returns an API response object for a successful operation.
 * This should be used when an operation completes successfully 
 * and no additional data needs to be returned.
 * 
 * @returns {Object} An object representing a successful operation response.
 */
function getSuccessResponse() {
  return {
    success: true  
  };
}

/** 
 * Prepares and returns an API response object for a successful operation 
 * with additional JSON data. This should be used when an operation completes 
 * successfully and there is additional data to return in the response.
 * 
 * @param {Object} json - The JSON data to be included in the response.
 * @returns {Object} An object representing a successful operation response with additional data.
 */
function getSuccessResponseWithJson(json) {
  return {
      ...json,
      success: true
  }
}

 

Интеграция с ManyChat

  1. Настройка API в ManyChat: В ManyChat реализуйте команду для динамического формирования контента, указав URL endpoint MetaBot.
  2. Настройка Headers и Body запроса: В Header запроса укажите токен авторизации, а в Body - параметры из воронки ManyChat.

Форматы ответа

  • Raw Format: Простой JSON с расчетом бюджета.
  • ManyChat Format: Формат, подходящий для динамических сообщений ManyChat.

Пример тела запроса

json
{ // Пример тела запроса для поездки в Канаду }

Использование в Postman

  1. Создание запроса: Откройте Postman и создайте новый запрос POST с URL endpoint.
  2. Настройка Headers: Добавьте ключ для авторизации и вставьте ваш API ключ.
  3. Настройка Body: Выберите raw и JSON, затем вставьте пример тела запроса.
  4. Отправка запроса: Отправьте запрос и просмотрите ответ.

Включение скриншотов

  • Скрин 1: Настройка API в ManyChat - Header.
  • Скрин 2: Настройка API в ManyChat - Body.
  • Скрин 3: Воронка в ManyChat с командой.
  • Скрин 4: Настройка endpoint в MetaBot.

Заключение

Интеграция ManyChat и MetaBot открывает новые возможности для создания продвинутых чат-ботов. Благодаря лоу-код подходу MetaBot и удобному интерфейсу ManyChat, можно быстро разрабатывать и интегрировать сложные функциональности, улучшая взаимодействие с пользователями.