Virtual Agentの初期設定および基本的な使い方
はじめに
みなさんこんにちは、三井情報株式会社です。
今回はVirtual Agentの初期設定および基本的な使い方についてご紹介致します。
設定方法
- プラグインのアクティブ化
プラグインよりGlide Virtual Agentをインストールすることで利用可能です。
※Virtual Agentの利用にはITSM ProfessionalまたはEnterpriseライセンスが必要です。
- 挨拶の設定
始めにサービスポータル上でVirtual Agentを開いた時の挨拶の文章を編集します。
フィルタナビゲータに「sys_properties.list」と記入しEnterキーを押下します。
システムプロパティが開くので「新規」を押下します。
新規レコードを以下のように設定し、「送信」を押下します。
名前:com.glide.cs.general.welcome_message
説明:Welcome Message
タイプ:文字列(自動入力)
値:こんにちは!
もう一つ新規レコードを以下のように設定して、「送信」を押下します。
名前:com.glide.cs.general.top_selection_message
説明:Top selection message
タイプ:文字列(自動入力)
値:何かお困りでしょうか?
ここで設定した値がサービスポータルでチャットボットを開いた時に最初に表示されるメッセージになります。
- 自社カスタムおよびチャットメニュー
フィルタナビゲータにて「Conversational Interfaces」で検索し、「自社カスタム設定およびチャットメニュー」を選択し、リストから「Default Branding」を選択します。
ここではチャットボットの画面のヘッダーやロゴ、背景色などが変更できます。
試しに以下のヘッダーの文章とその背景色を変更します。
チャットヘッダー:Now Support → チャットボット
チャットヘッダーバックグラウンド:#4E7D88 → #FF7315
サービスポータル側で変更が確認できます。
- 仮想エージェントデザイナー(Virtual Agent Designer)
ここからVirtual Agentでの会話のやりとり(以下、フロー)を作成していきます。
フィルタナビゲータから「仮想エージェント」で検索し、Conversational Interfaces配下にある「仮想エージェント>デザイナー」を選択してデザイナーのページを開きます。「+作成」を押下して新規作成します。
「+作成」を押下すると「トピックのプロパティ」のページが表示されるため、名前、説明、タイプ:「トピック」、キーワードを設定し、「作成」を押下します。
※プロパティは後からでも編集可能です。
「i記号」を押下するとそれぞれの機能の使い方のヒントが確認できます。
左側のコンポーネントをドラッグアンドドロップで開始と終了の間に持ってくることでフローの中に追加することが可能です。コンポーネントには以下の3種類があります。
・ユーザー入力:Virtual Agent上でユーザーが入力する。青色アイコン。
・ボット応答:Virtual Agentが自動で回答する。橙色アイコン。
・ユーティリティ:フローの分岐やスクリプトなどの設定が可能。黒色アイコン。
テキストコンポーネントをドラッグアンドドロップで追加し、このコンポーネントの基本情報を設定します。アスタリスクが付いている項目は必ず設定する必要があります。
・名前:設定すると自動で下の変数名が設定されます。名前に入力された文字が英語でない場合、変数名は「__」となります。
・テキスト入力形式:デフォルトの「テキスト」以外にメールやURLなども設定可能です。
・プロンプト:チャットボット上でユーザーから見える文章になります。
入力が完了したら右上の「保存」を押下して「テスト」を押下し、動作確認します。
「ここに回答を入力してください」にカーソルを当てて回答を入力し、Enterキーまたは右向きの三角ボタンを押下して送信します。
「-------」のような点線が表示されたら、フローが終了した合図です。
橙色は自動応答です。以下のように設定してテストしてみます。
名前:wait a moment
応答メッセージ:少々お待ちください。
「保存」して「テスト」を押下して確認します。
ユーザー入力の「静的選択」とユーティリティの「決定」を用いて分岐を設定します。
静的選択では「はい」「いいえ」を設定し、決定では「+」を押下して矢印を増やし、矢印をクリックして分岐条件を設定します。
「保存」して「テスト」して分岐していることを確認します。
全てのコンポーネントを紹介しきれないため、ここでは割愛させていただきます。
おわりに
今回はVirtual Agentの基本的な使い方をご紹介させていただきました。
最後まで読んでいただき、ありがとうございました。
三井情報株式会社
ソリューション技術本部
クラウドソリューション部
第四技術室
下村光輝
Rome検証①リンクの展開
はじめに
みなさんこんにちは、三井情報株式会社です。
今回から、昨年10月にリリースされたNow Platformの最新版「Rome」についてご紹介していきます。特に、VirtualAgentの新機能について特集します。
VirtualAgentとは?
人工知能を活用した会話形式のチャットボットです。情報を取得したり、意思決定を行ったり、一般的な作業の実行を支援します。最大のメリットは、昼夜を問わずすぐにチャットボットの支援を受けられる点です。
今回は、VirtualAgentで「リンク」コンポーネントを使用すると、リンク先の画像や動画のプレビューが表示されることを検証しました。
リンクの展開(プレビュー)
RomeバージョンからVirtualAgentでリンクコンポーネントを使用するとプレビューが表示されるようになりました。ここではその設定方法を記載します。
「ホスト名許可リスト」にホスト名やドメイン名を追加
①フィルターナビゲーターで「sys_cs_hostname_allow.list」と検索し、「新規」を押下。
※既にインスタンスやServiceNow HP、YouTubeの5件は設定されています。
②プレビューしたいリンクのホスト名かドメイン名のレコードを新規作成する。
仮想エージェントデザイナーに移動し、トピックを作成
①仮想エージェント>デザイナー を開き、トピックを選択または新規作成する
②トピックを開き、コンポーネントのボット応答から「リンク」をノードに追加する
③応答プロパティで各項目を設定する
④項目の設定が完了したら公開し、サービスポータルで確認
⑤プレビューが表示されました!
※YouTubeのような動画のリンクではチャットボットのウィンドウ内で再生・一時停止などの操作が可能です。
注意事項
利用する上で注意が必要な点をこちらにまとめています。
- プレビューが表示できるのはドメイン名が「.com」のリンクのみです。
- リンク先ページにHTMLのOGタグが設定されている必要があり、VirtualAgentでは画像・ビデオ・テキストのみ対応しています。
- YouTube動画の埋め込み部分では、日本語やハイフンなどの特殊文字は文字化けします。
※ServiceNow UIページにOGタグをつける方法やリンクの展開(プレビュー)を無効化する方法は公式ドキュメントをご参照ください。
おわりに
いかがでしたでしょうか。プレビューが表示されることによりユーザーの興味や関心を惹きやすくなるので、研修の動画やナレッジなど閲覧させたいものに目を通してもらいやすくなります。また、動画についてはチャットボットのウィンドウ内で閲覧が可能なため、迅速に次の会話につなげることができます。ぜひ利用してみてください。
三井情報株式会社
ソリューション技術本部
クラウドソリューション部
第四技術室
野口 唯
REST APIを使用してDocuSignの申請データを作成
はじめに
みなさんこんにちは、三井情報株式会社です。
DocuSign連携シリーズ第二弾としてREST APIを使用してDocuSignの申請データ(エンベロープ)を作成する方法をご紹介します。
前回ご紹介した方法では申請直後のみの連携でしたが、今回ご紹介するRESTメッセージを活用するとフローの好きなタイミングでエンベロープが作成できるようになります。
ServiceNow上で最終承認まで下りた後に正式な電子署名ドキュメントを作成したい、という時に活用できると考えています。
また認証設定をしたり、REST APIを呼び出したりと汎用性のある実装方法なので是非目を通していただけたらと思います。
~DocuSign連携シリーズ~
①カタログアイテムからDocuSignへ遷移
➁REST APIを使用してDocuSignの申請データを作成 ←今回
③DocuSignでのフローの進行状況を取得
連携時の動き
今回ご紹介する連携時の動作は以下のとおりです。
1. ServiceNowでワークフローを承認。
2. DocuSignのREST API(Create an Envelope)を呼び出し、申請内容をもとにエンベロープを作成する
3. DocuSignから承認者へ依頼メールが送信される。承認作業はDocuSign上で行う。
使用する機能
今回使用する機能は以下です。
図中の番号順に設定方法を解説します。
①テンプレート(DocuSign)
DocuSignでテンプレートを事前に作成し、テンプレートIDを控えておきます。
詳しい作成方法はこちらのDocuSign eSignatureユーザーガイドを参照してください。
作成する際には [受信者情報]に必ず申請者と承認者欄を作成してください。
[役割名]は必須、[名前]と[メール]はREST APIから取得する場合は空白で構いません。
➁アプリとインテグレーションキーの作成(DocuSign)
ServiceNowとの認証設定を行います。
【操作方法】
1. DocuSign eSignature[設定]タブで[アプリとキー]>>[アプリ/インテグレーションキーの追加] >>アプリ名を入力>>アプリの作成 の順にクリックします。
2. 各項目を以下のように入力します。
※ServiceNowのアプリケーションレジストリの設定については「③認証設定」で解説します。
【画面イメージ】
③認証設定(Servicenow)
アプリケーションレジストリ
DocuSignとの認証設定を行います。
【操作方法】
1. システムOauth>>アプリケーションレジストリ>>新規>>サードパーティ OAuth プロバイダーに接続します をクリックし、新規作成画面を起動します。
2. 各項目を以下のように入力します。
【画面イメージ】
アクセス制御(ACL)
OOTBではアプリケーションレジストリを登録したユーザ以外はトークンを使用できません。
そのためACLを追加することで全ユーザが今回登録したトークンを使用できるように設定します。
【操作方法】
1. ログインユーザのロールを昇格(security_adminを一時的に付与)します。
2. システムセキュリティ>>アクセス制御(ACL)>>新規 をクリックし、新規作成画面を起動します。
3. 各項目を以下のように入力します。
Oauth資格情報[oauth_credential]
【画面イメージ】
Oauth資格情報[oauth_credential] - トークン
【画面イメージ】
④REST APIの設定(ServiceNow)
RESTメッセージ(親)
DocuSignのREST API(Envelopes:Create)のリクエストを作成します。
【操作方法】
1. システムWebサービス>>RESTメッセージ の順にクリックし、新規作成画面を起動する。
2. 各項目を以下のように入力します。
【画面イメージ】
3. 画面上部で右クリック>>保存 をクリックし、画面中央部の関連リンク-Oauthトークンの取得 をクリックします。
RESTメッセージ(子)
リクエスト本文を作成していきます。
【操作方法】
1. システムWebサービス>>RESTメッセージ>>RESTメッセージ関数>>新規 の順にクリックし、新規作成画面を起動します。
2. 各項目を以下のように入力します。
【画面イメージ】
[HTTP要求-コンテンツ]にリクエストボディをJSON形式で記載してきます。
詳しくはDouSignのAPI Referenceを参照してください。
{ "status": "sent", ※1 "templateId": “XXXXXXXXX", "templateRoles": [ ※2 { “roleName”: “●●●", "email": "${email_1}", "name": "${name_1}", "routingOrder": "1" }, { “roleName”: “▲▲▲", "email": "${email_2}", "name": "${name_2}", "routingOrder": "2" }, { “roleName”: “■■■", "email": "${email_3}", "name": "${name_3}", "routingOrder": "3" } ] }
※1. status:createdまたはsentを指定する。createdはエンベロープを下書き保存するステータスのため、エンベロープ作成直後に承認依頼を出したい今回はsentとする。
※2. templateRoles:テンプレートで設定している受信者情報を指定する。受信者の数だけ記載する。サンプルスクリプトは受信者3名のケース。
・roleName:テンプレートの受信者の役割を指定。
・email:受信者の「メール」を指定。ServiceNowの申請画面で指定した値を指定する場合は、変数とするため${email_1}といった書き方をする。今回は変数にセットする値はFlow Designerで指定する。
・name:受信者の「名前」を指定。Emailと同じく変数としたい場合は${name_1}といった書き方をする。
・routingOrder:受信者のルーティング順序を指定する。
⑤ワークフローエディタ
ワークフローから④で作成したRESTメッセージを呼び出します。
【操作方法】
1. ワークフロー>>ワークフローエディタ をクリックします。
2. 右上の「新規ワークフロー」ボタンを押下して、フローを作成します。
作成方法は公式ドキュメントを参照してください。
3. REST APIを呼び出したいノードに「スクリプトを実行」アクティビティを配置します。
4. 以下のようにスクリプトを記載します。
var requestBody; var responseBody; var status; var sm; try{ sm = new sn_ws.RESTMessageV2("docusign", "Envelopes_create"); ※1 sm.setStringParameterNoEscape(email_1 ', currentEmail); ※2 sm.setStringParameterNoEscape(name_1 ', currentName); ※2 var response = sm.execute(); responseBody1 = response.haveError() ? response.getErrorMessage() : response.getBody(); } catch(ex) { responseBody2 = ex.getMessage(); status = '500'; } finally { requestBody = sm ? sm.getRequestBody():null; }
<スクリプトの補足>
※1. RESTMessageV2(“name", "methodName")
name :RESTメッセージ(親)の名前
methodName :RESTメッセージ(子)の名前
※2. setStringParameterNoEscape (“name", “value")
name :RESTメッセージのコンテンツ内に定義した変数名
value :変数に割り当てる値
設定は以上です。
キャプチャのようにフローを作成すると、申請→承認が完了するとDocuSign上にエンベロープが作成されます。
おわりに
いかがでしたでしょうか。
フローを作成するまでの事前設定が複数あるので難しく感じますが、特に認証設定は一度設定するだけで完了する便利な機能です。
興味のある方はぜひ試してみてください。
最後まで読んでいただき、ありがとうございました。
三井情報株式会社
ソリューション技術本部
クラウドソリューション部
第四技術室
佐久間 衣歩
www.mki.co.jp
ServiceNowにWebhookでデータ連携
はじめに
みなさんこんにちは、三井情報株式会社です。
ServiceNowにWebhookでデータ連携する際の機能について紹介したいと思います。
Webhookに関しては、以前「HMAC-SHA256を利用したwebhookメッセージの検証方法」というタイトルで投稿しているため、気になる方はご確認ください。
Script REST APIs
今回紹介させていただく機能はServiceNowにてAPIを作成するための機能です。
ServiceNow Docs 「Scripted REST APIs」:
https://docs.servicenow.com/bundle/rome-application-development/page/integrate/custom-web-services/concept/c_CustomWebServices.html
Scripted REST APIsを使い、他のシステムからデータ受信し、ServiceNowのテーブルにレコードを作成する検証を実施しました。本題に入る前に、ご存知の方が多いと思いますが、簡単にAPIやRESTAPIについて記載します。
APIとは?
・Application Programming Interfaceの略
・ソフトウェアやプログラム、Webサービスの間をつなぐインターフェースのこと
Script REST APIs 設定項目
System Web Service > Scripted Web Services > Scripted REST APIs > New
Name:APIの名前
API ID:サービスのIDを設定
入力後Submitすると下記のような画面に遷移します。先ほど指定したIDからBase API pathが自動で作成されます。
画面下部のタブResourcesのNewを押下すると下記の画面になります。
この画面で、作成したいAPIメソッドやスクリプトを作成します。
検証では、HTTP methodをPOSTにしました。スクリプトは、POSTされたデータを指定したテーブルのレコードとして新規挿入するようにしてみました。
▼スクリプトイメージ
var req_data = request.body.dataString; var now_GR = new GlideRecord("レコードを挿入したいTable名"); now_GR.initialize(); for (var i = 0; i < data.length; i++){ var data_2 = data[i].split(","); if( data[i].indexOf("Hatena") > -1 ){ now_GR.u_test_column1 = data_2[1]; }else{ now_GR.u_test_column2 = data_2[1]; } } now_GR.insert();
Script REST APIs 検証結果
想定通り、POSTで受けとったデータの情報を基に、レコードを作成することができました!!
Workflowアクティビティ一括検索データベースビューについて
はじめに
みなさんこんにちは、三井情報株式会社です。
突然ですが、ServiceNowのWorkflowでどんなアクティビティが存在するか、指定したスクリプトが使われているアクティビティがどれかを調べるのに苦労したことはありませんか?
基本的には1つ1つアクティビティを開かないと確認できず、複数のアクティビティを一括で検索するツールも標準では用意されていません。
そこで、今回は現在PublishとなっているWorkflowに含まれるアクティビティを一覧表示するDatabase Viewを作成し、Workflowに使用されているアクティビティやそのアクティビティで設定されている値やスクリプトを検索する方法をご紹介させて頂きます。
今回利用する機能
Database View
テーブル構成
Workflowの情報は複数のテーブルで管理されており、今回利用するテーブルとテーブル同士の関係性は以下になっております。
wf_workflow_version
Workflowの特定のバージョン (公開されたバージョンまたはチェックアウトされたバージョン)を管理する
wf_activity
Workflowで使用されているアクティビティを管理する
sys_variable_value
様々なテーブルの変数(WorkflowやFlow Designerなどに設定された情報)を管理する
設定方法
Database View全体としては以下となり、View Tableを4つ使用しています。
Orderが100となっているwf_workflow_versionのView Tableは以下の設定となっています。
Orderが200となっているwf_workflow_versionのView Tableは以下の設定となっています。ここで再度wf_workflow_versionのView Tableを作成している理由は、wf_workflow_versionのレコードのうちpublish=trueのみというフィルターをかけたいのですが、View Table単体では使用できないため、同一テーブルを参照したView Tableを2つ作成してjoinしています。
wf_activityのView Tableは以下の設定となっています。
WorkflowとWorkflowで使用しているアクティビティを結びつけています。
sys_variable_valueのView Tableは以下の設定となっています。
Workflowアクティビティと変数を結びつけています。
これでDatabase Viewの作成は完了です。Database Viewを実行し、Workflow名や指定したスクリプトでフィルタリングしてWorkflowで使用しているアクティビティがヒットすれば成功です。
以下は弊社インスタンスで稟議申請の中でBoxと連携を行っているスクリプトを含んでいるアクティビティをフィルタリングした結果になります。
おわりに
今回の検証により、Database Viewを利用しWorkflowに存在するアクティビティを調査することができるようになりました。
最後まで読んでいただき、ありがとうございました。
Flow Designerによるcsvファイル自動インポートフロー
はじめに
みなさんこんにちは、三井情報株式会社です。
ServiceNowのCatalog Itemでは、申請者側に可変的な情報を入力してもらうために Multi-row variable set(以下、MRVS)を使用するケースがあります。
しかし、 MRVS は1件ずつ登録や編集する形式ですので、入力してもらう情報が何十件、何百件となると申請者側へ負担がかかってしまいます。
そこで、申請者側の負担を軽減する方法として、申請者側 はcsvファイルに申請情報を登録し、そのcsvファイルをServiceNow内でインポートする形式を考え、今回Catalog Itemに添付されたcsvファイルを自動でインポートする処理を検証しましたのでご紹介したいと思います。
本記事では、添付されたcsvファイルの内容を会社テーブルにインポートする処理を例に説明させて頂きます。
今回利用する機能
Data Sources
Table Transform Map
Scheduled Data Imports
Flow Designer
設定方法
① Data Sources
System Import Sets配下にあるData Sourcesを選択し、Newをクリックします。
Nameにcsvファイル名、Import set table nameに中間テーブル名を入力し保存します。
フォーマットとなるcsvファイルを添付します。
csvファイルをロードし、中間テーブルを作成します。
② Table Transform Map
Data Sourcesの関連リストにあるTransformsタブのNewをクリックしてください。
NameにTable Transform Mapの名前、Source tableにData Sourcesの登録時に設定した中間テーブル、Target tableにインポート先のテーブルを設定し保存します。
Mapping Assistから項目のマッピングを行います。
③ Scheduled Data Import
Scheduled Import Sets配下にあるScheduled Importsを選択し、Newをクリックします。
NameにScheduled Data Importの名前、Data Sourceに①で作成したData Sourceを設定します。
今回はFlow Designerのタイミングでのみ実行するのでActiveをFalseに設定します。
④ Flow Designer
③で作成したScheduled Data Importを実行するためのアクションを作成します。
NameとCategoryを設定します。
Inputに設定する引数を設定します。
参照先のテーブルはScheduled Data Importテーブルを設定します。
Scriptのアクションを追加します。
Input Variables にInputsで設定したScheduled Data ImportのデータのSys ID を設定します。
Scriptには以下の通り設定し保存します。
(function execute(inputs, outputs) { var exportGr = new GlideRecord('scheduled_import_set'); exportGr.addQuery('sys_id', inputs.scheduledDataImport); exportGr.query(); if (exportGr.next()) { gs.executeNow(exportGr); } })(inputs, outputs);
アクションの作成が完了したら、次はフローの作成を行います。
全体としては以下の通りですが、Action 2のCreate Catalog Taskは運用担当者が申請内容を確認する想定で追加したもので、自動インポートの処理に関わるものではありませんので省略しても問題ありません。
※本記事ではCreate Catalog Taskのアクションの作成は省略しております
Flowを作成し、TriggerにはService Catalogを設定します。
ActionからGet Catalog Variablesを選択します。
Submitted RequestにはTriggerのRequest Itemを指定します。
Template Catalog Itemに申請に使用するカタログアイテムを選択します。
次に、申請の添付ファイルの情報を取得するための処理を実装します。
ActionからLook Up Attachmentを選択します。
Source RecordにはTriggerのRequest Itemを指定します。
次に、申請の添付ファイルの情報をもとにAttachmentテーブルから情報を取得するための処理を実装します。
ActionからLook Up Attachmentを選択します。
TableにはAttachmentテーブル、ConditionにはSys IDが一つ前のActionで取得した申請の添付ファイルのSys IDと一致するように設定します。
次に、すでにSource Recordに添付されているファイルを現在の申請の添付ファイルを複製する前に削除する処理を実装します。
ActionからDelete Attachmentを選択します。
Source Recordには①で作成したData Sourceのレコード、TableにはData Sourceテーブルを設定します。
Delete All Attachments?はTrueにします。
次に、申請の添付ファイルをData Sourceのレコードに複製を行います。
ActionからCopy Attachmentを選択します。
Source Attachment Recordには二つ前のActionで取得したAttachmentテーブルでの申請の添付ファイルのレコード、Target Recordには①で作成したData Sourceのレコード、TableにはData Sourceテーブルを設定します。
最後に、Scheduled Data Importを実行するアクションを追加します。
Actionから④の最初に作成したアクションを選択します。
Scheduled Data Importには、③で作成したScheduled Data Importを選択します。
実装は以上になりますので、実際にサービスカタログから申請を行い、自動でインポートされていれば成功です。
おわりに
今回の検証により、 Catalog Item で可変的な情報を申請する方法として、MRVS以外にcsvファイルでのインポートも採用できるようになりました。
最後まで読んでいただき、ありがとうございました。
三井情報株式会社
ソリューション技術本部
クラウドソリューション部
第四技術室
甲田善寛
www.mki.co.jp
カタログアイテムからDocuSignへ遷移
はじめに
みなさんこんにちは、三井情報株式会社です。
突然ですがDocuSignという製品をご存知ですか?
DocuSignとは、世界シェアNo.1・グローバルスタンダードの電子署名サービス「DocuSign eSignature」をコア製品とする、「ビジネスの合意形成」のためのクラウドプラットフォームです。
各企業でテレワークが導入されペーパーレス化が求められている今、大活躍間違いなしの製品ですね。
三井情報でも取り扱いがあるので、ぜひ専用ページをご覧ください。
今回からDocuSign連携シリーズとして下記の3本立てでご紹介していきます。
①カタログアイテムからDocuSignへ遷移 ←今回
➁DocuSignのREST APIを使用して申請データを作成
③DocuSignでのフローの進行状況を取得
今回はServiceNowのカタログアイテムで申請を起票→DocuSign上でワークフローを回すための連携方法をご紹介します。
連携時の動き
今回ご紹介する連携時の動作は以下のとおりです。
1. ServiceNowのカタログアイテムで申請概要、承認者を指定する。
2. カタログアイテムで[送信]をクリックするとDocuSignの申請フォーム(PowerForm)へ遷移する。
3. DocuSignの申請フォーム(PowerForm)で申請内容を入力し[完了]をクリックする。
4. 後続の承認者へDocuSignから承認依頼メールが送付される。承認作業はDocuSign上で行う。
使用する機能
今回使用する機能は以下です。
図中の番号順に設定方法を解説します。
①PowerForm(DocuSign)
カタログアイテムからの遷移先フォームを作成します。
詳しい作成方法はこちらのDocuSign eSignatureユーザーガイドを参照してください。
作成する際には [受信者情報]に必ず申請者と承認者欄を作成してください。
[役割名]は必須、[名前]と[メール]はカタログアイテムから取得する場合は空白で構いません。
また、PowerFormを作成するとURLが生成されます。ServiceNow側の処理で使用するため、控えておきましょう。
➁カタログアイテム
カタログアイテムでServiceNowでの申請画面を作成します。
詳しい作成方法はServiceNowの製品ドキュメントを参照してください。
③カタログクライアントスクリプト
カタログアイテムで[送信]をクリックした際の処理を作成します。
今回は
① [onSubmit]のタイミングでHTML要素を作成
② DocuSignのPowerFormを別タブで開く
という処理にします。
画面上部での設定内容は以下のとおりです。
次に[スクリプト]欄にスクリプトを記載します。
function onSubmit() { //カタログの入力値をDocuSignへパスするためHTML要素を生成 var form = this.document.createElement('form'); this.document.body.appendChild(form); var input = this.document.createElement('input’); //PowerForm署名者情報 input = input.cloneNode(false); input.setAttribute('name', '作成者_UserName'); ※1 input.setAttribute('value', g_form.getValue('sakuseisya')); ※2 form.appendChild(input); input = input.cloneNode(false); input.setAttribute('name', '作成者_Email'); input.setAttribute('value', g_form.getValue('email')); form.appendChild(input); //PowerForm入力フォーム input = input.cloneNode(false); input.setAttribute('name', 'kenmei'); ※3 input.setAttribute('value', g_form.getValue('kenmei')); ※4 form.appendChild(input); input = input.cloneNode(false); input.setAttribute('type', 'hidden'); ※5 input.setAttribute('name', 'kyokaNo'); input.setAttribute('value', '12345'); form.appendChild(input); //リダイレクト先(PowerFormのURL) var url = ‘https://~~~~~’; //Submit form.setAttribute(‘target’, ‘newtab’); form.setAttribute('action', url); form.setAttribute('method', 'post’); form.submit(); }
スクリプトに関する補足
「PowerForm署名者情報」について
※ 1. name:受信者の役割_UserNameと、役割_Emailを指定
※ 2. value:パスする値を指定
・ 「PowerForm署名者情報」にはUserNameとEmailをPowerFormで設定した受信者の数だけ記載します。
・ また、役割名はDocuSignのテンプレート編集画面で入力させた値と一致させてください。
「PowerForm入力フォーム」について
※ 3. name:DocuSignで設定している入力フィールドのデータラベル名を指定
※ 4. value:パスする値を指定
※ 5. type,hidden:値はパスするが直後の承認では表示したくない場合に使用する(例:1番目ではなく2番目の承認者の作業タイミングで使用したい場合)。
設定は以上です。
カタログアイテムで入力した申請者や承認者、その他申請内容がonSubmitのスクリプトによりDocuSignのPowerFormにパスされることでServiceNowとDocuSignの連携が実現できました。