METABOT24
  • Знакомство с Metabot24
    • Инфраструктура
    • Web IDE
    • Бизнес
    • Бот
    • Процессинг коммуникаций
  • Термины
  • Начало работы - с чего начать
    • Как устроен Metabot24
    • Регистрация в Metabot24
    • Вход в учетную запись
    • С чего начать?
    • Как создать бота
    • Экспорт/импорт бота
  • Панель управления ботом
    • Скрипты
      • Разделы скриптов
      • Редактор скрипта
      • Создание меню
      • Дерево скриптов
    • Рассылки
    • Триггеры
    • Каналы
      • Настройка канала для кнопок
    • Интеграции
    • Статусы
    • Маршруты
    • Лиды
    • Статистика
    • Атрибуты
    • Ссылки
  • Команды
    • Отправить текст
    • Отправить изображение
    • Отправить файл
    • Email
    • Установить статус лида
    • Выполнить скрипт
    • Запросить значение
    • Добавить тэги
    • Удалить тэги
    • Добавить контекст
    • Удалить контекст
    • Повторить вопрос
    • Активировать триггер
    • Выполнить JavaScript
    • Стоп
    • Распознать NLP намерение
    • Перевести на оператора
    • Вернуть боту
  • Синтаксис JavaScript с условием
    • Макропеременные
    • JS условие выполнения команды
    • JS условие выполнения рассылки
  • Подключение к сервисам
    • Jivo
    • Webim
    • LiveTex
    • Битрикс24
    • Umnico
  • Подключение к каналам связи
    • Metabot Widget
    • Telegram
    • Vk
    • Viber
  • Перевод на оператора/бота
    • Перевод на оператора
    • Перевод на бота оператором
    • Перевод на бота пользователем
  • Dialogflow
    • Регистрация в Dialogflow
    • Интеграция с Dialogflow
    • Обучение бота
    • Подключение нескольких интеграций
  • Интеграционные возможности​
    • Bot API
    • Обращение к внешним системам из бота
  • Deep Linking / Внешнее связывание
  • Плагины Metabot24
    • Список общих плагинов
    • Интерфейс и логика работы плагинов
    • Сниппеты
    • Примеры плагинов
  • Интернет-магазин в боте
    • Настройки магазина
  • Примеры решений
    • Омни-канальный контакт центр
    • Торговый бот первого касания
    • Бот поддержки
    • Туннели продаж
  • Уроки
    • Бот за 5 минут
    • Бот с NLP
    • Бот с меню самообслуживания
    • Бот на базе Umnico
  • Тарифы и оплата
    • Тарифы
    • Как оплатить тариф
    • Как изменить тариф
    • Как отменить подписку
  • Изменения и новинки
  • Помощь
  • Видеоролики обучающие
  • Видеоотзыв
  • Часто задаваемые вопросы
Powered by GitBook
On this page

Was this helpful?

  1. Интеграционные возможности​

Обращение к внешним системам из бота

PreviousBot APINextDeep Linking / Внешнее связывание

Last updated 4 years ago

Was this helpful?

Для обращения к внешним сервисам и системам воспользуйтесь шиной интеграций платформы Метабот и встроенным языком программирования JavaScript.

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

// Getting preferred rates

var last_updated      = lead.getAttr('last_updated');
var cache             = lead.getJsonAttr('cache');
var today             = Math.floor(Date.now() / 1000);
var rates             = false;
var tmp_rates_message = '';
var token             = 'ваш ключ к сервису';

// Провярем есть ли кэш и не истек ли он (24ч)
if (cache && last_updated*1 > 0 && (today - last_updated < 60*60*24))
{ 
  // Используем кэш
  rates = cache;  
} else {
  // Используем API
  api.setHeaders('{"Accept":"application/json"}');

  // Для отладки
  lead.setJsonAttr("lastHttpResponse", null); 
  lead.setAttr("lastHttpResponseCode", null); 

  // Адрес endpoint
  var url = 'http://data.fixer.io/api/latest?format=1&access_key=' + token;

  // POST запрос
  var jsonResponse = api.postJson(url); 
  var jsonResponseCode = api.getLastResponseCode();

  // Для отладки
  lead.setAttr("lastHttpResponseCode", jsonResponseCode); 
  lead.setJsonAttr("lastHttpResponse", jsonResponse); 

  // В случае успеха
  if (jsonResponseCode == 200) { 
    rates = jsonResponse.rates;
    
    // Кэшируем в лиде
    lead.setAttr('last_updated', today);
    lead.setJsonAttr('cache', rates);
  } 
}

// Формируем текстовое сообщение
if (rates) {
  for(var currency in rates) {
    tmp_rates_message = (tmp_rates_message ? tmp_rates_message + '\n' : '') + 
      currency + ': ' + rates[currency];
  }
}

// Сохраняем в во временную память, доступную только во время текущего сценария
memory.setAttr('tmp_rates_message', tmp_rates_message);
http://fixer.io