Краткое руководство по созданию собственного простого приложения для управления расходами

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

Приложение

Нам с женой нужно было приложение со следующими функциями:

  • Ввод должен быть голосовым, например «30.4 хлеб с маслом».
  • Строка должна быть добавлена ​​в файл Google Sheets

Эти требования исходят из повседневной спешки, которая мешает нам набирать текст в приложении. Более того, нам нужен был общий инструмент, который мог бы писать в те же Google Sheets, к которым мы позже прикрепили дашборд Google Data Studio.

Я несколько недель искал такое приложение в магазине приложений для Android, но не нашел ничего бесплатного, которое могло бы соответствовать этим требованиям. Итак, я решил создать такое приложение самостоятельно.

Архитектура

Это приложение похоже на голосовой дневник, о котором я говорил несколько недель назад, но я решил не использовать Heroku и Python и заменить их на Make.com. Make (ранее известная как Integromat) — это платформа без кода для микширования сервисов.

Я всегда говорю, что Make.com — это то, чем Zapier должен быть и никогда не будет, потому что он позволяет создавать сложные приложения практически без усилий и без написания единой строчки кода. Я автоматизировал несколько вещей в своей работе учителя, используя Make, и я очень доволен. Вот почему я собираюсь использовать его.

Голосовой ввод начинается с Telegram-бота, а транскрипцию выполняет AssemblyAI, как мой голосовой дневник. AssemblyAI — это платформа, которая позволяет делать несколько вещей с аудиофайлами, включая транскрипцию голоса на нескольких языках. Я использовал его в течение нескольких месяцев и могу сказать, что он очень полезен и прост в реализации. Самой поразительной особенностью является его способность добавлять знаки препинания к расшифрованным предложениям, и это очень точно. Я думаю, что это один из самых полезных инструментов для транскрипции голоса и анализа аудио.

Полная архитектура выглядит так:

  1. Пользователь отправляет голосовое сообщение Telegram-боту в формате «‹сумма› ‹описание›»
  2. Сценарий Make получает голосовое сообщение и отправляет его в AssemblyAI для расшифровки.
  3. Веб-хук Make получает транскрипцию, анализирует текст, чтобы извлечь сумму транзакции и описание, и добавляет их в качестве новой строки файла Google Sheets.

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

Теперь настроим все необходимые инструменты.

Конфигурация Telegram-бота

Прежде всего, нам нужно создать нового бота Telegram. Сначала нам нужно открыть чат с пользователем @botfather и отправить команду /newbot. Давайте дадим боту понятное имя и имя пользователя и сохраним ключ API, возвращенный после этого сообщения.

Этот ключ понадобится нам позже на Make.com.

Получите ключ API AssemblyAI

Создайте бесплатную учетную запись на assemblyai.com. Затем войдите в систему, и вы увидите ключ API в меню Разработчики.

Сохраните этот ключ API где-нибудь, потому что он пригодится позже.

Сценарий №1: Telegram-бот

Теперь самое интересное. Во-первых, давайте откроем Make.com и создадим новый сценарий. Я назвал его «бот Telegram GM Expense Manager», но вы можете называть его как хотите.

Давайте добавим новый Webhook и скопируем его URL.

Make определяет структуру Webhook при первом вызове, поэтому мы должны добавить его в Telegram. Откройте браузер и введите следующее:

https://api.telegram.org/bot<bot_token>/setWebhook?url=<webhook_url>

где <bot_token> — токен бота Telegram, а <webhook_url> — URL-адрес создания веб-перехватчика.

Откройте чат со своим ботом и нажмите «/ start». К сожалению, этого недостаточно, поскольку текстовое сообщение не содержит всей необходимой информации для обработки голосового сообщения. Вам нужно снова щелкнуть узел Webhook и нажать «Переопределить структуру данных». Затем зайдите в Telegram и отправьте голосовое сообщение боту. Это поможет Make webhook распознать структуру JSON сообщения, отправленного Telegram.

Теперь нам нужно получить URL-адрес нашего файла голосового сообщения. Этот URL-адрес будет отправлен в AssemblyAI для расшифровки.

Давайте добавим в сценарий узел «Telegram Bot: Сделать вызов API» и нажмем «Добавить». Давайте введем имя для подключения к боту и добавим ключ API бота Telegram, предоставленный Botfather.

После добавления бота установите заголовки и метод URL следующим образом:

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

Нажмите «Выполнить один раз», чтобы запустить сценарий и отправить еще одно голосовое сообщение из Telegram. Узел Telegram Bot будет настроен в конце этой операции.

Давайте теперь добавим узел «Set Variable» для хранения токена бота и еще один узел этого типа для хранения токена AssemblyAI.

Наконец, давайте создадим URL-адрес голосового сообщения.

В конце нам нужно вызвать AssemblyAI API с URL-адресом голосового сообщения, которое нужно расшифровать. Прежде чем сделать это, мы должны создать новый Webhook, который будет вызываться AssemblyAI. Итак, нам нужно создать новый сценарий с новым веб-хуком. Давайте запишем URL-адрес Webhook и добавим последний HTTP-узел в этот сценарий:

Тело запроса содержит URL-адрес аудио и URL-адрес нового веб-перехватчика. Мы добавляем параметр chat_id, чтобы второй сценарий отвечал пользователю.

Полный рабочий процесс должен быть похож на этот:

Сценарий № 2: Веб-перехватчик ответа

В предыдущем сценарии мы использовали URL-адрес веб-перехватчика, созданного во втором сценарии. Этот веб-перехватчик вызывается, как только аудио транскрипция готова. Мы добавили параметр chat_id в параметры GET, чтобы бот ответил нам и получил уведомление о полученной транскрипции.

Теперь нам нужно получить расшифрованный текст и добавить строку в Google Sheets.

Чтобы получить текст, нам нужно вызвать другую конечную точку AssemblyAI с transcription_id, полученным через Webhook. Итак, мы добавляем модуль HTTP и ключ API в качестве заголовка авторизации. Не забудьте установить для параметра «Разбор ответа» значение «Да», чтобы правильно проанализировать полученный JSON.

Теперь мы можем разделить сумму и текст описания транзакции из полученного текста. Мы создаем две переменные, используя узел «Установить несколько переменных». Первое слово — количество, а вторая часть текста — описание. Мы можем легко выполнить такое разбиение, используя расположение пробела, отделяющего первое слово от следующей части текста.

Теперь мы можем создать Google Sheets под названием «Расходы», например, и создать столбцы.

После того, как мы свяжем Make с Google Sheets, мы можем добавить узел, чтобы добавить в него строку и заполнить значениями.

Наконец, вернемся в Telegram и отправим текст подтверждения.

Вот как должен выглядеть наш окончательный сценарий:

Сохраним все сценарии и активируем их. Теперь мы закончили! Давайте попробуем наш новый инструмент!

Давай попробуем!

Теперь мы можем отправить голосовое сообщение нашему боту Telegram, например «0,5 газет». Через несколько секунд получаем подтверждающее сообщение.

И строка была правильно добавлена ​​в нашу таблицу Google.

Возможные уточнения

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

Заключение

Это простой пример использования AssemblyAI для создания голосового менеджера расходов. Процесс был создан с помощью платформы без кода Make.com, но мы могли бы реализовать его с помощью пользовательского кода на PHP, Node.js или Python. Возможности AssemblyAI и его гибкость позволяют любому пользователю воспользоваться его функциями без написания единой строки кода.

Первоначально опубликовано на https://www.yourdatateacher.com 14 сентября 2022 г.