DocuSign Connect — DocuSignからWebhookを受け取って何か処理をしてみる

Masaki Kubomura
DocuSignDevJP
Published in
7 min readJul 5, 2018

DocuSignで送信した文書が相手が開いたどうかをSlackで確認したい、また相手方の署名が完了したら、送信側の契約管理システムのステータスを「完了」に変えて文書も保存したい、といったニーズがよくあります。DocuSign Connectを使うと、いわゆるWebhookのように、送信や署名といったイベント発生ごとにメッセージを特定のURLで受信し、Slackに通知したり、社内システムのステータスを変えたりすることができます。

本ブログの後半では、GoogleスプレッドシートとGoogleドライブとGoogle Apps Script(GAS)を使った開発例をご紹介します。

(注) 本ブログでは、有償オプションでご利用できる機能の紹介も含まれています。実際にご利用されている環境で、紹介している機能をご利用できない場合は、右上のお問い合わせよりご連絡ください。

DocuSign Connectについて

DocuSign Connectは下記のような特徴を持っています。

  1. 指定のURLに対して、HTTPS(TLS)でメッセージ送信
    契約書などの重要情報を扱うため、DocuSignからの送信先URLには、”https://”で始まるURLが必須になっています。送信先がクラウド上にあるサーバではなく、オンプレミス/社内イントラネットにあるような場合は、https対応のリバースプロキシをサーバの手前に配置するような考慮が必要です。
  2. 11種類のイベント発生時に、メッセージを送信
    エンベロープに関連するイベントで5種類、受信者に関連するイベントで6種類のイベントで、メッセージを送信するかどうか、設定可能です。例えば、「開封」と「署名/完了」イベント以外でメッセージを受けると、処理が煩雑になる、という場合は、管理画面から不要イベントのチェックを外して下さい。
  3. 送信するメッセージに含まれる情報を選択可能
    やり取りされる文書PDFやDocuSign完了証明書といったバイナリ情報(base64化されている)や、その文書の中に設定されているフィールドなど、6種類のデータをConnectメッセージに含めるかどうか設定可能です。
  4. 事前定義済みのConnect設定と、カスタムのConnect設定
    独自に”https://”で指定したURLに送信する「カスタム設定」以外に、DocuSignでは、BoxやOne Drive、Salesforce、Dynamicsなど事前定義されたConnectの設定があります。Salesforceについては、別途ライセンスの購入が必要ですが、Connectの設定だけではなく、Salesforce側のプログラムも予め導入されているので、プログラム開発は不要になっています。
  5. メッセージフォーマット
    現時点では、独自のXML形式になっています。サンプルのメッセージについては、下記のドキュメントを参照して下さい。
    DocuSign Connect Service Guide(英語)
    https://www.docusign.com/supportdocs/pdf/connect-guide.pdf

Google Apps Script(GAS)でConnectメッセージを受け、スプレッドシートにログを記入し、ドライブに文書を保管してみる

Qiitaの下記の記事を参考に、DocuSign ConnectのメッセージをGoogle Apps Scriptで処理し、Google スプレッドシートに受信ログを追記し、署名完了した文書をスプレッドシートが置いてあるGoogleドライブのフォルダに格納してみます。

参考) Google Spreadsheet を簡易 Webサーバーとして動かして、手軽にWebHookを受け取る方法

注意点) 会社で契約されているG Suiteの場合、スプレッドシートのURLを一般公開できないよう設定されている場合があります。また、下記方法は、GoogleやDocuSignで性能保証・推奨している方法ではありませんので、その点ご了承下さい。

1. Google スプレッドシートを作成

空白のスプレッドシートを作成します。名前は今回「DocuSign Connect Test」としています。

2. スクリプトエディタを起動

ツールメニューから、スクリプトエディタを起動します。

3. doPost()関数を記述

DocuSign Connectから、XMLメッセージがPOSTリクエストで送られてくるため、doPost()関数をエディタに記述します。

4. ウェブアプリケーションとして公開

公開メニューから、作成したプロジェクトをウェブアプリケーションとして導入を選び、公開します。アクセスできるユーザーは、「全員(匿名ユーザーを含む)を選択して下さい。

更に承認を求められるため、許可を確認ボタンを押し、スコープに許可を行います。URLが表示されるので、これをコピーしておきます。

5. DocuSign管理画面で、Connectの設定を追加

DocuSignにログインし、管理画面を開きます。DocuSign Connectのメニューをクリックし、カスタムのConnect設定を追加します。今回、送信するデータやトリガーイベントにはすべてチェックを入れています。
また、関連付けするユーザーは全員にしていますが、除外したいユーザーがいる場合は、設定を変更してみて下さい。

6. DocuSignで送信して、スプレッドシートに追記され、ドライブにPDFが格納されるかを確認

エンベロープを送信し、受信、サインといった状況がログ的にスプレッドシートに出力されていれば、問題ありません。また、スプレッドシートがあるGoogleドライブに、完了PDFファイルも出力されていることを確認して下さい。

まとめ:DocuSign Connect

今回は、Google Apps Scriptを使い、スプレッドシートやGoogleドライブにログやPDFを吐き出すことを行いましたが、その開発するプログラム次第で、Slackに連携したり、クラウドではない社内ファイルサーバに署名済みPDFファイルを出力したり、用途は様々に考えられます。

ConnectというWebhookを使わず、サーバーからAPIを定期的に呼び出すアーキテクチャも可能ですが、APIの呼出回数制限も考慮が必要ですので、ネットワーク的に穴を開けることが可能であれば、DocuSign Connectを使うことがおすすめです。

--

--