Nano Hash - криптовалюты, майнинг, программирование

Как я могу настроить веб-ловушку для проверки статуса DocuSign Envelope?

У меня есть написанный код, который использует конверты для запроса подписи у клиента, как в этом руководстве:

https://www.docusign.com/developer-center/recipes/request-a-signature-via-email-using-a-template.

Мой вопрос: как я могу определить URL-адрес веб-перехватчика, который можно использовать для обновления статуса конверта? Я хотел бы получить уведомление и иметь возможность обновлять статус конверта в моей базе данных после того, как клиент подпишет документы. Это возможно?

Предоставляет ли класс EnvelopeDefinition какое-то свойство, которое позволяет мне определять URL-адрес веб-перехватчика?

16.05.2016

Ответы:


1

Обновлено

Теперь у нас есть новая серия рекомендуемых примеров кода WebHook, в которых используются бессерверные функции и облачные надежные службы очередей. Этот пример позволяет вам получать и обрабатывать уведомления веб-перехватчика DocuSign внутри вашего брандмауэра без никаких изменений в вашем файловом экране.

Примеры теперь доступны для Node. Пишутся примеры для C #, Java, PHP и Python.

Документирован формат XML-сообщений веб-перехватчика.

Примечание. Руководство по подключению (дата за март 2016 г. на стр. 2) устарело и во многих случаях неверно. Готовится новое руководство. Это руководство полезно для информации о формате XML.

Доступен файл WSDL, включая формат сообщений уведомлений, .

Чтобы просмотреть возвращаемые сообщения XML, вот образец уведомления для заполненного конверта:

<?xml version="1.0" encoding="utf-8"?>
<DocuSignEnvelopeInformation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.docusign.net/API/3.0">
<EnvelopeStatus>
    <RecipientStatuses>
    <RecipientStatus>
        <Type>Signer</Type>
        <Email>[email protected]</Email>
        <UserName>Signer's name</UserName>
        <RoutingOrder>1</RoutingOrder>
        <Sent>2020-05-23T12:43:07.22</Sent>
        <Delivered>2020-05-23T12:43:14.767</Delivered>
        <Signed>2020-05-23T12:43:18.22</Signed>
        <DeclineReason xsi:nil="true"/>
        <Status>Completed</Status>
        <RecipientIPAddress>141.226.182.70</RecipientIPAddress>
        <ClientUserId>1000</ClientUserId>
        <CustomFields/>
        <TabStatuses>
        <TabStatus>
            <TabType>SignHere</TabType>
            <Status>Signed</Status>
            <XPosition>427</XPosition>
            <YPosition>531</YPosition>
            <TabLabel>Sign Here</TabLabel>
            <TabName>SignHere</TabName>
            <TabValue/>
            <DocumentID>1</DocumentID>
            <PageNumber>1</PageNumber>
        </TabStatus>
        </TabStatuses>
        <AccountStatus>Active</AccountStatus>
        <RecipientId>56e11847-da17-43c3-95f6-d4b675af8621</RecipientId>
    </RecipientStatus>
    </RecipientStatuses>
    <TimeGenerated>2020-05-23T12:43:38.7282968</TimeGenerated>
    <EnvelopeID>cd67ff4a-6cb1-42f3-87d3-f7c149031549</EnvelopeID>
    <Subject>Please sign the attached document</Subject>
    <UserName>Larry Kluger</UserName>
    <Email>[email protected]</Email>
    <Status>Completed</Status>
    <Created>2020-05-23T12:43:06.753</Created>
    <Sent>2020-05-23T12:43:07.253</Sent>
    <Delivered>2020-05-23T12:43:14.83</Delivered>
    <Signed>2020-05-23T12:43:18.22</Signed>
    <Completed>2020-05-23T12:43:18.22</Completed>
    <ACStatus>Original</ACStatus>
    <ACStatusDate>2020-05-23T12:43:06.753</ACStatusDate>
    <ACHolder>Larry Kluger</ACHolder>
    <ACHolderEmail>[email protected]</ACHolderEmail>
    <ACHolderLocation>DocuSign</ACHolderLocation>
    <SigningLocation>Online</SigningLocation>
    <SenderIPAddress>208.113.165.37 </SenderIPAddress>
    <EnvelopePDFHash/>
    <CustomFields>
    <CustomField>
        <Name>Team</Name>
        <Show>True</Show>
        <Required>False</Required>
        <Value/>
    </CustomField>
    <CustomField>
        <Name>Office</Name>
        <Show>True</Show>
        <Required>False</Required>
        <Value/>
    </CustomField>
    <CustomField>
        <Name>Order ID</Name>
        <Show>True</Show>
        <Required>False</Required>
        <Value/>
    </CustomField>
    <CustomField>
        <Name>AccountId</Name>
        <Show>false</Show>
        <Required>false</Required>
        <Value>4197223</Value>
        <CustomFieldType>Text</CustomFieldType>
    </CustomField>
    <CustomField>
        <Name>AccountName</Name>
        <Show>false</Show>
        <Required>false</Required>
        <Value>World Wide Corp</Value>
        <CustomFieldType>Text</CustomFieldType>
    </CustomField>
    <CustomField>
        <Name>AccountSite</Name>
        <Show>false</Show>
        <Required>false</Required>
        <Value>demo</Value>
        <CustomFieldType>Text</CustomFieldType>
    </CustomField>
    </CustomFields>
    <AutoNavigation>true</AutoNavigation>
    <EnvelopeIdStamping>true</EnvelopeIdStamping>
    <AuthoritativeCopy>false</AuthoritativeCopy>
    <DocumentStatuses>
    <DocumentStatus>
        <ID>1</ID>
        <Name>Example document</Name>
        <TemplateName/>
        <Sequence>1</Sequence>
    </DocumentStatus>
    </DocumentStatuses>
</EnvelopeStatus>
<TimeZone>Pacific Standard Time</TimeZone>
<TimeZoneOffset>-7</TimeZoneOffset>
</DocuSignEnvelopeInformation>
17.05.2016
  • Это здорово, но я вижу, что он возвращает какой-то XML. Есть ли место, где я могу увидеть, как выглядит этот XML? Трудно написать метод для обработки этого, если я не вижу, что будет опубликовано в моем методе веб-перехвата ... 18.05.2016
  • См. Мой измененный ответ 18.05.2016
  • @LarryK Ссылка разорвана ... Я всюду искал эту схему XML. 16.02.2018
  • @DanBeaulieu Я обновил ссылку и добавил ссылку WSDL. 17.02.2018
  • Итак, я подумал, что искал схему XML для создания объекта Class для получения данных. Оказывается, мне нужно было извлечь информацию о конверте из HttpRequestMessage. Вот пример кода: github.com / docusign / recipe-010-webhook-csharp / blob / master / 18.02.2018
  • Эти образцы 404 сейчас 23.05.2020
  • @MrZander - Спасибо за комментарий. См. Обновленный ответ с примером XML. 23.05.2020

  • 2

    Это можно сделать двумя способами.

    Один из них - настроить конфигурацию подключения для всей учетной записи в DS WebApp, это будет отправлять запрошенные уведомления о событиях в каждом конверте, отправленном / заполненном по URL-адресу: https://www.docusign.com.au/sites/default/files/connect-guide_0.pdf#page=5

    Вы также можете определить это для каждого конверта с помощью параметра eventNotification. Однако этот параметр не встроен в предоставленные рецепты. РЕДАКТИРОВАТЬ: я исправлюсь, см. ответ Ларри ниже https://www.docusign.com.au/p/RESTAPIGuide/Content/REST%20API%20References/Send%20an%20Envelope.htm

    16.05.2016

    3

    Еще один способ проверить ваш «Слушатель» - получить ответ DocuSign XML с помощью

    https://webhook.site

    Оттуда вы увидите запрос POST с полным текстом XML для вашего конверта.

    ПРОВЕРЬТЕ СОЗДАНИЕ КОНВЕРТА В первую очередь

    Прежде чем тестировать свой Listener, я хотел убедиться, что мой код C # запускает WebHook (через EnvelopeDefinition.EventNotification) в DocuSign Envelope.

    EnvelopeDefinition.EventNotification устанавливает 2 списка объектов для EnvelopeEvent и RecipientEvents. Правильная их настройка приведет к срабатыванию триггера в DocuSign Connect (Webhook).

    Все, что требовалось, это установить EventNotification.Url = настраиваемый URL-адрес, созданный для меня на https://webhook.site

    Я локально запустил свой код API C #, чтобы создать конверт DocuSign, который запускал бы Webhook. Затем я использовал электронное письмо DocuSign (полученное через несколько секунд после создания конверта), чтобы подписать документ, что снова запустило Webhook для моего тестового слушателя.

    ПОЛУЧИТЬ XML. Мой правильно настроенный код запустил событие POST DocuSign Connect (Webhook). Я могу увидеть запрос POST (и его тело XML) по своему настраиваемому URL-адресу по адресу https://webhook.site

    ПОВТОРНО ОТПРАВИТЬ XML. Наконец, скопируйте XML-запрос POST, отправленный из DocuSign, и вставьте этот XML-код в PostMan. Затем я могу локально использовать PostMan для «повторной отправки» этого запроса POST (и тела XML) для тестирования разрабатываемого мной локального API прослушивателя.

    28.02.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..