Возвращаясь назад: Создание приложения для групповой переписки с помощью ASP.NET MVC

Автор: | 30.07.2026

В 2010 году мы опубликовали статью, в которой подробно рассказывалось, как создать простое приложение для групповой переписки с использованием Twilio и ASP.NET MVC. За четыре года многое изменилось, и мы решили обновить эту статью. В этом посте я покажу, как можно использовать последние версии Twilio и ASP.NET MVC для создания простого приложения для групповой переписки.

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

Обратите внимание, что хотя я буду использовать ASP.NET MVC для создания своего приложения, представленные концепции легко применимы практически к любому другому языку программирования или фреймворку.

Наше простое приложение для групповой переписки основано на трёх базовых концепциях: участники группы, команды и сообщения. В нашем приложении участники могут присоединиться к группе, отправив команду **START** на телефонный номер Twilio группы. После присоединения любые сообщения, отправленные на номер группы, будут пересылаться всем остальным участникам. Чтобы оставить место для номера отправителя в пересылаемом сообщении, длина сообщений ограничена 140 символами. Для выхода из группы участники могут отправить команду **STOP**.

Когда пользователи отправляют сообщения на телефонный номер Twilio группы, Twilio инициирует POST-запрос к моему приложению на ASP.NET MVC. Задача этого приложения — обработать эти сообщения: либо добавить или удалить участников из группы на основе описанных выше команд, либо транслировать текстовые сообщения участникам группы через REST API. В любом случае моё приложение отвечает отправителю исходного сообщения, возвращая набор команд TwiML в ответ на POST-запрос Twilio.

На изображении ниже показан базовый поток работы приложения:

Для создания этого приложения я буду использовать Visual Studio 2013, .NET 4.5, ASP.NET MVC 5 и EntityFramework 6. Также я буду использовать библиотеку Twilio .NET Helper Library, о которой можно узнать больше на сайте Twilio.

Для моего приложения необходимо хранить телефонные номера участников группы, чтобы при поступлении сообщений я знал, кому их транслировать. Для этого я создам простую модель данных с использованием Entity Framework 6, но вы можете использовать любую стратегию хранения данных по своему усмотрению.

При работе с Entity Framework я предпочитаю использовать подход «code-first», поэтому начинаю создание модели данных с класса контекста базы данных, а затем создаю простой класс модели Members:

На этом работа с бэкендом завершена. Entity Framework позаботится о создании самой базы данных при запуске приложения.

Теперь, когда у меня есть бэкенд, мне нужно создать новый контроллер MVC и метод действия, который будет обрабатывать входящие POST-запросы от Twilio каждый раз при получении текстового сообщения. Вся обработка сообщений будет выполняться внутри метода действия *IncomingMessage*.

Обратите внимание, что при определении метода действия *IncomingMessage* я включил три параметра метода: *To*, *From* и *Body*. Когда Twilio отправляет POST-запрос, он включает несколько параметров в формате формы. Используя функцию привязки моделей ASP.NET MVC, я могу определить набор параметров метода, имена которых совпадают с входящими параметрами формы, и ASP.NET MVC автоматически сопоставит их с параметрами моего метода. Это позволяет мне узнать, от кого пришло входящее сообщение, куда оно направлено и что оно содержит, чтобы обработать его.

Обработка начинается с проверки наличия одной из четырёх поддерживаемых команд в теле сообщения. Если найдена поддерживаемая команда, приложение добавляет или удаляет телефонный номер из группы соответствующим образом.

Методы управления членством в группе реализованы следующим образом. Вы можете заменить эту реализацию на любой предпочитаемый вами метод доступа к данным.

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

Наконец, я хочу уведомить отправителя о том, что его сообщение обработано, для чего отвечаю на POST-запрос Twilio с помощью TwiML. Twilio выполняет этот TwiML, отправляя ответное текстовое сообщение первоначальному отправителю.

Как я показал в этом посте, создать приложение для групповой переписки с помощью Twilio и ASP.NET MVC очень просто. Если вы хотите настроить этот пример для собственного использования, ознакомьтесь с исходным кодом на GitHub. Легко создать бесплатную учётную запись Twilio и начать общение!

Конечно, существует множество способов расширить это приложение. Вот несколько идей, чтобы начать:

— Требовать PIN-код для присоединения к группе

— Позволять участникам устанавливать отображаемое имя

— Обрабатывать сообщения длиннее 140 символов

— Добавить возможность отключать уведомления на X часов

— Позволять участникам указывать часы тишины

Мне было бы интересно узнать, как вы используете Twilio для создания собственных приложений для групповой переписки, так что пишите мне на почту или в Twitter со своими идеями.