DocuSign REST API - отправка конвертов от имени другого пользователя - PullRequest
1 голос
/ 14 января 2020

Я настраиваю веб-приложение, которое использует DocuSign для отправки запроса электронной подписи различным клиентам. Каждый запрос к другому клиенту должен иметь различное отображаемое имя отправителя и адрес электронной почты, а не только основное имя в учетной записи DocuSign. Заполненную электронную подписанную форму также необходимо отправить по электронной почте на указанные c адреса электронной почты клиента.

Я создал новый второй логин в своей учетной записи DocuSign в качестве теста и могу получить чтобы отобразить имя / адрес электронной почты этого логина, но только когда я сгенерирую совершенно новый временный демо-ключ API из этой учетной записи и использую его в приложении.

Я могу изменить ответное письмо, изменив поле EnvelopeDefinition.EmailSettings.ReplyEmailAddressOverride, но в электронном письме, отправленном подписывающим лицам, по-прежнему отображается имя основной учетной записи / электронная почта, а подписанные документы отправляются по электронной почте на основную электронную почту.

Как я могу изменить имя и адрес электронной почты, отправленные подписавшему, и адрес электронной почты, подписанный документами, полученные?

            string signerName = "John Doe";
            string signerEmail = "johndoe@fake.com";
            string accessToken = "{The DocuSign API KEY}";
            string accountId = "{The DocuSign Account Number}";

            Document document = new Document
            {
                DocumentBase64 = Convert.ToBase64String(ReadContent(docName)),
                Name = "Please Sign This Form",
                FileExtension = "docx",
                DocumentId = "1"
            };
            Document[] documents = new Document[] { document };

            Signer signer = new Signer
            {
                Email = signerEmail,
                Name = signerName,
                RecipientId = "1",
                RoutingOrder = "1"
            };

            Tabs tabs = new Tabs();

            SignHere signHereTab = new SignHere
            {
                DocumentId = "1",
                PageNumber = "1",
                AnchorString = "Patient Signature or Mark",
                AnchorUnits = "pixels",
                AnchorXOffset = "10",
                AnchorYOffset = "-18",
                Width = "160"
            };
            List<SignHere> signatureTabs = new List<SignHere>();
            signatureTabs.Add(signHereTab);
            tabs.SignHereTabs = signatureTabs;

            FullName nameTab = new FullName
            {
                DocumentId = "1",
                PageNumber = "1",
                TabLabel = "Full Name",
                Value = signerName,
                AnchorUnits = "pixels",
                AnchorString = "Name:",
                AnchorXOffset = "133",
                AnchorYOffset = "5"
            };
            List<FullName> nameTabs = new List<FullName>();
            nameTabs.Add(nameTab);
            tabs.FullNameTabs = nameTabs;

            signer.Tabs = tabs;

            Recipients recipients = new Recipients
            {
                Signers = new List<Signer> { signer }
            };
            EnvelopeDefinition envelopeDefinition = new EnvelopeDefinition
            {
                EmailSubject = "Please Sign Form",
                Documents = new List<Document>(documents),
                Recipients = recipients,
                Status = "sent"
            };

            //Override the reply email address
            envelopeDefinition.EmailSettings = new EmailSettings();
            envelopeDefinition.EmailSettings.ReplyEmailAddressOverride = "client-specific-email@fake.com";
            envelopeDefinition.EmailSettings.ReplyEmailNameOverride = "Test Account";

            ApiClient apiClient = new ApiClient(basePath);

            apiClient.Configuration.AddDefaultHeader("Authorization", "Bearer " + accessToken); 

            EnvelopesApi envelopesApi = new EnvelopesApi(apiClient.Configuration);
            EnvelopeSummary results = envelopesApi.CreateEnvelope(accountId, envelopeDefinition);

Ответы [ 2 ]

1 голос
/ 15 января 2020

Если ваше приложение хочет отправлять от имени вашей учетной записи DocuSign разных людей (пользователей), правильный ответ - impersonate, используя поток OAuth JWT. См. Примеры JWT, примеры кода eg-01 на github.com/docusign.

. Для каждого подражаемого пользователя вашему приложению потребуется руководство пользователя от DocuSign. Он доступен в разделе «Пользователи» инструмента администрирования.

Старый устаревший метод аутентификации не поддерживается для новых приложений.

0 голосов
/ 14 января 2020

Поскольку вы используете Token Generator в Центре разработчика https://developers.docusign.com/oauth-token-generator, на данный момент вы выбираете для входа на этот сайт другого пользователя, которого вы будете использовать sh, и этот токен будет предназначен для тот другой пользователь.

В долгосрочной перспективе я бы посоветовал вам изучить использование JWT Auth. У этого есть опция указания userId, и вы можете переключать пользователей. Вам также необходимо использовать настоящую аутентификацию, если вы все равно хотите переместить свое приложение из изолированной программной среды разработчика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...