Kotlin — это новый популярный язык с выводом типов в мире JVM-языков, который позволяет создавать единый код для Android, серверных и даже JavaScript-приложений. Если вы разработчик на Java, попробовать Kotlin будет несложно.
Однако вы не сможете скопировать код из видео, поэтому его можно скачать здесь или просто следовать инструкциям ниже.
В этой статье мы будем использовать IntelliJ и Gradle для управления зависимостями. С небольшими изменениями вы также сможете использовать другую IDE и систему управления зависимостями.
В IntelliJ создайте новый проект Gradle и добавьте Kotlin (Java) в качестве библиотеки.
Назовём этот проект
`TwilioKotlin`
и выберем структуру пакетов. Обычно я использую свой перевёрнутый домен следующим образом:
В поле «Project Name» оставьте название
`TwilioKotlin`,
а на следующем экране убедитесь, что установлен флажок «create directories for empty content roots automatically».
Нажмите «next» ещё раз и выберите подходящее место для хранения проекта. Обычно я сохраняю свои Kotlin-проекты в папке `~/Projects/Kotlin/`.
IntelliJ предложит импортировать изменения, что загрузит Spring Boot и библиотеку Twilio. Если вы работаете в Windows, возможно, потребуется принудительно обновить зависимости, если этого не произойдёт автоматически.
Внутри `/src/main/kotlin` создайте новый Kotlin-класс с именем `App.kt`. Это будет наш основной класс приложения, который укажет Kotlin, что мы будем использовать Spring Boot в качестве фреймворка.
Убедитесь, что вы изменили значение `package` на соответствующее вашему проекту при его создании.
После определения базового приложения на Spring Boot мы готовы создать наш первый маршрут. Начнём с маршрута, который будет возвращать строку «Hello Spring Boot» при запросе. Создайте новый Kotlin-класс в той же директории, что и `App.kt`, назовите его `SMSController.kt` и добавьте следующий код:
Как и раньше, убедитесь, что значение `package` соответствует вашему проекту. Запустите проект, щёлкнув правой кнопкой мыши по `App.kt` и выбрав «Run».
IntelliJ запустит ваш проект, и в окне «Run» внизу появится сообщение с указанием порта, на котором работает приложение. По умолчанию это порт 8080.
Отлично! У нас есть базовое веб-приложение на Kotlin. Теперь усложним задачу — например, отправим SMS-сообщение. Сделать это на Kotlin просто, так как он совместим с Java, что позволяет использовать библиотеки обоих языков.
Мы уже установили библиотеку Twilio для Java в наш проект и можем использовать её так же, как и Java-класс.
Остановите проект, нажав на красную кнопку в IntelliJ, и добавьте новый `RequestMapping` в класс `SMSController` под названием `sendMessage`.
В этом маршруте мы создаём новый экземпляр `TwilioRestClient`, передавая Account Sid и Authentication Token, которые можно получить в консоли Twilio.
Затем создаём новое сообщение, указывая номера телефонов «To» и «From», а также текст сообщения.
Всё готово! Запустите приложение снова, и когда вы перейдёте по адресу http://localhost:8080/sendMessage, на ваш телефон придёт сообщение с вашего Twilio-номера. Но что, если кто-то отправит SMS на ваш Twilio-номер? Как ответить?
Чтобы отвечать на сообщения, отправленные на ваш Twilio-номер, создадим новый маршрут в приложении, как делали ранее. На этот раз вместо использования REST API для отправки сообщения через Twilio нам нужно создать маршрут в `SMSController`, к которому Twilio сможет обратиться по HTTP, когда кто-то отправит SMS на ваш номер. Этот маршрут вернёт TwiML, чтобы указать Twilio, как ответить на входящее сообщение.
Мы добавили параметр `produces` в наш `RequestMapping`, чтобы указать, что тип контента должен быть `text/xml`. Таким образом, когда мы настроим номер для обращения к этому маршруту, Twilio получит XML в ожидаемом формате. Запустите приложение снова.
Я буду использовать ngrok, чтобы открыть доступ к моему локальному веб-приложению на порту 8080 из интернета, чтобы Twilio мог отправлять HTTP-запросы. У нас есть материал об использовании ngrok здесь, но если он у вас уже установлен, просто выполните следующую команду в новом окне консоли и скопируйте URL для переадресации:
Далее измените вебхук в разделе «Messaging» на ваш ngrok URL, добавив созданный маршрут.
Сохраните изменения и отправьте SMS на ваш Twilio-номер. Вы должны получить автоматический ответ от вашего Kotlin-приложения!
Одна из главных сложностей при написании серверных приложений на Java — это крутая кривая обучения, и никогда не знаешь, какую версию SDK или фреймворка использовать.
Есть множество хороших примеров, которые можно запустить в браузере на сайте http://try.kotlinlang.org/, чтобы лучше понять особенности языка. Мой любимый — «99 бутылок пива» 🍻.
Свяжитесь со мной в Twitter @marcos_placona или напишите на почту marcos@twilio.com и расскажите, что вам больше всего нравится в Kotlin.