Рубрики
Без рубрики

Как построить криптобот в Python и подключить его к Facebook Messenger

Автор оригинала: FreeCodeCapm Team.

Пол Пинард

Познакомьтесь с сато криптобота, который может привлечь любую цену криптовалюта с внешнего API!

Учкоты имеют невероятный потенциал. Тем не менее, для ботов должны быть эффективными, они должны интегрировать и обмениваться данными с существующими службами и процессами.

Возможность привлечения данных от внешнего API позволяет более сложным использоваться случай, что простой Q & A логика Отказ Более того, эта способность в сочетании с NLP предлагает еще больше возможностей.

Например, Sato – Cryptobot мы будем строить сегодня – умеет распознать все криптовалюты, даже те, которые еще даже не перечислены. Мне не придется ничего делать для него, чтобы иметь возможность обрабатывать запросы на крипто, появляющихся даже лет, потому что сато, глупо, понял, что такое символ криптовалюта (после кормили тысячами их).

Что мы сегодня строим?

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

В спешке? Вот все, что вам нужно построить свои собственные:

Надо увидеть это, чтобы поверить в это? Это мудрый! Нажмите здесь !

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

1. Создайте основу вашего чата: выберите свой путь

Целью сегодня – построить бот, способный признать вопрос о ценах на любую криптовалюту. Пусть ваш воображение поток, Это может быть действительно все, что есть связанные данные, доступные на сторонних API Отказ

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

Познакомьтесь с сато, криптобот

Сато – это бот, сделанный для ответа на основные вопросы о криптоварах и извлечь их цены. Вот обзор того, что он может сделать:

  1. Fetch Cryptotogrenss цены (что мы будем строить сегодня): Sato распознает символ криптовалютов («eth», «BTC») и извлечь их цену на Cryptocompare API Чтобы наконец вернуть BTC и значение USD пользователю.
  2. Ответьте на вопросы пользователей о кошельках – в Интернете кошельки, обменные кошельки, холодные кошельки и аппаратные кошельки.
  3. Адрес вопросов о частных и открытых ключах, а также в безопасности криптовалютов.
  4. Кратко представляют основные криптовалюты, в настоящее время BTC, ETH, BCH и LTC.

Внутри Сато

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

Во-первых, ему нужен намерение (@CRYPTO_PRICE ) С разнообразными выражениями и упомянутыми криптовалютыми, поэтому он может эффективно признать эти вопросы. Вот некоторые выражения, используемые для определения @crypto_price:

Во-вторых, для SATO сможет распознать все криптовалюты, ему понадобится самый большой список, который вы можете найти. Я нашел 1200+ на CailmarketCap, который достаточно хорош, чтобы начать. Я создал газетку криптовых имен, чтобы улучшить свое понимание.

В-третьих, нам понадобится построить навык, который вызывает @ask_price или объект #crypto_name:

Вы также можете добавить #crypto_Name в качестве требований, чтобы убедиться, что API не выпущен без параметров:

Этот навык также должен позвонить вашему веб-капусту, который мы настроим ниже:

Не забудьте добавить сброс памяти после спускового крючка WebHook, требуется очистить память после каждого ответа.

Наконец, мы проверим наш бот прямо в мессенджере, поэтому вам нужно будет создать страницу и приложение и подключить его. Все документировано в Соединить вкладка и в Начало работы Учебное пособие Отказ

Держать его лаконичкой Этот учебник не будет подробно быть создан создание бота Отказ Мы уже начнем с функционирующего бота.

Чтобы встретиться со мной, у вас есть два варианта:

  • Вариант A: Создайте свой собственный бот (кому не должен быть криптоботом), следуя руководству на работе и созданию Учетная запись в SAP Consveration AI Отказ
  • Вариант B: Вилка Сато и начать отсюда. Вот почему SAP Consordation AI является совместной платформой Chambot. Это работает в значительной степени похоже на Github!

2. Основной серверный код и требования

Поскольку мы хотим взаимодействовать с нашим ботом, нам понадобится сервер, который сможет получить результаты NLP, сделанные SAP Conversational AI и отправьте наши ответы обратно.

На Бот строитель иди к Код Вкладка Чтобы найти пример базового кода, необходимого для запуска вашего API. Мы приводим примеры в Node.js, php, python и ruby. Этот учебник будет только Python.

Вот базовый код для Python:

from flask import Flask, request, jsonify import json app = Flask(__name__) port = '5000' @app.route('/', methods=['POST']) def index():   print(json.loads(request.get_data()))   return jsonify(     status=200,     replies=[{       'type': 'text',       'content': 'Roger that',     }]  )  @app.route('/errors', methods=['POST']) def errors():   print(json.loads(request.get_data()))   return jsonify(status=200)  app.run(port=port)

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

Требования

Как вы можете видеть, сценарий сервера использует Колба как веб-каркас Поэтому нам это понадобится.

Для вызова API мы также будем использовать Запросы Отказ Давайте пойдем вперед и установить оба:

pip install Flaskpip install requests

3. Проверьте сервер: NGROK

Теперь, когда у нас есть базовый сервер, давайте запустим его и проверить его. Это позволит нам быть более инкрементным в процессе, поэтому отладка (если таковая имеется) упрощен.

Чтобы открыть наш локальный сервер в Интернет, нам понадобится НГРОК.

Примечание: если вы используете Windows, как я, есть удивительный менеджер пакетов, Шоколад который работает в значительной степени, как APT-Get на Unix. С этим вы сможете установить Ngrok в одну строку CHOCO Установить Ngrok_Portable Отказ Кроме того, Chocolatey добавляет Ngrok на ваш путь, что позволяет вам начать Ngrok с любого терминала, просто набрав неисполнительно .

Сейчас самое время начать наш сервер и проверить его, это подразумевает:

  1. Установите триггер веб-кауда в своем боте (подробно в шаге 1)
  2. Запустите свой скрипт Python
  3. Выиск порта 5000 в Интернет с Ngrok: NGROK HTTP 5000.
  4. Скопируйте форму экспедирования URL-адреса Ngrok и прошедшего его как ваша базовая URL-адрес бота на SAP Consveration AI

4. Подготовка внешнего вызова API

Это о времени, чтобы начать здание! Давайте посмотрим на вызов API, мы сделаем, чтобы получить цену любой криптовалюты. Для этого доступны несколько API, поэтому я просто пошел вперед и выбрал один: Cryptocompare API Отказ

Cryptocompare API Предлагает тысячи возможностей, но ради простоты мы будем придерживаться основами. Мы хотим, чтобы цена соответствия Crypto в BTC, USD и EUR Отказ

Вот как вызов структурирован (здесь для ETH):

https://min-api.cryptocompare.com/data/price?fsym=”ETH”&tsyms=BTC,USD,EUR”

У вас есть два параметра:

  • Fsym : Символ криптовалютности, именно здесь нам нужно получить крипто-_Нам, распознаваемый в объекте #crypto_Name.
  • Цимс : валюта, в которой будет возвращена цена. Мы выбрали BTC, USD и EUR здесь.

Итак, в нашем случае нам нужно только адаптировать Fsym Параметр в распознанную криптовалюту, а остальная часть звонка остается прежним.

5. Адаптируйте вызов API, чтобы включить символ, распознаваемый на входе пользователя

Теперь, когда мы знаем, как извлечь цены, нам нужно вернуться к нашему серверу и обновить его, чтобы он мог:

  • Знайте #crypto_name, распознаваемые SAP Consveration AI.
  • Сделайте API Call To Cryptocompare, используя #crypto_Name.

Давайте начнем!

Шаг 1: Поиск наших данных в SAP Consveration Ai Json

Давайте посмотрим на данные, возвращаемые SAP Conservation AI на вводе пользователя. Для этого вы нажимаете на Чат со своим ботом Кнопка, присутствующая на всех страницах, в правом нижнем углу. Затем вы можете переключаться между разговором и видом на JSON, нажав на оранжевый информационный круг, как показано ниже:

Здесь наш символ доступен с [«Разговор»] [«Память»] [«Crypto»] [«RAW»] Отказ Поскольку значение и необработанные и идентичные в этом случае вы можете использовать либо.

На нашем сервере JSON возвращается на веб-сайте Test Panel – инкапсулирован в данные Словарь (см. серверный код). Поэтому нам нужен дополнительный шаг, чтобы получить его на нашем сервере:

# FETCH THE CRYPTO NAMEcrypto_name = data['conversation']['memory']['crypto']['value']

Шаг 2: Сделайте вызов API, используя распознанный объект

import requestsr = requests.get("https://min-api.cryptocompare.com/data/price?fsym="+crypto_name+"&tsyms=BTC,USD,EUR")

Идите вперед и распечатайте его, но вы можете быть разочарованы:

Действительно, если вы хотите получить значения, возвращаемые по вызову, вам нужно распечатать R.JSON () Отказ Хорошая новость заключается в том, что JSON возвращается Cryptocompare, действительно так же просто, как может быть:

Большой! Теперь у нас просто последний шаг, чтобы выяснить: возвращение цен пользователю.

Шаг 3: Возврат данных, полученных пользователю

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

return jsonify(     status=200,     replies=[{       'type': 'text',       'content': 'Roger that',     }],

Мы будем редактировать только ответы, чтобы включить цены, которые мы привлекли:

replies=[{      'type': 'text',      'content': 'The price of %s is %f BTC and %f USD' % (crypto_name, r.json()['BTC'], r.json()['USD'])    }],

Поскольку ответ представляет собой строку, мы должны использовать оператор Modulo (%), чтобы включить наши цены в строку. Здесь первые% S рассказывает Python искать строку, а два следующих% f указывает на поплавке.

Наш модернизированный сервер теперь закончен, вот весь код:

from flask import Flask, request, jsonifyimport jsonimport requestsapp = Flask(__name__)port = '5000'@app.route('/', methods=['POST'])def index():  data = json.loads(request.get_data())  # FETCH THE CRYPTO NAME  crypto_name = data['conversation']['memory']['crypto']['raw']  # FETCH BTC/USD/EUR PRICES  r = requests.get("https://min-api.cryptocompare.com/data/price?fsym="+crypto_name+"&tsyms=BTC,USD,EUR")  return jsonify(    status=200,    replies=[{      'type': 'text',      'content': 'The price of %s is %f BTC and %f USD' % (crypto_name, r.json()['BTC'], r.json()['USD'])    }]  )@app.route('/errors', methods=['POST'])def errors():  print(json.loads(request.get_data()))  return jsonify(status=200)app.run(port=port)

С нашим новым сервером завершено, у нас теперь есть все куски нашей головоломки. Давайте собираемся:

  1. Запустите свой скрипт Python,
  2. Выиск порта 5000 в Интернет с Ngrok: Ngrok HTTP 5000 ,
  3. Скопируйте форму экспедирования URL-адреса Ngrok и прошедшего его как ваша базовая URL-адрес бота на SAP Consveration AI

Теперь, когда у вас есть основы, чтобы построить бот, способный извлечь третьих сторонних данных, что это будет? Вы показываете нам!

PS: Поскольку этот учебник использует Ngrok, ваш компьютер должен быть включен, и Ngrok должен работать для вашего бота для функции.

Первоначально опубликовано на SAP Consordation Ai Blog Отказ