私事ながら、「仕事でFileMaker開発」からは離れることになりました。端的にいうと転職することになりました。
今後は趣味全開でFileMakerを触っていきたいと思います
A3RTというサービスを使ってみようと思って、チャットAppを試作しました
まずはTalkAPIを使って、会話ができるように作ってみた画面が以下
ポータルを使うことで1時間ほどで作成できました。(次第に作成時間が短くなってるなあ成長してるなあと自画自賛)
このA3RTというのは ANALYTICS & ARTIFICIAL INTELLIGENCE API VIA RECRUIT TECHNOLOGIES のことで、リクルートが開発・提供しているサービスになります
提供されているサービスの組み合わせでいろいろとこのチャットAppを拡張することもできそうです。FileMakerのカスタムAppのインターフェイスにこういうチャットサービスを導入しても面白いことができそうな気がします
構成は
・チャットウインドウのテーブル
・会話を格納するテーブル
をChatKeyフィールドでリレーションして実現しています
途中に
スクリプト一時停止/続行 [ 間隔(秒): 1 ]
を入れているのは、このスクリプトだと返答が早く、返答が食い気味で返ってきてしまうため、ちょっと間を作っています
1.メッセージを送信
2.メッセージ内容を記録
3.TalkAPIを叩いて返答を得る
4.返答を記録
という会話の流れなので、2のメッセージの記録後に別のAPI,「Named Entity API」を叩きに行って固有表現を得て、キーワードに応じた対応を行う。なんてこともできそうな気がします。
# ------------------------------
# A3RT TalkAPIにメッセージをリクエストする
# ------------------------------
ウインドウの固定
変数を設定 [ $$ChatKey ; 値: A3RT_TalkChat::ChatKey ]
# APIキー
変数を設定 [ $API_Key ; 値: "***************************" ]
# ------------------------------
# 送信するメッセージ
変数を設定 [ $query ; 値: A3RT_TalkChat::Message ]
# ------------------------------
# メッセージレコードを保存する
レイアウト切り替え [ 「A3RT_TalkHistory」 (A3RT_TalkHistory) ; アニメーション: なし ]
新規レコード/検索条件
フィールド設定 [ A3RT_TalkHistory::Query ; $query ]
フィールド設定 [ A3RT_TalkHistory::ChatKey ; $$ChatKey ]
レイアウト切り替え [ 元のレイアウト ; アニメーション: なし ]
# ------------------------------
スクリプト一時停止/続行 [ 間隔(秒): 1 ]
# ------------------------------
# URI
変数を設定 [ $URL ; 値: "https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk" ]
# ------------------------------
URL から挿入 [ SSL 証明書の検証 ; 選択 ; ダイアログあり: オフ ; $Response ; $URL ; cURL オプション: "-X POST -F \"apikey=" & $API_Key & "\" -F \"query=" & $Query & "\"" ]
# ------------------------------
ウインドウの固定
レイアウト切り替え [ 「A3RT_TalkHistory」 (A3RT_TalkHistory) ; アニメーション: なし ]
新規レコード/検索条件
フィールド設定 [ A3RT_TalkHistory::StatusCode ; JSONGetElement ( $Response ; "status" ) ]
フィールド設定 [ A3RT_TalkHistory::Perplexity ; JSONGetElement ( $Response ; "results[].perplexity" ) ]
フィールド設定 [ A3RT_TalkHistory::Reply ; JSONGetElement ( $Response ; "results[].reply" ) ]
フィールド設定 [ A3RT_TalkHistory::ChatKey ; $$ChatKey ]
レイアウト切り替え [ 元のレイアウト ; アニメーション: なし ]
# ------------------------------
フィールド設定 [ A3RT_TalkChat::Message ; "" ]