「SmartDB」とDX Suiteを連携することで、手書きの書類情報を「SmartDB」で管理、ワークフローで利用することが可能です。
連携方法をご紹介します。
- プログラム開発ご経験者向けの内容となります。
- 連携するDX Suiteは、ver1.0を前提としています。
- 本連携にはAPIトークンを1つ利用します(オプション契約)
連携の処理フロー
連携方法
連携方法① - SmartDB to DX Suite
「SmartDB」のプロセスが完了した後、添付ファイルをDX Suiteに自動登録する連携サンプル
- フォームにAI-OCRで読み取るファイルを添付する部品(ファイルフォルダ部品)を配置
ファイルフォルダ部品の部品キーを設定します。 - プロセス「通知ロボット」Webhookの設定
- プロセス「通知ロボット」Webhookから呼び出される関数サンプル
ここでは「03【通知ロボット】AI OCR連携」でDX Suiteへ添付ファイルを登録する処理を記述しています。
●通知ロボットから呼び出される関数サンプル
// smartdb-node-sdk の読み込み const smartdb = require('@dreamarts/smartdb-node-sdk’); module.exports = async function (context, req) { // SmartDB SDK 初期化(パラメータは環境変数に設定) await smartdb.initialize({ url : process.env.SDB_HOST, accessToken : process.env.SDB_ACCESS_TOKEN, hmacSecretKey : process.env.SDB_HMAC256_KEY }, req, true); // SmartDB から文書データを取得 const binderId = req.body.startDoc.binderId; const recordId = req.body.startDoc.recordId; const doc = await smartdb.getDocumentValue(binderId,recordId); // 添付ファイルをローカルにダウンロード const TEMP_DIR = process.env.TEMP || process.env.TMPDIR; const files = await smartdb.downloadFileToLocal( TEMP_DIR, values.imageFile ); // AI-OCR に登録 const form = new FormData(); form.append('documentId', process.env.AIOCR_DOCUMENT_ID); for (const item of files) { form.append('file', fs.createReadStream(item.localFile)); } const unitUrl = process.env.AIOCR_HOST + '/ConsoleWeb/api/v1/reading/pages/add'; const unitRes = await got(unitUrl, { method : 'POST', body : form, headers : { 'X-ConsoleWeb-ApiKey' : process.env.AIOCR_TOKEN } }); return; }
※環境変数の値はお使いのサーバレス環境にて設定ください。
※「imageFile」はファイルフォルダ部品で設定した部品キーを指定してください。
連携方法② - DX Suite to SmartDB
タイマー実行でAI-OCRの処理結果を「SmartDB」に取り込む連携サンプル
- AI-OCRの読み取り結果を登録するバインダを作成
バインダキーを設定します。 - AI-OCRの読み取り結果を登録するフォームを作成
AI-OCRで定義したカラム名と一致する部品キーの値にAI-OCRで読み取られた値が代入されます。 - タイマー処理で実行される関数サンプル
ここではAI-OCRで読み取ったデータをバインダへ登録する処理を記述しています。
実際の連携処理では、読み込みデータからSmartDBの選択系部品へマッピングする処理やプロセスの自動起動処理などが追加されます。
●通知ロボットから呼び出される関数サンプル
// smartdb-node-sdk の読み込み const smartdb = require('@dreamarts/smartdb-node-sdk’); module.exports = async function (context, req) { // SmartDB SDK 初期化(パラメータは環境変数に設定) await smartdb.initialize({ url : process.env.SDB_HOST, accessToken : process.env.SDB_ACCESS_TOKEN, hmacSecretKey : process.env.SDB_HMAC256_KEY }, req, true); // AI-OCR のユニット一覧を取得 const documentId = process.env.AIOCR_DOCUMENT_ID; const unitUrl = process.env.AIOCR_HOST + '/ConsoleWeb/api/v1/reading/units?' + `status=16,19,21,22&documentId=${documentId}`; const unitRes = await got(unitUrl, { method : 'GET', responseType : 'json', headers : { 'X-ConsoleWeb-ApiKey’: process.env.AIOCR_TOKEN } }); const unitList = unitRes.body.readingUnits; for (const unit of unitList) { // 各ユニットの読み取りデータを取得 const partsUrl = process.env.AIOCR_HOST + '/ConsoleWeb/api/v1/reading/parts?’ + ‘readingUnitId='+unit.id; const partsRes = await got(partsUrl, { method : 'GET', responseType : 'json', headers : {'X-ConsoleWeb-ApiKey’: process.env.AIOCR_TOKEN } }); // 読み取りデータを SmartDB の部品にマッピング let doc = {}; partsRes.body.readingParts.forEach((item) => { doc[item.columnName] = item.result; }); ); // SmartDB 文書を登録 const createRes = await smartdb.createDocument( 'AIOCRreadUnit',doc } return; }
※環境変数の値はお使いのサーバレス環境にて設定ください。
※「AIOCRreadUnit」はバインダで定義したバインダキーを指定してください。
連携プログラムの構成
本サンプルはAzure Functionを利用しています。
そのほかサーバレス環境にて同様に連携が可能です。