Sobes.tech
Senior
20

HeadHunter умеет присылать отклик через webhook, а Avito не умеет — надо самим ходить. Как это обрабатывать?

Companies where asked
OZONOZON

Answer from AI

sobes.tech AI

Для обработки откликов от HeadHunter через webhook и от Avito через периодический опрос (polling) можно реализовать гибкую архитектуру, которая поддерживает оба варианта:

  1. Webhook для HeadHunter:

    • Настроить HTTP-сервер, который принимает POST-запросы от HeadHunter с данными отклика.
    • Обрабатывать полученные данные сразу после получения.
  2. Polling для Avito:

    • Запустить периодическую задачу (например, с использованием таймера или cron), которая по расписанию делает запросы к API Avito для получения новых откликов.
    • Обрабатывать полученные данные аналогично webhook.
  3. Общая обработка:

    • Вынести логику обработки откликов в общий модуль, чтобы не дублировать код.

Пример на Go с использованием goroutine и HTTP-сервера:

// Обработчик webhook
func hhWebhookHandler(w http.ResponseWriter, r *http.Request) {
    // Парсим и обрабатываем данные от HeadHunter
}

func pollAvito() {
    for {
        // Запрос к API Avito
        // Обработка откликов
        time.Sleep(5 * time.Minute) // интервал опроса
    }
}

func main() {
    http.HandleFunc("/hh-webhook", hhWebhookHandler)
    go pollAvito() // запускаем polling в отдельной горутине
    http.ListenAndServe(":8080", nil)
}

Таким образом, система одновременно принимает push-уведомления от HeadHunter и самостоятельно опрашивает Avito, обеспечивая единый поток обработки откликов.