SurveyMonkey — создание веб-перехватчика с AWS API Gateway в качестве URL-адреса подписки

Я пытаюсь интегрировать SurveyMonkey со своей серверной частью.

Это поток:

(1) Мы создаем веб-перехватчик (https://developer.surveymonkey.com/api/v3/#webhooks), используя метод POST из PHP, с URL-адресом подписки в качестве шлюза API AWS.

(2) Когда пользователь завершает опрос, SurveyMonkey вызывает URL-адрес подписки (шлюз API), который, в свою очередь, вызывает функцию Lambda для обновления базы данных.

Проблема заключается в том, что когда я пытаюсь указать URL-адрес шлюза API в качестве URL-адреса подписки, SurveyMonkey возвращает ответ о неверном запросе. Если я использую общую страницу .php, веб-хук успешно создается.

В разговоре со службой поддержки SurveyMonkey они сказали, что шлюз API должен возвращать ответ 200 на запрос HEAD. Я не уверен, как настроить это в AWS.

Кто-нибудь, кто реализовал/интегрировал API-шлюз с SurveyMonkey, подскажет, как решить эту проблему?

Вот разговор со службой поддержки SurveyMonkey:

Спасибо за обратную связь. Я только что разговаривал со своими коллегами из команды разработчиков, и они отметили, что не должно быть проблем с использованием лямбда-функции для вашего URL-адреса подписки. Пока он принимает запросы HEAD и POST и возвращает 200. Надеюсь, это поможет вам; конечно, пожалуйста, дайте мне знать, если я могу помочь дальше.

Спасибо за обратную связь. Я хотел подтвердить, что лямбда-функция должна возвращать 200 на запрос HEAD, чтобы мы могли правильно включить веб-перехватчик. Это делается не после создания веб-перехватчика, а при его создании. По-прежнему кажется, что лямбда-функция не отвечает или отвечает правильно, поскольку она создана, поэтому она будет продолжать давать сбой. Я надеюсь, что это поможет прояснить; пожалуйста, дайте мне знать, если я могу помочь дальше.


person Vamsi Challa    schedule 22.07.2017    source источник


Ответы (1)


Так или иначе, вам нужно заставить шлюз API отвечать на HEAD запросы. Есть много способов сделать это. Вы можете добавить метод HEAD к ресурсу вашего URL. Вы можете сделать это в консоли шлюза API в разделе ресурсов, когда редактируете свой API. Вы можете отправлять запросы HEAD в лямбда-функцию, и эта функция возвращает код состояния 200 для соответствующих запросов HEAD. Вы можете настроить фиктивный возврат в запросе на интеграцию API, но вам нужно будет указать правильные детали интеграции. Вы также можете просто установить интеграцию ANY лямбда-прокси и работать со всем на стороне лямбда.

После того, как вы что-то настроили, вы сможете протестировать его с помощью curl:

curl -I http://yourUrl.example.com
person Mark    schedule 22.07.2017
comment
Спасибо. Это решило проблему. Я только что использовал консоль шлюза API в AWS, чтобы создать метод HEAD, и по умолчанию он вернул 200. - person Vamsi Challa; 23.07.2017