Заметки на ходу с Evernote и Twilio — Часть 2

Автор: | 02.08.2026

В первой части этой серии мы узнали, как использовать SMS, отправленное на ваш номер Twilio, для создания заметки в Evernote. Текст отлично подходит для большинства сценариев ведения заметок, но иногда нужно больше выразительности. Некоторую информацию лучше всего фиксировать визуально, поэтому мы добавим поддержку MMS для добавления фотографий в заметки.

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

Этот пост расширяет функциональность, созданную в Части 1. Если вы еще не прошли тот туториал, сделайте это перед тем, как приступать к этой статье. Он проведет вас через процесс начала работы с API Evernote и научит создавать заметку в Evernote с помощью SMS. Я подожду здесь, пока вы с этим разберетесь, и мы продолжим, когда вы вернетесь.

Все готово? Отлично, давайте перейдем к сценарию использования MMS.

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

Говорят, что картина стоит тысячи слов. Иногда идеи нужно фиксировать визуально. В контексте ведения заметок это может быть особенно эффективно. Возможно, вы проводите исследование в местном строительном магазине для ремонта дома. Слова «антично-белая потолочная плитка» могут что-то значить для вас, пока вы смотрите на нее в магазине. Однако фотография будет гораздо полезнее через две недели, когда вы попытаетесь принять решение. Давайте расширим маршрут `/message`

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

В API Evernote есть концепция, называемая Resources (Ресурсы). Вы можете думать о ресурсе как о чем-то очень похожем на вложение в электронное письмо. Для создания ресурса нам понадобится содержимое файла, который представляет ресурс, а также MIME-тип для ресурса. Из этого мы можем создать ресурс, который затем будет встроен в заметку, создаваемую нами в Evernote.

Первое, что нам нужно сделать для создания ресурса из нашего MMS-сообщения, — это загрузить отправленное изображение. Мы создадим метод, который открывает файл по URL-адресу, предоставленному нам Twilio, и возвращает содержимое в виде строки. Добавьте следующий код в `app.rb`

:

Теперь в маршруте `/message`

добавьте строку для загрузки изображения с помощью нашего нового метода:

Далее нам нужно изменить метод `make_note`

, созданный в Части 1, чтобы он обрабатывал добавление картинки к заметке. Мы передадим `image`

, который мы только что загрузили, а также MIME-тип, указанный Twilio для изображения. Измените вызов `make_note`

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

Теперь мы изменим `make_note`

для обработки этих новых параметров. Обновите его следующим образом:

Работа с ресурсами меняет способ создания нашего объекта заметки. Нам нужно создать заметку до указания `content`

для заметки, так как мы будем использовать объект заметки для создания ресурса для нашего изображения. Метод `add_resource`

— это вспомогательный метод в геме `evernote_oauth`

, который берет на себя встраивание ресурса в заметку. Он возвращает `hexdigest`

— указатель, который мы можем использовать для ссылки на наш ресурс из ENML, определяющего тело нашей заметки. Мы передаем этот `hexdigest`

вместе с `mime_type`

в `generate_note_body`

, который мы скоро обновим. Затем мы присваиваем `note_body`

свойству `content`

нашей заметки и создаем заметку с помощью неизменного метода `create_note`

из Части 1.

Давайте обновим `generate_note_body`

, чтобы добавить изображение в нашу заметку:

Ключевым моментом здесь является строка, которая добавляет тег ` в тело заметки, ссылающийся на `

`resource_hexdigest`

, который мы передали. Это встроит изображение после текста в заметке.

Вот и все, теперь вы можете создавать заметки в Evernote, содержащие изображения. Отправьте MMS на номер Twilio, который вы настроили в Части 1, и в вашей учетной записи Evernote Sandbox должна быть создана заметка с изображением.

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

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

Первое, что нам нужно сделать, — это создать маршрут `/voice`

в `app.rb`

, чтобы Twilio использовал его в качестве вебхука для входящих голосовых вызовов. Этот метод укажет Twilio, что делать, когда кто-то звонит, с помощью TwiML, сгенерированного вспомогательной библиотекой twilio-ruby:

TwiML, возвращаемый этим методом, выглядит так:

Когда кто-то звонит на ваш номер Twilio, ему будет предложено записать сообщение, после чего последует звуковой сигнал. После завершения звонка Twilio расшифрует аудио и сделает POST-запрос на `http://your-host.com/transcription`

с полученным текстом и ссылкой на аудио. Чтобы обработать этот POST-запрос, давайте добавим маршрут `/transcription`

в наше приложение Sinatra:

Этот код должен показаться довольно знакомым, поскольку он имеет ту же структуру, что и код `/message`

, который мы написали ранее. Сначала мы загружаем аудио из `RecordingUrl`

, предоставленного нам Twilio в параметрах запроса. Затем мы передаем это аудио в `make_note`

вместе с `TranscriptionText`

(также из параметров запроса) и MIME-типом `audio/mpeg`

. Вот и все, давайте проверим это. Перейдите к вашему номеру Twilio и измените Voice URL, чтобы он указывал на наш новый блестящий эндпоинт `/voice`

:

Нажмите *Save*, затем позвоните на свой номер Twilio и оставьте себе сообщение. После завершения транскрибации в вашем блокноте Evernote должна появиться новая заметка. Вы можете щелкнуть по аудиофайлу, чтобы услышать себя, на случай, если текст не совсем совпадает с тем, что вы сказали. Результат будет выглядеть так в вашем блокноте Evernote Sandbox:

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

Evernote — отличная система для ведения заметок, и она открывает двери для по-настоящему интересного сотрудничества в сочетании с Twilio. В этом посте мы взяли то, что построили в Части 1, и добавили возможность прикреплять изображения к нашим заметкам с помощью MMS. Затем мы создали систему голосовой почты для Evernote менее чем в 15 строках кода! Я очень рад видеть, что вы сможете создать с помощью Twilio и API Evernote. Попробуйте несколько из этих идей, чтобы расширить систему, которую мы построили:

— Поддержка более одного изображения в рабочем процессе MMS

— Создание системы IVR для голосового рабочего процесса, которая позволяет выбрать целевой блокнот

— Добавление безопасности (эта штука прямо-таки просится для троллинга)

Дайте мне знать, когда вы создадите что-то потрясающее, написав мне в Twitter @brentschooley или отправив письмо на brent@twilio.com.