У меня проблема со ссылкой для отмены подписки в бюллетене, и я не могу понять, что я делаю не так.
Ссылка в новостной рассылке <a title="Unsubscribe" data-msys-unsubscribe="1" href="https://example.com/en/site/unsubscribe">Unsubscribe</a>"
,
Я создал веб-крючок с тем же целевым URL-адресом, и, похоже, он срабатывает, так как он говорит: «О да! Последняя успешная партия доставлена 4 марта 2016 г. в 10:02».
Я реализую это в PHP, и сначала я подумал, что я не читаю это правильно (используя file_get_contents('php://input')
но когда я попробовал ТЕСТ из интерфейса Sparkpost webhook, ответ для var_dump(file_get_contents('php://input'))
было:
HTTP/1.1 200
Date: Fri, 04 Mar 2016 09:17:57 GMT
Server: Apache
X-Powered-By: PHP/5.5.32
Content-Length: 1290
Connection: close
Content-Type: text/html; charset=utf-8
"<pre>string(1254) \"[{\"msys\":{\"unsubscribe_event\":{\"type\":\"list_unsubscribe\",\"campaign_id\":\"Example Campaign Name\",\"customer_id\":\"1\",\"event_id\":\"92356927693813856\",\"friendly_from\":\"[email protected]\",\"mailfrom\":\"[email protected]\",\"message_id\":\"0e0d94b7-9085-4e3c-ab30-e3f2cd9c273e\",\"rcpt_meta\":{\"customKey\":\"customValue\"},\"rcpt_tags\":[\"male\",\"US\"],\"rcpt_to\":\"[email protected]\",\"raw_rcpt_to\":\"[email protected]\",\"rcpt_type\":\"cc\",\"subaccount_id\":\"101\",\"template_id\":\"templ-1234\",\"template_version\":\"1\",\"timestamp\":1454442600,\"transmission_id\":\"65832150921904138\"}}},{\"msys\":{\"unsubscribe_event\":{\"type\":\"link_unsubscribe\",\"campaign_id\":\"Example Campaign Name\",\"customer_id\":\"1\",\"event_id\":\"92356927693813856\",\"friendly_from\":\"[email protected]\",\"mailfrom\":\"[email protected]\",\"message_id\":\"0e0d94b7-9085-4e3c-ab30-e3f2cd9c273e\",\"rcpt_meta\":{\"customKey\":\"customValue\"},\"rcpt_tags\":[\"male\",\"US\"],\"rcpt_to\":\"[email protected]\",\"raw_rcpt_to\":\"[email protected]\",\"rcpt_type\":\"cc\",\"subaccount_id\":\"101\",\"template_id\":\"templ-1234\",\"template_version\":\"1\",\"timestamp\":1454442600,\"transmission_id\":\"65832150921904138\",\"user_agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36\"}}}]\"\nstring(2) \"qq\"\n"
Тот же дамп при нажатии на ссылку отписки в рассылке — пустая строка (string(0) ""
).
Я делаю что-то неправильно?
На основании даты этого вопроса я ожидаю, что у вас уже есть свой ответ, поэтому я опубликую его здесь для следующего человека.
Ссылка для отмены подписки не обязательно должна совпадать с конечной точкой вашего веб-крюка. Как это будет работать, вы получите «отписаться» от события webhook, но пользователь также будет перенаправлен на указанную вами ссылку.
Вот документ на SparkPost, который описывает это более подробно:
https://www.sparkpost.com/docs/user-guide/setting-up-unsubscribe-links/
Если вам нужен быстрый способ тестирования, вы можете использовать мой монитор WebHook здесь:
https://github.com/yepher/webhook_monitor
Или используйте текущую версию здесь: http://webhook.yepher.com:3000/
При посещении этой страницы вы получите «уникальный» URL. Просто добавьте это как один из ваших веб-хуков. Затем отправьте электронное письмо и нажмите на ссылку отписаться. Через некоторое время вы увидите «событие отмены подписки». Вы можете открыть второй монитор webhook и использовать его в качестве «ссылки для отказа от подписки», тогда вы увидите оба варианта. Событие webhook будет «POST», а фактический клик конечного пользователя будет «GET»
У меня была такая же проблема.
Я думаю, что URL из ссылки для отмены подписки не обязательно должен совпадать с webhook.
Вместо того, чтобы печатать результат на экране, запишите его в файл.
Вы увидите, что через несколько секунд / минут после нажатия на ссылку отказа от подписки, он будет иметь данные.