Sobes.tech
Senior

A HeadHunter webhookon keresztül tud választ küldeni, az Avito nem — neked kell személyesen menned. Hogyan kezeljük ezt?

sobes.tech MI

Válasz az MI-től

Для обработки откликов от 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, обеспечивая единый поток обработки откликов.