В первой части этой серии мы узнали, как использовать 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.