FileMaker//ポータルを使うとチャットもできる


私事ながら、「仕事で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 ; "" ]