LoginSignup
5

More than 5 years have passed since last update.

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

Posted at

私事ながら、「仕事でFileMaker開発」からは離れることになりました。端的にいうと転職することになりました。
今後は趣味全開でFileMakerを触っていきたいと思います

A3RTというサービスを使ってみようと思って、チャットAppを試作しました

まずはTalkAPIを使って、会話ができるように作ってみた画面が以下
IMG_4016.png

ポータルを使うことで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 ; "" ] 

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5