DX Suiteが新UIに
どうも新UIに変更されるときにAPIの仕様が変わるみたい
基本的に2024/02/02までに対応しないといけないとのこと
https://help-dxsuite.inside.ai/hc/ja/articles/24642918658713-%E6%97%A7UI-%E3%81%AF%E3%81%84%E3%81%A4%E3%81%BE%E3%81%A7%E5%88%A9%E7%94%A8%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B-
UiPathの部品に対応しているものあるの?
UiPathマーケットプレースの「AI-OCR workflow for AI inside - DX Suite」はAPIv1のため現状対応している部品はない模様
https://marketplace.uipath.com/listings/ai-ocr-workflow-for-ai-inside-dx-suite
APIv2の対応ってありますか?というコメントも放置されている状況
APIv2難民が発生
やべえ!難民でてるじゃん、救済しないと!
ということで当記事は難民救済記事となります。
井戸の掘り方を伝えます。
既存の部品をAPIv2用に改造しまっせ
(UiPathマーケットプレースに投稿するのは気が向いたらやります。)
APIv2版に改造する方法
まずはAPI仕様の確認
DX SuiteのWebページに APIv1 と APIv2 の比較表があるので確認
https://drive.google.com/file/d/1xCd0CVVhmJmB6ESpsMGFqhRPIddV6pDf/view
読み取りユニット登録
基本的に赤字のところ変えていけばいいから!
UiPathの部品だと「Reading_Pages_Add.xaml」が該当
1. ユニットID廃止
*V2では既存ユニットへの追加はできません
あいわかったってことで
型をintからStringに変更
APIv2で吐き出されるID系は形式が数値から文字列に代わってるから対応必須
今後出てくるID系すべてに同じ対応が必要
ついでに名前が↓のように変わるからやさしさで引数名も変更
in_DocumentID → in_WorkflowId
2. HTTPリクエストの修正
エンドポイント
in_URL.TrimEnd("/"c, " "c, " "c) + "/ConsoleWeb/api/v1/reading/pages/add"
↓
in_URL.TrimEnd("/"c, " "c, " "c) + "wf/api/standard/v2/workflows/" + in_WorkflowId + "/units"
ヘッダ名
X-ConsoleWeb-ApiKey → apikey
documentId → workflowId
添付ファイル
file → files
応答ヘッダの仕様も変わってるから注意!
成功時は空でエラー時だけ値が入ってるとのこと
逆に応答コンテンツは成功してる時だけ値入ってる
応答コンテンツの仕様も変わってるから受け取るとき注意!
今はout_JsonResponse.("id").ToStringみたいな感じで使ってると思うけど
out_JsonResponse.("unitId")ってな感じに変わるね
読取ユニット検索
出来上がり待ちに使うやつ
UiPathの部品だと「Reading_Units.xaml」が該当
まずはAPI仕様を確認
引数名と型をどんどん変えてこ
型は全部Stringにする必要あり
やさしさで引数名もAPIv2に合わせとこ
in_DocumentID → in_WorkflowId
in_DocsetID → in_FolderId
ほんでIF関連が数値で判定してるんでString版に変更
これを
こう
HTTPリクエスト
-
ユニットIDの指定がある場合
エンドポイント
in_URL.TrimEnd("/"c, " "c, " "c) + "/ConsoleWeb/api/v1/reading/units"
↓
in_url.TrimEnd("/"c, " "c, " "c) + "/wf/api/standard/v2/units"
ヘッダ名
X-ConsoleWeb-ApiKey → apikey
readingUnitId → unitId
-
ドキュメントIDの指定がある場合
エンドポイント
in_URL.TrimEnd("/"c, " "c, " "c) + "/ConsoleWeb/api/v1/reading/units"
↓
in_url.TrimEnd("/"c, " "c, " "c) + "/wf/api/standard/v2/units"
ヘッダ名
X-ConsoleWeb-ApiKey → apikey
documentId → workflowId
-
フォルダIDの指定がある場合
エンドポイント
in_URL.TrimEnd("/"c, " "c, " "c) + "/ConsoleWeb/api/v1/reading/units"
↓
in_url.TrimEnd("/"c, " "c, " "c) + "/wf/api/standard/v2/units"
ヘッダ名
X-ConsoleWeb-ApiKey → apikey
docsetId → folderId
-
パラメータ指定無し
警告
確認してないですがパラメータ指定無しだと新APIではエラーになるかも
そんときはコメントアウトするなりなんなりしてください
エンドポイント
in_URL.TrimEnd("/"c, " "c, " "c) + "/ConsoleWeb/api/v1/reading/units"
↓
in_url.TrimEnd("/"c, " "c, " "c) + "/wf/api/standard/v2/units"
ヘッダ名
X-ConsoleWeb-ApiKey → apikey
応答ヘッダ/
考え方は読取ユニット検索と一緒
形式が変わってるから応答結果を使うときに注意!
CSVダウンロード
まずはAPI仕様を確認
引数の型を変更
HTTPリクエスト
エンドポイント
in_URL.TrimEnd("/"c, " "c, " "c) + "/ConsoleWeb/api/v1/reading/units/" + in_UnitID.ToString + "/export"
↓
in_URL.TrimEnd("/"c, " "c, " "c) + "/wf/api/standard/v2/units/" + in_UnitID + "/csv"
ヘッダ名
X-ConsoleWeb-ApiKey → apikey
応答コンテンツ
考え方は読取ユニット検索と一緒
形式が変わってるから応答結果を使うときに注意!
まとめ
今回はこれくらいで
書きなぐっただけなのでミスがあったら指摘してください。
ファイルアップロード、待ち受け、結果Csvダウンロードの3つができれば他も全く同じ考え方で修正できるとおもいます。GLFH