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

В этом руководстве мы будем использовать Swift Lambda и мощный API чата Stream для создания системы модерации контента, которая может предотвратить отправку пользователями нежелательного контента. В этом случае мы отфильтруем возможные данные кредитной карты, чтобы наши пользователи не передали их мошенникам. Однако вы можете адаптировать его к другим конфиденциальным данным или блокировать нецензурные слова.

Вы можете найти готовый проект на GitHub в папке Samples внутри репозитория Swift Lambda.

Требования

Установите URL-адрес Presend Webhook

После того, как вы создали приложение для чата iOS и запустили Swift Lambda, вам необходимо настроить Presend Webhook URL с помощью Stream Chat REST API. Для этого вам понадобится ключ API, JWT на стороне сервера и URL-адрес AWS Lambda.

Чтобы получить ключ API, перейдите на панель инструментов Stream Chat. Он будет там, как на изображении ниже.

Также скопируйте секрет, так как он необходим для создания JWT на стороне сервера. Вы можете использовать jwt.io для его создания. Просто вставьте секрет в текстовое поле справа и скопируйте JWT слева.

Наконец, чтобы установить URL-адрес Presend Webhook, вы можете запустить команду curl ниже в терминале. Обязательно замените [api_key], [jwt] и [aws_lambda_endpoint_url].

Настроить Swift Lambda

Сначала ваша Swift Lambda будет обрабатывать GET запросов. Измените его для обработки запросов POST, что можно сделать, отредактировав файл serverless.yml и заменив строку method: get на method: post.

Отфильтровать номера кредитных карт

Теперь, когда Swift Lambda настроена, мы можем перейти к части кода.

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

Вы должны добавить это в файл main.swift.

Обработать сообщение

Когда запрос POST попадет в вашу лямбду, он будет содержать объект JSON, описывающий новое сообщение. Чтобы узнать, какие поля вы можете ожидать в этой полезной нагрузке, смотрите документацию.

В файл main.swift вставьте приведенный ниже код.

Этот код проанализирует тело JSON в словарь и изменит объект сообщения, пропустив его «текстовое» поле через функцию редактирования кредитной карты. Как указано в документации, мы возвращаем этот измененный объект сообщения для отправки отредактированной версии.

Развертывание и тестирование модерации контента

Основное преимущество использования Swift Lambda заключается в том, что с ним можно быстро выполнять итерации. После написания кода модерации просто снова запустите скрипт ./Scripts/deploy.sh и подождите несколько секунд.

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

Следующие шаги со Swift Lambda

Поздравляем! Вы только что загрузили настоящий бэкэнд Swift в AWS. Этот код модерации прост и создан для демонстрации использования Swift Lambda для расширения возможностей ваших чат-приложений. Есть много способов создать еще более богатые сценарии использования Swift Lambda. Чтобы узнать больше, ознакомьтесь с учебником по чат-боту с Swift Lambda и документацией по Stream Chat.