1
votes

Comment obtenir une enveloppe complétée avec des crochets Web

Je souhaite utiliser le crochet Web DocuSign afin de pouvoir stocker les enveloppes terminées dans notre système de référentiel de documents interne. J'ai lu que l'approche préférée pour obtenir les documents consiste à utiliser l'enveloppeId renvoyée dans le message de crochet Web entrant et à utiliser l'API pour rechercher l'enveloppe et son contenu afin de garder le message entrant léger et de ne pas avoir à gérer tous les problèmes de fichiers volumineux.

Avec cette approche, je dois authentifier mon compte de service afin de rechercher l'enveloppe. Puisque je veux faire cela en tant que processus backend, je ne sais pas comment m'authentifier car il semble qu'avec toutes les approches d'authentification, une interaction de l'utilisateur est nécessaire pour permettre à l'application d'accéder à DocuSign.

Que me manque-t-il? Quelle est la meilleure option pour y parvenir? Dois-je simplement inclure le contenu de l'enveloppe dans le message entrant afin de ne pas avoir besoin de faire un autre appel pour le récupérer?


3 commentaires

Bienvenue dans SO, pour mieux obtenir de l'aide, pouvez-vous partager le code que vous avez essayé jusqu'à présent et montrer plus en détail ce qui ne fonctionne pas


Comment créez-vous une nouvelle enveloppe? J'espère que vous générez OAUTH Accesstoken en utilisant JWT pour l'utilisateur système, il en va de même ici


Bienvenue dans la communauté Scott. Lié à votre question d'authentification: afin d'éliminer l'utilisateur dans le processus d'authentification, vous devez utiliser l'octroi de support de jeton Web JSON (JWT). Plus d'informations Veuillez donner plus de contexte pour que nous puissions mieux vous aider.


5 Réponses :


0
votes

Bienvenue dans la communauté Scott.

Vous pouvez soit utiliser un appel API distinct pour récupérer le document, soit choisir d'inclure les PDF du document et / ou le certificat d'achèvement dans votre webhook. Les journaux Webhook incluent toujours toutes les données de l'enveloppe, y compris les valeurs de champ. Veuillez consulter ici pour plus d'informations. < / p>

Pour répondre à votre question relative à l'authentification, vous devez utiliser une intégration de services qui s'intègre directement à un compte DocuSign et n'authentifie pas chaque utilisateur final. En d'autres termes, une intégration sans utilisateur qui authentifie votre système de référentiel de documents et DocuSign. JSON Web Token Bearer Grant est la méthode d'authentification que vous voudrez peut-être examiner. Veuillez consulter ici pour plus d'informations.


1 commentaires

Merci! Cela ressemble exactement à ce dont j'ai besoin. Lors de la lecture de cette page sur JSON Web Token Bearer Grant, l'étape 1 consiste à obtenir le code d'accès qui nécessite l'authentification d'un utilisateur. Qu'est-ce que je rate?



0
votes

Votre question est excellente. Je suis d'accord avec la réponse de @ Payf1. Voici quelques informations supplémentaires.

Abonnement à votre webhook

Vous devez avoir un abonnement au système de webhook DocuSign pour que votre auditeur reçoive les notifications de webhook.

Option 1: configurez le système Connect au niveau du compte. Cela vous donnera un abonnement pour chaque enveloppe envoyée par n'importe quel utilisateur sur le compte, pour les enveloppes envoyées via Powerforms, via l'outil Web DocuSign et via l'API. Ignorez simplement les notifications entrantes pour les enveloppes qui ne vous intéressent pas. Ne les rejetez pas, reconnaissez-les, puis ignorez-les.

Option 2: pour chaque enveloppe pour laquelle vous souhaitez un abonnement au webhook, vous devez à la fois créer l'enveloppe à l'aide de l'API et inclure l'objet eventNotification dans les Envelopes :: create appelle.

Les notifications entrantes sont les mêmes pour les deux options.

Écouter et agir sur les notifications du webhook

Pour gérer correctement le flux entrant de notifications de webhook, la meilleure architecture consiste à placer chaque notification dans une file d'attente fiable, puis à accuser réception du message à DocuSign.

Des files d'attente fiables sont proposées par Azure Service Bus , AWS Simple Queue Service , Google Cloud Tasks et par de nombreuses bibliothèques de mise en file d'attente de logiciels sur site.

Ensuite, des processus de travail distincts peuvent traiter les messages de manière asynchrone.

Comme vous l'avez dit correctement, la recommandation du pro-tip est de ne pas inclure les documents dans les corps de notification.

Les processus de travail ont donc besoin d'un jeton d'accès DocuSign pour effectuer les appels API à DocuSign afin de récupérer les documents des enveloppes. Comme @ Payf1 l'a suggéré, le JWT Grant est souvent la bonne solution d'authentification. L'authentification Auth Code Grant peut également être utilisée si votre application utilise le jeton d'actualisation pour générer un jeton d'accès si nécessaire.

Exemples

Pour JWT Grant, consultez la série de code eg-01 exemples .


2 commentaires

Merci Larry. Je vais vous poser la même question que j'ai fait Payf1 ci-dessus. Tout ce que je lis dans la documentation ou dans le code eg-01 semble que je dois d'abord obtenir le consentement de l'utilisateur afin d'obtenir le code d'accès pour générer un jeton d'accès. Ma compréhension est-elle correcte? Est-ce que je manque quelque chose?


Les jetons d'accès (et les problèmes de consentement associés) sont complètement différents des problèmes de webhook. Voir la réponse d'Amit à votre question pour en savoir plus.



0
votes

Vous mélangez deux choses, l'une est Webhook qui n'a pas besoin de JWT AccessToken, car il s'agit simplement d'un appel de service POST à ​​votre auditeur depuis DocuSign dès que vos événements déclencheurs souscrits se produisent dans le cycle de vie d'une enveloppe. Vous avez besoin d'AccessToken généré par JWT pour appeler n'importe quel service d'API DS. Obtention du consentement expliquera comment obtenir le consentement pour générer AccessToken utilisant JWT. Si tous vos utilisateurs du compte DS ont la même adresse e-mail professionnelle et que vous pouvez revendiquer ce domaine de messagerie d'entreprise dans DS en mettant à jour un jeton TXT dans le DNS de cette messagerie d'entreprise, vous pouvez utiliser le consentement de l'administrateur. Pour utiliser le consentement de l'administrateur, vous devez également vérifier auprès de votre responsable de compte DS si vos plans d'abonnement vous permettent ou non d'utiliser la fonctionnalité Organisation dans DS. Mais si vous ne disposez pas d'un plan d'abonnement approprié ou si vous ne pouvez pas revendiquer le domaine de messagerie dans DocuSign, vous devez obtenir explicitement le consentement de l'utilisateur avant de générer un jeton d'accès pour cet utilisateur.


0 commentaires

0
votes

Désolé pour la confusion. Je pose spécifiquement des questions sur l’authentification JWT. Ce que j’aimerais faire, c’est uniquement recevoir l’identifiant de l’enveloppe de l’appel de crochet Web entrant. Utilisez ensuite l'API DocuSign pour rechercher les documents signés.

Lorsque j'utilise cette approche avec JWT, je crois comprendre que j'ai besoin d'un «code d'accès». Je pense avoir trouvé une pièce manquante au puzzle, car je devais activer l’administration de l’organisation dans mon compte. J'ai fait cela et autorisé mon application avec le "champ d'application du contenu administrateur" à "étendu". Je souhaite traiter le document signé avec un processus backend. Je crois comprendre que pour obtenir le code d'accès, je dois faire cette demande via un navigateur. Mais il n'y a pas de navigateur avec lequel un utilisateur peut interagir. C'est donc là que je suis coincé. Comment obtenir le code d'accès et / ou un jeton d'accès pour un processus back-end afin de faire cet appel API?


1 commentaires

N'ajoutez des réponses que comme réponse. Veuillez poser une nouvelle question et supprimer vos «réponses» qui sont vraiment de nouvelles questions ou des informations supplémentaires à la question actuelle. Merci.



1
votes

Ok, donc j'ai finalement tout fait fonctionner. Tout ce que Payf1, Amit et Larry mentionnent est correct et contient de bonnes références aux pièces de ce puzzle. Voici les étapes que j'ai suivies pour configurer JWT afin d'utiliser l'API DocuSign sans obtenir le consentement de l'utilisateur (appelé Consentement administrateur pour les applications internes. Il existe un ensemble document à ce sujet).

  1. Dans le portail d'administration, ajoutez votre application (Intégrations> Api / Clés> Ajouter une application / clé). Une fois enregistré, cliquez sur Modifier et créez une paire de clés RSA. Copiez le texte de la clé privée et ajoutez-le à un fichier texte dans votre application.
  2. Activez "Administration de l'organisation" sur votre compte en contactant votre responsable de compte DocuSign (cela peut entraîner des frais).
  3. Connectez-vous à votre compte, accédez à Administration de l'organisation> Applications. Autorisez votre application avec les autorisations "signature d'emprunt d'identité".
  4. Toujours dans l'administration de l'organisation, cliquez sur Domaine> Revendiquer le domaine. Entrez votre domaine et suivez les instructions pour l'ajouter à votre DNS à l'aide de ce document
  5. Une fois le domaine entièrement configuré et vérifié, dans Administration de l'organisation, accédez à Utilisateurs. Recherchez l'utilisateur ou le compte de service dont vous souhaitez emprunter l'identité. Cliquez sur son nom pour ouvrir son profil. Cliquez sur Applications> Autoriser les applications> Sélectionnez votre application. Saisissez les autorisations "signature d'emprunt d'identité".
  6. Dans votre application, utilisez ce code pour obtenir le jeton d'autorisation. Le User_id est le guide de l'utilisateur auquel vous avez accordé l'accès à l'étape 5 (trouvé dans sa page de profil).

    octet [] privateKeyBytes = System.Text.Encoding.UTF8.GetBytes (File.ReadAllText (privateKeyFullPath));

    _ApiClient.Configuration.AddDefaultHeader("Authorization", "Bearer " + _AccessToken.access_token);
    EnvelopesApi envelopesApi = new EnvelopesApi(_ApiClient.Configuration);
    EnvelopeDocumentsResult docList = envelopesApi.ListDocuments(accountId, envelopeId);
    

Pour mon application, je souhaite simplement renvoyer l'enveloppe lorsque je reçois l'ID d'enveloppe du crochet Web DocuSign:

List<string> scope = new List<string>();
scope.Add(OAuth.Scope_SIGNATURE);
scope.Add(OAuth.Scope_IMPERSONATION);

OAuthToken _AccessToken = _ApiClient.RequestJWTUserToken(client_id, user_id, OAuth.Demo_OAuth_BasePath, privateKeyBytes, 4, scope);


0 commentaires