Интеграция ManyChat и MetaBot для создания эффективных чат-ботов
Введение
В этой статье мы рассмотрим, как интегрировать ManyChat, отличный инструмент для построения воронок, с платформой Metabot в качестве Low-code инструмента для бэкенд-разработки. ManyChat обладает удобным интерфейсом для работы с пользователями, но не поддерживает написание кода. Metabot идеально дополняет ManyChat, предлагая возможности быстрой разработки и легкой интеграции с чат-ботами.
Обзор интеграции
- Создание бота в Metabot: Сначала нужно создать бота в системе Metabot.
- Создание пользователя API и токена в Metabot: Для авторизации запросов необходимо создать пользователя с типом API и сгенерировать токен.
- Настройка внутреннего endpoint в Metabot: В боте нужно создать endpoint, который будет обрабатывать запросы от ManyChat.
- Написание кода для обработки запросов: Пример кода показывает, как обработать запросы и вернуть результат в формате, подходящем для 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
- Настройка API в ManyChat: В ManyChat реализуйте команду для динамического формирования контента, указав URL endpoint MetaBot.
- Настройка Headers и Body запроса: В Header запроса укажите токен авторизации, а в Body - параметры из воронки ManyChat.
Форматы ответа
- Raw Format: Простой JSON с расчетом бюджета.
- ManyChat Format: Формат, подходящий для динамических сообщений ManyChat.
Пример тела запроса
json
{
// Пример тела запроса для поездки в Канаду
}
Использование в Postman
- Создание запроса: Откройте Postman и создайте новый запрос POST с URL endpoint.
- Настройка Headers: Добавьте ключ для авторизации и вставьте ваш API ключ.
- Настройка Body: Выберите raw и JSON, затем вставьте пример тела запроса.
- Отправка запроса: Отправьте запрос и просмотрите ответ.
Включение скриншотов
- Скрин 1: Настройка API в ManyChat - Header.
- Скрин 2: Настройка API в ManyChat - Body.
- Скрин 3: Воронка в ManyChat с командой.
- Скрин 4: Настройка endpoint в MetaBot.
Заключение
Интеграция ManyChat и MetaBot открывает новые возможности для создания продвинутых чат-ботов. Благодаря лоу-код подходу MetaBot и удобному интерфейсу ManyChat, можно быстро разрабатывать и интегрировать сложные функциональности, улучшая взаимодействие с пользователями.