Краткое руководство по созданию собственного простого приложения для управления расходами
Я всегда искал простое приложение для управления расходами, которое я мог бы использовать вместе с женой для сбора наших ежедневных расходов. Это приложение должно быть голосовым приложением, которое анализирует мой голос и добавляет строку в электронную таблицу или что-то в этом роде. Поскольку я никогда не мог найти что-то подобное, я решил создать собственное приложение.
Приложение
Нам с женой нужно было приложение со следующими функциями:
- Ввод должен быть голосовым, например «30.4 хлеб с маслом».
- Строка должна быть добавлена в файл Google Sheets
Эти требования исходят из повседневной спешки, которая мешает нам набирать текст в приложении. Более того, нам нужен был общий инструмент, который мог бы писать в те же Google Sheets, к которым мы позже прикрепили дашборд Google Data Studio.
Я несколько недель искал такое приложение в магазине приложений для Android, но не нашел ничего бесплатного, которое могло бы соответствовать этим требованиям. Итак, я решил создать такое приложение самостоятельно.
Архитектура
Это приложение похоже на голосовой дневник, о котором я говорил несколько недель назад, но я решил не использовать Heroku и Python и заменить их на Make.com. Make (ранее известная как Integromat) — это платформа без кода для микширования сервисов.
Я всегда говорю, что Make.com — это то, чем Zapier должен быть и никогда не будет, потому что он позволяет создавать сложные приложения практически без усилий и без написания единой строчки кода. Я автоматизировал несколько вещей в своей работе учителя, используя Make, и я очень доволен. Вот почему я собираюсь использовать его.
Голосовой ввод начинается с Telegram-бота, а транскрипцию выполняет AssemblyAI, как мой голосовой дневник. AssemblyAI — это платформа, которая позволяет делать несколько вещей с аудиофайлами, включая транскрипцию голоса на нескольких языках. Я использовал его в течение нескольких месяцев и могу сказать, что он очень полезен и прост в реализации. Самой поразительной особенностью является его способность добавлять знаки препинания к расшифрованным предложениям, и это очень точно. Я думаю, что это один из самых полезных инструментов для транскрипции голоса и анализа аудио.
Полная архитектура выглядит так:
- Пользователь отправляет голосовое сообщение Telegram-боту в формате «‹сумма› ‹описание›»
- Сценарий Make получает голосовое сообщение и отправляет его в AssemblyAI для расшифровки.
- Веб-хук 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 г.