DocuSign Connect — DocuSignからWebhookを受け取って何か処理をしてみる
DocuSignで送信した文書が相手が開いたどうかをSlackで確認したい、また相手方の署名が完了したら、送信側の契約管理システムのステータスを「完了」に変えて文書も保存したい、といったニーズがよくあります。DocuSign Connectを使うと、いわゆるWebhookのように、送信や署名といったイベント発生ごとにメッセージを特定のURLで受信し、Slackに通知したり、社内システムのステータスを変えたりすることができます。
本ブログの後半では、GoogleスプレッドシートとGoogleドライブとGoogle Apps Script(GAS)を使った開発例をご紹介します。
(注) 本ブログでは、有償オプションでご利用できる機能の紹介も含まれています。実際にご利用されている環境で、紹介している機能をご利用できない場合は、右上のお問い合わせよりご連絡ください。
DocuSign Connectについて
DocuSign Connectは下記のような特徴を持っています。
- 指定のURLに対して、HTTPS(TLS)でメッセージ送信
契約書などの重要情報を扱うため、DocuSignからの送信先URLには、”https://”で始まるURLが必須になっています。送信先がクラウド上にあるサーバではなく、オンプレミス/社内イントラネットにあるような場合は、https対応のリバースプロキシをサーバの手前に配置するような考慮が必要です。 - 11種類のイベント発生時に、メッセージを送信
エンベロープに関連するイベントで5種類、受信者に関連するイベントで6種類のイベントで、メッセージを送信するかどうか、設定可能です。例えば、「開封」と「署名/完了」イベント以外でメッセージを受けると、処理が煩雑になる、という場合は、管理画面から不要イベントのチェックを外して下さい。 - 送信するメッセージに含まれる情報を選択可能
やり取りされる文書PDFやDocuSign完了証明書といったバイナリ情報(base64化されている)や、その文書の中に設定されているフィールドなど、6種類のデータをConnectメッセージに含めるかどうか設定可能です。 - 事前定義済みのConnect設定と、カスタムのConnect設定
独自に”https://”で指定したURLに送信する「カスタム設定」以外に、DocuSignでは、BoxやOne Drive、Salesforce、Dynamicsなど事前定義されたConnectの設定があります。Salesforceについては、別途ライセンスの購入が必要ですが、Connectの設定だけではなく、Salesforce側のプログラムも予め導入されているので、プログラム開発は不要になっています。 - メッセージフォーマット
現時点では、独自の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を使うことがおすすめです。