これまでに完成した部分のテストを行います。
テストするために必要なエージェントなどの機能を追加します。テスト後も使用する機能となるので、作業をパスせず作成してください。
エージェントの作成
作成した関数をコールするエージェントを作成します。
名前 | (ReadNameCard) |
別名 | ReadNameCard |
トリガー | イベント - エージェントリストの選択 |
対象 | なし |
Option Declare Use "lsReadNameCard" Private xns As NotesSession Private xndb As NotesDatabase Sub Initialize Dim nuiw As New NotesUIWorkspace Dim nuid As NotesUIDocument Dim nd As NotesDocument Dim sID As String Set xns = New NotesSession Set xndb = xns.CurrentDatabase 'UI 文書を保存(リッチテキストを保存) Set nuid = nuiw.CurrentDocument Call nuid.Save() 'ID 取得 Set nd = nuid.Document sID = nd.Noteid 'UI 文書を閉じる Set nd = Nothing '一旦文書開放 Call nuid.Close(True) '保存した文書を再表示 Set nd = xndb.GetDocumentByID(sID) 'AI で名刺を読み込み Call ReadNameCard(nd) '名刺管理管理フィールドセット nd.ExchangeDate = Today nd.Status = "3" '3 = AI 問い合わせ完了 '文書の保存と画面の表示 Call nd.Save(True, False) Set nuid = nuiw.Editdocument(True, nd) End Sub |
このエージェントでは、入力中の文書に貼り付けられた画像(リッチテキスト)をライブラリ内でバックエンド文書として確実に取得するため、UI からいったん保存して、UI を閉じたうえで、バックエンド文書を再取得しています。
名刺読込ボタン作成
名刺管理フォームを開き、[名刺読込]ボタンを追加します。
ボタン名 | Click | 補足 |
名刺読込 | @Command([ToolsRunMacro];"(ReadNameCard)") | 編集時と Status が 0 の時のみ表示 --- !(Status="0") |
JSON 確認フィールドの追加
名刺管理フォームの管理者用セクションに JSON 確認用フィールドを作成します。
項目 | フィールド名 | 種類 | 補足 | |
認識した 名刺情報 |
JSON_NameCard | リッチテキスト | 編集可能 | |
レスポンス | JSON_Responce | |||
リクエスト | JSON_Request |
ライブラリの調整
テスト実行のため送信する JSON を作成する部分だけ実行するように調整します。スクリプトライブラリを開き、現時点で完成していない部分をコメントアウトします。
Public Function ReadNameCard(vnd As NotesDocument) As Boolean Dim jnavRequest As NotesJSONNavigator Dim jnavResponce As NotesJSONNavigator Dim jnavNameCard As NotesJSONNavigator '1. API リクエスト時に送信する JSON を作成 Set jnavRequest = xMakeRequest(vnd) Call xSetRT(vnd, "JSON_Request", jnavRequest.Stringify) '2. API をコールし、結果の JSON を取得 'Set jnavResponce = xCallWebAPI(jnavRequest) 'Call xSetRT(vnd, "JSON_Responce", jnavResponce.Stringify) '3. 結果の JSON 内から名刺情報部分だけの JSON を取得 'Set jnavNameCard = xGetNameCard(jnavResponce) 'Call xSetRT(vnd, "JSON_NameCard", jnavNameCard.Stringify) '4. 名刺情報を文書に保存 'Call xSaveNameCard(jnavNameCard , vnd) End Function |
そして、作成した JSON をリッチテキストに出力する関数 xSetRT を有効化します。この関数はまだ作成していなかったので、ライブラリに追加します。
Private Function xSetRT(vnd As NotesDocument, ByVal vsFld As String, ByVal vsVal As String) Dim nrti As NotesRichTextItem Call vnd.RemoveItem(vsFld) Set nrti = vnd.CreateRichTextItem(vsFld) Call nrti.AppendText(vsVal) End Function |
動作検証
ノーツから文書を作成し、名刺の画像を添付し、[名刺読込] ボタンをクリックします。
クリック後、JSON が記録されていたら成功です。
画像データ(Base64 の文字列)が生成されていること、添付ファイルでもインラインイメージでも出力されていることを確認しましょう。
なお、確認が終われば xSetRT 関数のコールはコメントアウトしておきましょう。管理者用セクションの開閉が遅くなりますので...
◇ 『文書は保存されていません。』エラー
[名刺読込] ボタンをクリックすると、いきなり下記のエラーが表示されることがあります。エージェントのコードでは、Save メソッドで保存しているので、意味が分かりにくいですよね。
このエラーの原因はエージェントの設定です。対象が『すべての選択文書』などになっていると思います。これを『なし』にすると改善します。
次回の予定
今回でリクエストの作成部分は終了です。次回からは WebAPI をコールする部分を作成します。
前回 | 作ってみよう | 次回 |
0 件のコメント:
コメントを投稿