Вызов веб-сервиса с помощью Postman
Возникла проблема с задачей вызова веб-сервиса, условия такие:
POST https://api.mindbox.cloud/v3/operations/sync?endpointId=hh.ru&operation=get.user Content-Type: application/json; charset=utf-8 Accept: application/json Authorization: Mindbox secretKey="bla-bla-bla"
Для решения этой задачи я использовала приложение Postman, но на этапе авторизации, где у меня дан только ключ, приложение выдает ошибку 403, никак не могу ее обойти. Пыталась с помощью cUrl, также ничего не получилось, пишет ошибка
Отслеживать
3,717 19 19 серебряных знаков 46 46 бронзовых знаков
Что такое вебхук и как его создать
Вебхук — это механизм для передачи автоматических уведомлений и данных между сервисами при наступлении определенных событий.
Используя вебхуки в Mindbox, можно реагировать на различные события и автоматизировать взаимодействие с клиентами с помощью сценариев.
Для обращения в сервис с помощью вебхука, нужно сначала создать интеграцию с этим сервисом, а затем настроить нужные вебхуки.
Создание точки интеграции
- Перейдите в раздел Интеграции и нажмите «Добавить интеграцию»:
- Выберите пресет «Интеграция для вебхуков»:
- Настройте интеграцию.
3.1. Введите название.
3.2. Общие настройки.
- URL — корневой URL, который будет использоваться в вебхуках. Формируется на стороне заказчика. Можно задать ссылку целиком или указать общую корневую часть, а в каждом конкретном вебхуке вписывать только уникальные части ссылки.
Например, корневой URL Mindbox — https://api.mindbox.ru/v3/operations/, а запросы к сервису отличаются. В таком случае в интеграции можно задать общую для всех вебхуков часть, а в каждом конкретном вебхуке уже указывать только уникальный id.
- Скорость отправки запросов в секунду — можно задать допустимый максимум.
Полезно для сервисов, которые могут обрабатывать ограниченное количество запросов в секунду.
Лимит общий для всех вебхуков данной интеграции.
Обратите внимание, что ограничение на количество одновременных запросов — приблизительное, так как фактическое число вызовов в секунду может меняться в зависимости от задержек сети. Рекомендуем указывать меньшую скорость, чем может обрабатывать сервис, чтобы снизить вероятность превышения порога.
Задайте нужные для сервиса заголовки. Чаще всего используются: авторизация (Authorization), формат данных (Content-Type).
Если заголовок указан как секретный, то его значение будет скрыто при настройке вебхуков для этой интеграции для всех пользователей, которые не имеют доступа к интеграциям.
- Нажмите «Сохранить».
После этого будет доступно создание вебхуков по интеграции:
Создание вебхука
- Добавьте вебхук со страницы интеграции или перейдя в раздел Интеграции -> Вебхуки:
- Настройте вебхук.
2.1. Задайте название вебхука.
Оно будет отображаться в списке механик и в шагах сценария.
2.2. Общие настройки.
- Системное имя — используется для обработки ответа вебхука. Значение должно быть уникальным.
- Описание — любая полезная информация о функции вебхука. Опциональное поле.
- Метод — в зависимости от задачи: GET, POST, PUT, PATCH, DELETE.
- Корневой URL — URL из интеграции.
- URL — дополнение к корневому URL, указанному в интеграции. Может не заполняться, если интеграция содержит полный адрес.
- Просмотр URL — вывод полного URL запроса. Сделано для визуализации и не требует редактирования.
Ключ идемпотентности
Если добавить в вызов параметр $ , то при получении в ответе ошибок 5xx и 429 вебхук будет повторно вызван три раза в течение 6 минут. При получении других кодов ответов или при отсутствии параметра, повторных попыток подключения не произойдет.
Параметр не является обязательным.
Как добавить transactionId
Ключ идемпотентности можно ввести в адрес, заголовок или тело запроса.
Уточняйте в документации используемого сервиса, принимает ли он параметр transactionId и в каком виде его нужно передавать в вебхуках, так как требования к формату данных в сервисах могут различаться.
Рассмотрим примеры передачи transactionId в URL вебхука.
Параметр transactionId=$ добавляется после вопросительного знака ? кликом по соответствующей кнопке:
Множественные параметры разделяются амперсандом & :
- Унаследованные из интеграции — заголовки, которые были указаны в интеграции. Можно исключить ненужные, убрав галочку «Использовать».
- Добавленные — заголовки, которые добавляются для конкретного вебхука.
При вызове используются и унаследованные и добавленные заголовки.
В данном примере итоговый набор заголовков:
- Content-Type:application/json
- webhookHeader:test
2.4. Тело запроса.
В теле запроса можно использовать параметры шаблонизатора, том числе блоки if-else if-end if и циклы for-end for.
Параметры передаются с помощью JSON-кода.
Из правой боковой панели можно перейти в справку по шаблонизатору.
2.5. Ответ вебхука.
Нужно включить при использовании ответа вебхука в сценарии.
Можно принимать как сам факт успешной доставки вебхука, так и конкретные значения из ответа вебхука.
Пример записи переменной:
Подробнее об использовании ответов вебхуков — в статье.
- Нажмите «Сохранить»:
- Статья о вебхуках для разработчиков
- Экспорт логов вебхуков
Чтобы клонировать вебхук, откройте меню нужного вебхука и нажмите «Копировать»:
Что такое вебхуки и как они используются, где их можно настроить, примеры использования в Mindbox.
Вызов веб-сервисов и веб-методов архитектуры.net
Данная заметка описывает то, как просто можно вызвать .Net веб-сервис (написанный, например, в asp.net-проекте) используя библиотеку jQuery. Я немного сомневался в том, где поместить эту заметку, тут или в блоге .Net и, наконец, решил, что тема заметки больше касается jQuery и ее особенностей, чем темы программирования .Net.
Работоспособность проверена на .net framework 3.5, в версиях .net ниже 3.0 данный пример может не работать.
Первым делом необходимо знать особенности веб-сервисов написанных на .net. За сведениями лучше обратиться к первоисточнику и в нашем случае это будет ScottGu, архитектор .Net. В его блоге есть замечательная статья «JSON Hijacking and How ASP.NET AJAX 1.0 Avoids these Attacks».
В этой статье описаны требования и условия для вызова методов помеченных атрибутом [WebMethod], которые выполняет так же и архитектура AJAX.NET.
Условий, по сути, всего два:
— использовать только POST-запросы;
— в запросе должен быть следующий заголовок
Content-Type: application/json; charset=utf-8.
Веб-сервис
Для начала напишем простенький веб-сервис, который получает текст логина и возвращает булево значение того, есть ли в БД этот логин или его нет.
[WebMethod]
public bool CheckLogin( string login)
bool result = false ;
if (login.Length > 0)
ORMDataContext db = ORMDataContext.GetDB();
var user = BisORM.User.GetUser(login);
if (user != null )
result = true ;
>
>
return result;
>
* This source code was highlighted with Source Code Highlighter .
Как можно заметить, этот метод весьма простой, он использует Linq to SQL и сгенерированную ORM (ORMDataContext) для определения существует ли переданный логин в БД.
jQuery
Для работы с ajax в jQuery есть несколько функций, одна из которых как раз и подходит под все наши требования. Это функция $.ajax. Я не буду останавливаться на описании данной функции и всех ее параметров, эти данные можно легко почерпнуть на официальном сайте проекта в разделе документации. Определим следующую вспомогательную функцию javascript:
function ExecuteService( params , url, callbackSuccess, callbackError)
$.ajax( type: «POST» ,
url: url,
contentType: «application/json; charset=utf-8» ,
dataType: «json» ,
data: params ,
success: callbackSuccess,
error: callbackError
>);
> * This source code was highlighted with Source Code Highlighter .
Функция ExecuteService принимает следующие параметры:
— params – строка JSON с параметрами, которые необходимо передать для вызова веб-сервиса;
— url – полный адрес веб-сервиса с указанием веб-метода;
— callbackSuccess – функция, которая будет вызвана когда веб-метод выполнится успешно;
— callbackError — функция, которая будет вызвана, когда при выполнении веб-метода возникнет ошибка.
Следует заметить, что в callbackSuccess будет передан один параметр с результатом веб-метода в формате JSON-строки, а в callbackError будет передано три параметра:
— экземпляр запроса;
— текстовое сообщение;
— описание ошибки.
Как можно видеть, ExecuteService выполняет все требования к запросу, которые выдвигает .Net и которые были описаны выше: формируется post-запрос, заголовоку «contentType» присваивается нужное значение.
Использование
Теперь, наконец-то, напишем код, которые взаимодействует с нашим веб-сервисом посредством jQuery:
function CheckLogin(input, callbackResult, callbackError)
<
var login = $(input)[0].value;
if (login.length > 0)
<
var params = «» ;
ExecuteService(
params ,
«LoginService.asmx/CheckLogin» ,
callbackResult,
callbackError
);
>
>
* This source code was highlighted with Source Code Highlighter .
JS-функция CheckLogin принимает через параметры id textbox’a (в виде «#id»), в который введен логин, а так же две функции которые определяют, что делать при получении результат и при возникновении ошибки. Обратите внимание, на код
— это формирование JSON-строки для передачи параметра в наш веб-метод, который, я напомню, определен как:
public bool CheckLogin(string login)
Стоит заметить, что в случае, когда ваш веб-метод не принимает никаких параметров необходимо написать var params = «< >«;, но не var params = «»;. Так же следует знать, что хоть в Firefox допустимо передать , но в IE это не сработает, так что необходимо использовать одинарные кавычки
Определим так же функции для передачи callbackResult, callbackError:
function onCheckLogin(msg)
if (msg.d)
$( «#loginState» ).text( «ОК» ).css( «color» , «green» );
>
else
$( «#loginState» ).text( «Неверный логин» ).css( «color» , «red» );
>
>
function onError(XMLHttpRequest, textStatus, errorThrown)
$( «#loginMessage» ).text( «Ошибка при выполнении AJAX-запроса. Попробуйте перезагрузить страницу.» );
> * This source code was highlighted with Source Code Highlighter .
Обратите внимание на msg.d. Именно здесь будет лежать значение, которое вернется после исполнения веб-метода. Так же надо пояснить, что #loginState – это id элемента, для вывода результата проверки логина, а #loginMessage – id элемента, для вывода сообщения об ошибке.
Наконец, подходим к финальному штриху, подключим к textbox обработчик события потери фокуса:
Как видно из кода, используя функции jQuery, регистрируется обработчик события OnBlur для элемента управления, который объявлен как
< input id =«txtLogin» type =«text» />* This source code was highlighted with Source Code Highlighter .
Теперь, когда пользователь введет текст логина в поле ввода и перейдет на другой элемент, например для ввода пароля, автоматически произойдет запрос к веб-серверу для определения правильности ввода логина.
Заключение
jQuery позволяет очень легко обращаться к любым .Net веб-сервисам и веб-методам. В этой заметке были определены требования к таким запросам и реализована функция, которая прозрачно вызывает .Net методы принимая только url и параметры. Так же был рассмотрен пример использования этой функции для автоматической валидации логина введенного пользователем.
PS: кроме того, можно прочитать следующую статью по данной теме (только для подписчиков блога .Net)
ajax.net vs jquery.ajax
habrahabr.ru/blog/net/44190.html
Как вызвать веб сервис mindbox
Вебхуки позволяют в реальном времени реагировать на действия клиентов и автоматизировать маркетинговые коммуникации: например, после покупки в интернет-магазине вебхук создаст в CRM-системе задачи для менеджера и добавит клиента в базу ретаргетинга.
31 мая 2023
Что такое вебхуки и как их использовать в маркетинге
Что такое вебхуки и как их использовать в маркетинге
Вебхук (webhook) — это инструмент передачи данных между разными системами, который помогает автоматизировать маркетинговые операции. Он автоматически срабатывает после действий клиента на сайте или изменения данных в CRM. Например: клиент покупает что-то в интернет-магазине, а вебхук в CRM-системе сразу создает задачу отправить welcome-письмо и ставит менеджеру напоминание, чтобы тот позвонил клиенту.
Эксперты Mindbox рассказывают о том, как использовать вебхуки, чтобы в реальном времени реагировать на действия клиентов и автоматизировать маркетинговые коммуникации.
Как автоматизировать маркетинг с помощью вебхуков
Вебхуки помогают автоматически передавать информацию между системами. С помощью них можно:
Оповещать менеджеров по продажам или колл-центр о действиях клиента. Когда клиент совершает новые действия на сайте, в чат-боте или мобильном приложении, вебхук автоматически отправит уведомление об этом менеджерам по продажам, чтобы они смогли вовремя среагировать.
С помощью хуков «Нетология» ставит отделу продаж задачи на обзвон потенциальных клиентов в amoCRM. Когда человек посмотрел бесплатный курс, сходил на открытое занятие или часто заходит на сайт, он попадает в соответствующий сегмент в Mindbox, а с помощью вебхука карьерному консультанту автоматически ставится задача позвонить клиенту.
Для отправки задачи в amoCRM «Нетология» сформировала «горячие» сегменты в Mindbox. Как только человек попадал в этот сегмент, с помощью вебхука формировалась задача в amoCRM
Автоматически отправлять клиентам релевантные сообщения. После того как клиент выполнил целевые действия, срабатывает хук, который запускает автоматическую отправку клиенту маркетинговых коммуникаций из систем, с которыми настроена интеграция с их помощью.
В Oriflame интегрировали чат-бота c Mindbox, чтобы автоматизировать коммуникации и собирать информацию о действиях клиентов. После того как клиент выбирает категорию товаров в чат-боте, срабатывает вебхук. Он сообщает Mindbox о том, что нужно отправить клиенту рассылку с рекомендациями по продуктам из выбранной в чат-боте категории.
Когда вебхук сообщает Mindbox о предпочтениях клиента, запускаются триггерные механики: клиенту отправляется рассылка с рекомендациями, а информация о предпочтениях клиента объединяется с данными из других каналов коммуникации
Персонализировать маркетинговые акции на основе данных из CRM-системы. С помощью хуков можно автоматизировать проведение персональных маркетинговых акций на основе данных о клиенте из CRM.
Каршеринг Anytime.kz с помощью информации из CRM и вебхуков дарит своим клиентам на день рождения скидку 10%. CRM-система использует вебхук, чтобы сообщить в Mindbox о том, что у клиента день рождения и ему нужно отправить сообщение о скидке.
Скидка в день рождения выдается клиентам автоматически. Вебхук оповещает настроенные в Mindbox триггерные механики о том, что у клиента день рождения, триггер срабатывает, и письмо со скидкой отправляется клиенту
Почему стоит использовать вебхуки в дополнение к интеграции по API
Вебхуки — не единственный способ для передачи данных между системами. Помимо них можно взаимодействовать напрямую с API (application programming interface). Их отличие в том, что создание интеграций через API требует навыков программирования или использования ИТ-отдела, а для создания вебхука достаточно воспользоваться готовым решением и не привлекать программистов.
Например, маркетинговую CRM можно интегрировать с операционной CRM с помощью как API, так и вебхуков. Чтобы настроить интеграцию через API, понадобится программист, который разбирается в этих CRM-системах. Если CRM-системы позволяют использовать вебхуки, то обмен информацией между двумя CRM может настроить маркетолог.
Схема создания интеграций с помощью API и вебхуков. Для создания вебхуков не нужны специальные знания в программировании
Безопасность при работе с вебхуками
По ошибке или незнанию для передачи данных в вебхуках можно использовать протокол HTTP (hypertext transfer protocol). Однако использовать этот протокол небезопасно. Он передает данные в незашифрованном виде, поэтому злоумышленники могут перехватить информацию, которую передает вебхук, и подменить ее, отправив вместо данных клиента код с вирусом.
Чтобы защитить данные от перехвата, лучше использовать безопасный протокол передачи данных HTTPS (hypertext transfer protocol secure). Этот протокол шифрует всю информацию с помощью 256-разрядного шифрования, который нельзя расшифровать без ключа.
Филипп Вольнов,
head of marketing communications Mindbox
Кроме использования протокола HTTPS, мы рекомендуем настроить автоматическое логирование всех вызовов и результатов работы вебхука. Это поможет выявить попытки несанкционированного доступа к данным, которые передаются вебхуком, или другие аномалии.
Как создать вебхуки в Mindbox
В Mindbox есть модуль вебхуков для настройки интеграции с другими системами.
Чтобы создать этот инструмент в Mindbox, нужно:
1. Зайти в раздел «интеграции» и выбрать «вебхуки». В открывшемся окне будут показаны все добавленные ранее вебхуки и используемый метод запроса.
2. Нажать на кнопку «добавить»
3. Задать имя вебхука, URL-адрес и данные, которые будут отправляться при его срабатывании. Рекомендуем задавать понятные имена для вебхуков или использовать эмодзи, чтобы упростить работу с ними.
В теле запроса можно отправить любую информацию о клиенте, его действиях или заказе. Формат запроса можно адаптировать под любую систему — CRM, интернет-магазин, чат-бот или систему управления складом.
В каких еще сервисах можно создавать интеграции с помощью вебхуков
Для создания вебхуков можно использовать внешние сервисы — такие как Albato, Make или Zapier. Готовые решения снижают нагрузку на ИТ при решении задач интеграции разных систем и сервисов.
Стоит учесть, что Make и Zapier — зарубежные сервисы, которые сейчас недоступны пользователям из России.
Сервис Albato помогает настроить обмен данными между разными системами, используя более 400 решений для интеграций.
Для использования Albato не нужно обладать специальными знаниями. Можно настроить автоматическую интеграцию CRM, аналитики и мессенджеров самостоятельно за 5 минут
Неочевидные способы использования вебхуков
Гибкая настройка вебхуков для работы с любыми системами и форматами данных помогает использовать их для того, чтобы:
Автоматизировать публикации контента в разных каналах коммуникации. После того как маркетолог опубликовал новую статью в блоге компании, вебхук автоматически опубликует ее в социальных сетях.
Реагировать на неочевидные действия клиентов. С помощью вебхуков можно отслеживать действия клиента: открывает ли он письма, переходит ли по ссылкам, оставляет ли товары в корзине. Вебхук может сообщить CRM, что клиент прочитал письмо и ему больше не нужно звонить или отправлять SMS.
Создавать базу ретаргетинга. После подписки клиента на рассылку вебхук может автоматически добавлять его в базу ретаргетинга рекламной кампании.
Отслеживать установки мобильного приложения. После установки мобильного приложения срабатывает вебхук, и в систему программы лояльности отправляется запрос на начисление клиенту приветственных баллов.
Настраивать автоматизацию между системами. Когда статус заказа обновляется в основной CRM, с помощью вебхуков можно передавать информацию об этих изменениях в другие системы, например систему управления лояльностью или логистики.
- Теги:
- Автоматизация рутины