はじめに
前回こちらで紹介したLotusScriptですが、NomadMobileでは動作しましたが、NomadWebで実行したところエラーが発生しました。
コイツ…動くぞ!Nomad Mobileでも動くGPT-4oを使ったテキストファイル、画像問合せ(前編) – Notes開発者のためのXPagesデザインレシピ (enjoyxpages.sakura.ne.jp)
【発生したエラー】
【実行環境バージョン】
Domino :V14.0FP1(Linux版)
NomadWeb :1.0.11.18-14
NomadWebで発生したエラーはNomadWebでデバッグしよう!
NomadWebはNotes Basic版のような実行環境だけでなく、デバッグ環境も動くようになりました。
左上のツールメニューから「デバッグのLotusScript」(謎の日本語なのはご愛敬)を選択し、実行ボタンをクリックします。
※NomadWeb上のDominoDesignerはブラウザのロケールを「英語」にしないと使えませんが(右クリックメニューが表示されない)、LotusScriptのデバッグは「日本語」ロケールのまま利用することができます。
【LotusScriptのデバッグ】
※NomadWebでのDominoDesignerについて詳しく知りたい方は、HCLAmbassadorの中野さんが公開している下記資料を参照して下さい。
HCL Nomad Designer
https://speakerdeck.com/harunakano/hcl-nomad-designer-1-dot-0-11
実行結果を見るとNotesHTTPRequestクラスのGetResponseHeaders関数で受け取った値から、HTTPレスポンスコードを抽出し、数字に変換する部分でエラーが起きているようです。
【デバッグモード:NomadWeb】
【LotusScript-該当ソース】
'エラーレスポンスチェック
vResHeader = http.GetResponseHeaders()
vResCode = Split(vResHeader(0)," ")
iResCode = Cint(vResCode(1))
If iResCode <> 200 Then
Msgbox sContent , 16 , "Error : " & Cstr(iResCode)
Exit Sub
End If
NotesクライアントとNomadWebのレスポンスを比較してみる
NotesクライアントとNomadMobileでは正常に動作しますので、Notesクライアントのデバッグモード実行結果と比較してみます。
【デバッグモード:Notesクライアント】
比較してみると、GetResponseHeaders関数で返ってくる値が全然違うようです。返ってくる配列の一つ目の値を比較します。
Notesクライアントの場合:“HTTP/1.1 200 OK”
NomadWebの場合:“content-type, application/json”
NomadWebの場合はHTTPレスポンスと言うより、POSTする際のHTTPヘッダーが入っているように見えます。
現状の結論
今日(2024/06/13)時点の回避策としては、GetResponseHeaders関数からHTTPレスポンスコードを取得する部分をコメント化するとNomadWebでもChatGPTとの連携を動かすことができます。
とはいえ、HTTPレスポンスコードは、HTTP通信の基本中の基本ですので、この部分の動作を停止することは良い実装とは言えないと思います。
HCLの開発順序としては、NomadMobile(iOS)→NomadMobile(Android)→NomadWebの順で実装を行っているように見えるので、来週(6/16の週)に出ると言われている最新版ではNomadMobileと動きが統一され、動くようになっているかもしれません。