Рубрики
Без рубрики

Как я реализовал умный контакт – я Форма

Это не учебное пособие по кодированию, а очень высокий обзор моей реализации. Тем не менее, я … Теги от обучения, Python, Serverless, Showdev.

Это не учебное пособие по кодированию, а очень высокий обзор моей реализации. Тем не менее, я поделился ссылками на мой Код GitHub и различные ссылки в линию. Форма контакт-мне находится на моем Сайт (Прокрутите до конца).

Проблема

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

Решение

Для уведомления я решил иметь Slack Incoming WebHook Отказ Я бы создал слабый канал, а сообщения, отправленные мне с моего сайта, появятся здесь. Для ответа я решил отправить письмо пользователю только в том случае, если они делится существующим/действительным адресом электронной почты.

Мозговой штурм

  • Я изначально имел Backend Backend + Mongodb Atlas Cluster, чтобы сохранить данные сообщений (имя, электронное письмо, сообщение) непосредственно с веб-сайта. Но эти данные не имели никакого использования. Я просто хотел быть уведомлен и отправить ответ на пользователя.
  • Чтобы проверить, существует ли электронная почта, Python имеет хорошую библиотеку – Validate_email Отказ Nodejs действительно не было много «очевидных» вариантов, а некоторые должны были быть сделано вручную (По Отправка фактической электронной почты для проверки, который я не хотел).
  • Я не хотел, чтобы сервер постоянно работал, поскольку эта функция будет экономно использовать. Функции Azure был хорошим выбором Поскольку мне нужно было бежать (читать как «стоило меня») только при запуске HTTP-запроса.
  • Я также хотел выполнить шаги в последовательности, и я хотел, чтобы способ сохранить состояние моего предыдущего шага (адрес электронной почты действительный или нет), и именно имеет смысл использовать Azure Прочные функции для этого.
  • Поскольку библиотеки Python имели много моих потребностей, я выбрал Python над Nodejs.

Реализация

  • Настройка функций Azure
    • Я начал с проекта «QuickStart Azure Functions (Python) на моем локальном корпусе VS Code Как дано на Azure Docs. Затем я опубликовал эту демонстрацию своей учетной записи My AZ и проверил пример, используя URL Postman и URL AZ. Теперь мне пришлось просто поменять примеры с моими собственными реализациями.
    • AZ Прочные функции имеют 3 типа функций (сейчас 4 типа) – Клиент (это начинает Orchestrator), Orchestrator (управляет разными задачами или деятельностью), а также деятельность (что вы действительно пытаетесь сделать). QuickStart-Demo дает вам это.
    • Поскольку у меня было 3 основных мероприятия, я создал 3 функции деятельности; Один из каждого – Отправить уведомление об слайду ( NotifySlackChannel Файл в репо), проверьте, действителен ли электронная почта ( ISEMailxists ) и отправьте письмо ( Sendremail ). VS Code AZ Функции Плагин имеет быстрые действия для создания их. Затем подключите эти новые мероприятия в демо-код, заменив вызовы в Hello своими новыми 3 действиями.
    • Я начал с Получение моего запроса тела как полезная нагрузка, а затем Передача этой полезной нагрузки {пользователь, электронная почта, сообщение} в функции прочных AZ.
  • Содержание уведомления – см. Sendemail.

    • Создайте учетную запись Slack и создайте канал, где вы хотите ваши сообщения.
    • Создайте Slack App, включите и создайте Входящие веб -ook Отказ Вы получите ударный URL, который вы можете использовать для публикации сообщений, отправив ему полезную нагрузку; Как {Text: «Ваше сообщение приходит сюда»}.
    • Я также добавил форматирование на мои сообщения, используя Slack Block Kit UI Отказ Это довольно аккуратно, потому что все, что вам нужно сделать, это отправить несколько дополнительных объектов JSON (для кнопки и т. Д.) в данные полезной нагрузки. Остальные остаются прежними. Сладкий.
  • Проверьте, действительно ли электронная почта – см. Исмайлксисты

    • Это простой Python код, который проверяет, существует ли данное электронное письмо
  • Отправить письмо – см. Sendemail.

    • Получить вывод предыдущей операции – Исмайлксисты Отказ Если это значение это Правда Только тогда продолжайте этот шаг.
    • Это была простая реализация, почти как данная В их примерах Отказ
  • Переменные среды
    • Лучше всего не контролировать конфигурацию с кодом и вместо этого использовать переменные среды.
    • AZ Funcs позволяют вам добавить Переменные как конфигурация который можно использовать вашим кодом.

Устранение неполадок

  • Python SMTPLIB (для отправки электронных писем) работает нормально, но при развертывании кода на функции Az, AZ не передает электронные письма через. Вам нужно использовать SMTP RELAY SERVICES (SendGrid, MailJet), чтобы сделать это на Azure.
  • Передача параметров из HTTP-запроса на функцию AZ не очень интуировано.
  • Отладка на функции AZ после развертывания – боль. Использовать logger.info вместо Печать () (Python) или console.log (JS).
  • Проходные журналы на функциях Az не согласуются и не отображаются/бегите по времени. AZ Portal должен быть обновлен.
  • У меня были проблемы со Сендергридом. Выглядит как у других тоже есть . Для меня они попросили слишком много подробностей (Организация, адрес, причина использовать эту услугу и т. Д.) О создании аккаунта, и я хотел быть расплывчатым, так как я только настроил только для проекта DEV. Они не позволили мне использовать SendGrid и заставили меня создать билет с поддержкой, чтобы оправдать, как я хочу использовать SendGrid для отправки электронных писем. Грубый. Да пошло оно. Mailjet Прошло легче настроить, и их бесплатная учетная запись дает больше электронных писем (MailJet допускает 200, по сравнению со странами 100 электронных писем в день).

Оригинал: “https://dev.to/rodiwa/how-i-implemented-a-smart-contact-me-form-1a48”