Настройка Callback под агентом и под конкретным клиентом
Callback - это HTTP(S)-уведомление, которое отправляется по факту возникновения события "Изменение состояния заказа".
Часто возникает вопрос "Почему необходимо использовать Callbacks, а нельзя просто выгружать список заказов?".
Дело в том, что Callbacks представляют оптимальный вариант взаимодействия в плане нагрузки на базу данных системы, так как события отправляются только по факту их возникновения и не создается фоновой нагрузки, когда по таймеру идут тяжелые запросы на выгрузку больших порций заказов.
Для тестирования Callbacks есть специальный удобный веб-сервис listener.corteos.ru, который умеет отображать отправленные коллбэки и может быть полезен для диагностики и эмуляции реальных событий.
Разберем настройку этого функционала на стороне агента.
Для этого нам нужен пользователь с административной ролью.
После авторизации переходим в пункт меню "Настройки > Настройки Callbacks":
Далее активизируем чекбокс "Callback по заказам":
Заполняем поле "Url адрес" следующим образом:
При желании мы можем провести тестирование нашего Callback при помощи кнопки "Протестировать" в правом верхнем углу портлета:
В открывшемся окне вставляем этот URL и нажимаем кнопку "Тестировать":
В случае успешной отправки мы увидим сообщение "Коллбэк протестирован успешно" в верхнем правом углу окна, а в противном случае будет показано сообщение об ошибке.
После тестирования мы можем увидеть следы наших запросов на listener.corteos.ru:
Проверим, как это работает на реальном заказе. Для этого сохраним наши настройки Callbacks при помощи кнопки "Сохранить" в нижнем правом углу окна.
Далее под агентом заходим в список заказов:
и в любом тестовом заказе меняем статус. Для этого нам нужно в списке заказов перейти в детали этого заказа:
В правом верхнем углу нажимаем на ссылку с названием статуса и меняем его, например, на "Выполнен":
После этого обновляем страницу listener.corteos.ru (или дожидаемся автоматического обновления), и видим, что нам пришло уведомление об изменении статуса нашего заказа:
Получено url-encoded сообщение такого вида:
action=finished&order=1756996&desc=Состояние заказа изменено на finished
Список переменных для отправки Callback можно увидеть на странице с настройками: /Admin/AgentCallbackEditor.
@id_Reserve - уникальный системный номер заказа, по которому произошло событие;
@id_ComplexReserve - идентификатор командировки;
@EventType - тип события (в настоящее время используется только orderstatechanged);
@ReserveState - текущее состояние заказа, значение из набора:
Creating - создается;
Draft - черновик;
ReadyForIssuance - готов к оформлению;
InProcess - в обработке;
Finished - выполнен;
Canceled - отменен;
Queued - ожидает реакции агента;
OnConfirmation - у поставщика;
NeedsWork - ожидает реакции клиента;
Error - ошибка обработки заказа.
@ComplexState - текущее состояние командировки, значение из набора:
Draft - черновик;
Authorizing - идет авторизация;
Cleancopy - чистовик;
Forexecution - на исполнении;
Canceled - отменена;
Finished - завершена.
@EventDescription - текстовое описание события;
@CallbackId - timestamp сервера, сформированный на момент отправки сообщения.
Скорее всего, в любом Callback нам нужен будет номер заказа (переменная @id_Reserve), при помощи которого мы сможем выгрузить детали заказа по его номеру.
____